w3pk 0.10.3 → 0.10.5

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.
Files changed (41) hide show
  1. package/README.md +1 -57
  2. package/dist/chainlist/index.d.mts +96 -0
  3. package/dist/chainlist/index.d.ts +96 -0
  4. package/dist/index.d.mts +121 -134
  5. package/dist/index.d.ts +121 -134
  6. package/dist/index.js +33 -60
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +33 -60
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/zk/index.js +3 -3
  11. package/dist/zk/index.js.map +1 -1
  12. package/dist/zk/index.mjs +4 -4
  13. package/dist/zk/index.mjs.map +1 -1
  14. package/dist/zk/utils.js +3 -3
  15. package/dist/zk/utils.js.map +1 -1
  16. package/dist/zk/utils.mjs +3 -3
  17. package/dist/zk/utils.mjs.map +1 -1
  18. package/docs/API_REFERENCE.md +122 -237
  19. package/docs/BROWSER_COMPATIBILITY.md +26 -2
  20. package/docs/INTEGRATION_GUIDELINES.md +37 -306
  21. package/docs/PORTABILITY.md +66 -0
  22. package/docs/RECOVERY.md +58 -48
  23. package/docs/SECURITY.md +0 -136
  24. package/docs/notes/old-computer.md +99 -0
  25. package/package.json +2 -12
  26. package/dist/inspect/browser.d.mts +0 -106
  27. package/dist/inspect/browser.d.ts +0 -106
  28. package/dist/inspect/browser.js +0 -194
  29. package/dist/inspect/browser.js.map +0 -1
  30. package/dist/inspect/browser.mjs +0 -173
  31. package/dist/inspect/browser.mjs.map +0 -1
  32. package/dist/inspect/index.d.mts +0 -1
  33. package/dist/inspect/index.d.ts +0 -1
  34. package/dist/inspect/index.js +0 -196
  35. package/dist/inspect/index.js.map +0 -1
  36. package/dist/inspect/index.mjs +0 -173
  37. package/dist/inspect/index.mjs.map +0 -1
  38. package/dist/inspect/node.js +0 -287
  39. package/dist/inspect/node.js.map +0 -1
  40. package/dist/inspect/node.mjs +0 -251
  41. package/dist/inspect/node.mjs.map +0 -1
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- "use strict";var Ah=Object.create;var cr=Object.defineProperty;var xh=Object.getOwnPropertyDescriptor;var vh=Object.getOwnPropertyNames;var kh=Object.getPrototypeOf,Eh=Object.prototype.hasOwnProperty;var Ch=(r,e,t)=>e in r?cr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var m=(r,e)=>()=>(r&&(e=r(r=0)),e);var E=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),x=(r,e)=>{for(var t in e)cr(r,t,{get:e[t],enumerable:!0})},ha=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of vh(e))!Eh.call(r,s)&&s!==t&&cr(r,s,{get:()=>e[s],enumerable:!(n=xh(e,s))||n.enumerable});return r};var W=(r,e,t)=>(t=r!=null?Ah(kh(r)):{},ha(e||!r||!r.__esModule?cr(t,"default",{value:r,enumerable:!0}):t,r)),Ph=r=>ha(cr({},"__esModule",{value:!0}),r);var f=(r,e,t)=>Ch(r,typeof e!="symbol"?e+"":e,t);var K,O,bt,y,M,C,an,St,At,j=m(()=>{"use strict";K=class extends Error{constructor(t,n,s){super(t);this.code=n;this.originalError=s;this.name="Web3PasskeyError"}},O=class extends K{constructor(e,t){super(e,"AUTHENTICATION_ERROR",t),this.name="AuthenticationError"}},bt=class extends K{constructor(e,t){super(e,"REGISTRATION_ERROR",t),this.name="RegistrationError"}},y=class extends K{constructor(e,t){super(e,"WALLET_ERROR",t),this.name="WalletError"}},M=class extends K{constructor(e,t){super(e,"CRYPTO_ERROR",t),this.name="CryptoError"}},C=class extends K{constructor(e,t){super(e,"STORAGE_ERROR",t),this.name="StorageError"}},an=class extends K{constructor(t,n,s){super(t,"API_ERROR",s);this.statusCode=n;this.name="ApiError"}},St=class extends K{constructor(t){super("Passkey authenticated but this device has no data for it. Sync this device or restore from a backup.","SYNC_REQUIRED");this.credentialId=t;this.name="SyncRequiredError"}},At=class extends K{constructor(t,n){super("Passkey authenticated but no wallet was found on this device. Restore it from a backup.","WALLET_MISSING");this.credentialId=t;this.ethereumAddress=n;this.name="WalletMissingError"}}});var Hs={};x(Hs,{arrayBufferToBase64Url:()=>he,base64ToArrayBuffer:()=>zs,base64UrlDecode:()=>$s,base64UrlToArrayBuffer:()=>N,safeAtob:()=>Ze,safeBtoa:()=>Ws});function N(r){try{let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4;e+="=".repeat(t);let n=atob(e),s=new Uint8Array(n.length);for(let i=0;i<n.length;i++)s[i]=n.charCodeAt(i);return s.buffer}catch(e){throw new Error(`Failed to decode base64url string: ${e instanceof Error?e.message:"Invalid format"}`)}}function he(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function zs(r){try{let e=atob(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t.buffer}catch(e){throw new Error(`Failed to decode base64 string: ${e instanceof Error?e.message:"Invalid format"}`)}}function Ze(r){try{let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4;return e+="=".repeat(t),atob(e)}catch(e){throw new Error(`Failed to decode base64 string: ${e instanceof Error?e.message:"Invalid format"}`)}}function Ws(r){try{let e=new TextEncoder().encode(r),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}catch(e){throw new Error(`Failed to encode string: ${e instanceof Error?e.message:"Invalid input"}`)}}function $s(r){return N(r)}var ve=m(()=>{"use strict"});var Ne={};x(Ne,{PRF_INPUT:()=>lr,decryptData:()=>te,deriveEncryptionKey:()=>Bh,deriveEncryptionKeyFromWebAuthn:()=>fe,derivePrfSessionKey:()=>xt,encryptData:()=>oe,exportSessionKey:()=>qs,generateChallenge:()=>Ue,hashCredentialId:()=>vt,hashPublicKey:()=>Gs,importSessionKey:()=>Vs});async function xt(r,e=!1){try{let t=(r instanceof ArrayBuffer,r.byteLength);if(t!==32)throw new Error(`PRF output must be 32 bytes, got ${t}`);let n=await crypto.subtle.importKey("raw",r,"HKDF",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:new Uint8Array(32),info:Ih},n,{name:"AES-GCM",length:256},e,["encrypt","decrypt"])}catch(t){throw new M("Failed to derive session key from PRF output",t)}}async function qs(r){try{return he(await crypto.subtle.exportKey("raw",r))}catch(e){throw new M("Failed to export session key",e)}}async function Vs(r){try{return await crypto.subtle.importKey("raw",N(r),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(e){throw new M("Failed to import session key",e)}}async function fe(r,e){try{let t=e?`w3pk-v4:${r}:${e}`:`w3pk-v4:${r}`,n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),s=await crypto.subtle.importKey("raw",n,{name:"PBKDF2"},!1,["deriveKey"]),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode("w3pk-salt-v4"));return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(i),iterations:21e4,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new M("Failed to derive encryption key from WebAuthn",t)}}async function Bh(r,e){try{let t=e?`w3pk-v2:${r}:${e}`:`w3pk-v2:${r}`,n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),s=await crypto.subtle.importKey("raw",n,{name:"PBKDF2"},!1,["deriveKey"]),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode("w3pk-salt-v2"));return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(i),iterations:21e4,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new M("Failed to derive encryption key",t)}}function Ue(){let r=new Uint8Array(32);return crypto.getRandomValues(r),he(r)}async function oe(r,e){try{let t=crypto.getRandomValues(new Uint8Array(12)),n=new TextEncoder().encode(r),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:t},e,n),i=new Uint8Array(t.length+s.byteLength);i.set(t),i.set(new Uint8Array(s),t.length);let o="";for(let a=0;a<i.length;a++)o+=String.fromCharCode(i[a]);return btoa(o)}catch(t){throw new M("Failed to encrypt data",t)}}async function te(r,e){try{if(!r||r.length<16)throw new Error("Invalid encrypted data: too small");let t=Ze(r),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);if(n.length<12)throw new Error("Invalid encrypted data: missing IV");let s=n.slice(0,12),i=n.slice(12);if(i.length===0)throw new Error("Invalid encrypted data: no content");let o=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},e,i);return new TextDecoder().decode(o)}catch(t){throw new M(`Data decryption failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}async function vt(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`w3pk-cred-id:${r}`));return he(e)}catch(e){throw new M("Failed to hash credential ID",e)}}async function Gs(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return he(e)}catch(e){throw new M("Failed to hash public key",e)}}var lr,Ih,H=m(()=>{"use strict";j();ve();lr=new TextEncoder().encode("w3pk-prf-input-v1"),Ih=new TextEncoder().encode("w3pk-prf-session-key-v1")});var hn={};x(hn,{CredentialStorage:()=>R});async function ma(r){let e=new TextEncoder().encode(`w3pk-metadata-v1:${r}`),t=await crypto.subtle.digest("SHA-256",e),n=await crypto.subtle.importKey("raw",t,{name:"PBKDF2"},!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:"PBKDF2",salt:new TextEncoder().encode("w3pk-metadata-salt-v1"),iterations:1e5,hash:"SHA-256"},n,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}var un,dn,R,Le=m(()=>{"use strict";j();H();un="w3pk_credential_",dn="w3pk_credential_index";R=class{constructor(e){if(e)this.storage=e;else if(typeof window<"u"&&window.localStorage)this.storage=window.localStorage;else throw new C("localStorage is not available")}async saveCredential(e){try{let t=await ma(e.id),n=await vt(e.id),s={id:n,encryptedUsername:await oe(e.username,t),encryptedAddress:await oe(e.ethereumAddress,t),publicKey:e.publicKey,publicKeyFingerprint:await Gs(e.publicKey),createdAt:e.createdAt,lastUsed:e.lastUsed},i=`${un}${n}`;this.storage.setItem(i,JSON.stringify(s)),await this.addToIndex(e.id)}catch(t){throw new C("Failed to save credential",t)}}async getCredentialById(e){try{let t=await vt(e),n=`${un}${t}`,s=this.storage.getItem(n);if(!s)return null;let i=JSON.parse(s),o=await ma(e);return{id:e,publicKey:i.publicKey,username:await te(i.encryptedUsername,o),ethereumAddress:await te(i.encryptedAddress,o),createdAt:i.createdAt,lastUsed:i.lastUsed}}catch(t){throw new C("Failed to retrieve credential",t)}}async getCredentialByUsername(e){try{return(await this.getAllCredentials()).find(n=>n.username===e)||null}catch(t){throw new C("Failed to retrieve credential",t)}}async getCredentialByAddress(e){try{return(await this.getAllCredentials()).find(n=>n.ethereumAddress.toLowerCase()===e.toLowerCase())||null}catch(t){throw new C("Failed to retrieve credential",t)}}async getAllCredentials(){try{let e=await this.getIndex();return(await Promise.all(e.map(async n=>await this.getCredentialById(n)))).filter(n=>n!==null)}catch(e){throw new C("Failed to retrieve credentials",e)}}async userExists(e){return await this.getCredentialByUsername(e)!==null}async updateLastUsed(e){try{let t=await this.getCredentialById(e);t&&(t.lastUsed=new Date().toISOString(),await this.saveCredential(t))}catch(t){throw new C("Failed to update timestamp",t)}}async updateSignatureCounter(e,t){try{let n=await this.getCredentialById(e);n&&(n.signCount=t,n.lastUsed=new Date().toISOString(),await this.saveCredential(n))}catch(n){throw new C("Failed to update signature counter",n)}}async updateCredentialAddress(e,t){try{let n=await this.getCredentialById(e);n&&(n.ethereumAddress=t,n.lastUsed=new Date().toISOString(),await this.saveCredential(n))}catch(n){throw new C("Failed to update credential address",n)}}async deleteCredential(e){try{let t=await vt(e),n=`${un}${t}`;this.storage.removeItem(n),await this.removeFromIndex(e)}catch(t){throw new C("Failed to delete credential",t)}}async clearAll(){try{let e=await this.getIndex();(await Promise.all(e.map(async n=>await vt(n)))).forEach(n=>{let s=`${un}${n}`;this.storage.removeItem(s)}),this.storage.removeItem(dn)}catch(e){throw new C("Failed to clear credentials",e)}}async getIndex(){try{let e=this.storage.getItem(dn);return e?JSON.parse(e):[]}catch{return[]}}async addToIndex(e){let t=await this.getIndex();t.includes(e)||(t.push(e),this.storage.setItem(dn,JSON.stringify(t)))}async removeFromIndex(e){let n=(await this.getIndex()).filter(s=>s!==e);this.storage.setItem(dn,JSON.stringify(n))}}});var kt={};x(kt,{createWalletFromMnemonic:()=>Ys,deriveWalletFromMnemonic:()=>hr,generateBIP39Wallet:()=>dr});function dr(){try{let r=ur.ethers.Wallet.createRandom().mnemonic;if(!r)throw new Error("Failed to generate mnemonic");let e=r.phrase;return{address:ur.ethers.HDNodeWallet.fromPhrase(e,void 0,"m/44'/60'/0'/0/0").address,mnemonic:e}}catch(r){throw new y("Wallet generation failed",r)}}function Ys(r){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");return ur.ethers.HDNodeWallet.fromPhrase(r.trim(),void 0,"m/44'/60'/0'/0/0")}catch(e){throw new y(`Wallet creation failed: ${e instanceof Error?e.message:"Invalid mnemonic"}`,e)}}function hr(r,e=0){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");if(e<0||!Number.isInteger(e))throw new Error("Index must be a non-negative integer");let t=`m/44'/60'/0'/0/${e}`,n=ur.ethers.HDNodeWallet.fromPhrase(r.trim(),void 0,t);return{address:n.address,privateKey:n.privateKey}}catch(t){throw new y(`HD wallet derivation failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}var ur,Ie=m(()=>{"use strict";ur=require("ethers");j()});var yn={};x(yn,{DEFAULT_MODE:()=>pe,DEFAULT_TAG:()=>J,deriveAddressFromP256PublicKey:()=>js,deriveIndexFromOriginModeAndTag:()=>gn,getCurrentOrigin:()=>ge,getOriginSpecificAddress:()=>me,normalizeOrigin:()=>fr});function fr(r){try{let e=new URL(r),t=`${e.protocol}//${e.hostname.toLowerCase()}`,n=e.port;return n&&!(e.protocol==="https:"&&n==="443"||e.protocol==="http:"&&n==="80")&&(t+=`:${n}`),t}catch(e){throw new y(`Invalid origin URL: ${r}`,e)}}async function gn(r,e=pe,t=J){try{let s=`${fr(r)}:${e}:${t.toUpperCase()}`,o=new TextEncoder().encode(s),a=await crypto.subtle.digest("SHA-256",o);return new DataView(a).getUint32(0,!1)%Nh}catch(n){throw new y(`Failed to derive index from origin "${r}", mode "${e}", and tag "${t}"`,n)}}async function me(r,e,t,n){try{let s=t||pe,i=(n||J).toUpperCase(),o=fr(e),a=await gn(o,s,i),{address:c,privateKey:l}=hr(r,a),u={address:c,index:a,origin:o,mode:s,tag:i};return s==="YOLO"&&(u.privateKey=l),u}catch(s){throw new y(`Failed to derive origin-specific address for "${e}" with mode "${t||pe}" and tag "${n||J}"`,s)}}function ge(){if(typeof window>"u"||!window.location)throw new y("getCurrentOrigin() only works in browser environments");return window.location.origin}async function js(r){try{let e=N(r),t=await crypto.subtle.importKey("spki",e,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),n=await crypto.subtle.exportKey("jwk",t);if(!n.x||!n.y)throw new Error("Invalid P-256 public key: missing x or y coordinates");let s=N(n.x),i=N(n.y),o=new Uint8Array(64);return o.set(new Uint8Array(s),0),o.set(new Uint8Array(i),32),"0x"+(0,wa.keccak256)(o).slice(-40)}catch(e){throw new y("Failed to derive address from P-256 public key",e)}}var wa,pe,J,Nh,Et=m(()=>{"use strict";Ie();j();wa=require("ethers");ve();pe="STANDARD",J="MAIN",Nh=2147483647});var Zs={};x(Zs,{encodeEIP7702AuthorizationMessage:()=>yr,hashEIP7702AuthorizationMessage:()=>wr,verifyEIP7702Authorization:()=>kn});function yr(r,e,t){let n=[r===0n?"0x":(0,re.toBeHex)(r),e.toLowerCase(),t===0n?"0x":(0,re.toBeHex)(t)],s=(0,re.encodeRlp)(n);return(0,re.concat)(["0x05",s])}function wr(r,e,t){let n=yr(r,e,t);return(0,re.keccak256)(n)}function kn(r,e,t,n,s){try{let i=wr(r,e,t),o;return typeof n=="string"?o=re.Signature.from(n):o=n,(0,re.recoverAddress)(i,o).toLowerCase()===s.toLowerCase()}catch{return!1}}var re,En=m(()=>{"use strict";re=require("ethers")});var Ba={};x(Ba,{detectWalletProvider:()=>In,getDefaultProvider:()=>Pn,requestExternalWalletAuthorization:()=>Cn,supportsEIP7702Authorization:()=>Bn});async function Cn(r,e){if(!r)throw new Error("No external wallet provider found. Please install MetaMask or similar wallet.");let t=BigInt(e.chainId||1),n=e.nonce||0n,s=e.accountIndex||0,i=await r.request({method:"eth_requestAccounts"});if(!i||i.length===0)throw new Error("No accounts found in external wallet");if(s>=i.length)throw new Error(`Account index ${s} out of range. Wallet has ${i.length} accounts.`);let o=i[s],{hashEIP7702AuthorizationMessage:a,verifyEIP7702Authorization:c}=await Promise.resolve().then(()=>(En(),Zs)),{Signature:l}=await import("ethers"),u=a(t,e.delegateToAddress,n),d;try{d=await r.request({method:"eth_sign",params:[o,u]})}catch(w){try{d=await r.request({method:"personal_sign",params:[u,o]})}catch(b){throw new Error(`Failed to request signature from wallet. eth_sign error: ${w.message}, personal_sign error: ${b.message}`)}}let h=l.from(d),p={chainId:t,address:e.delegateToAddress.toLowerCase(),nonce:n,yParity:h.yParity,r:h.r,s:h.s};if(!c(t,e.delegateToAddress,n,p,o))throw new Error(`Signature verification failed. Expected signer: ${o}, but signature does not match. This may indicate a wallet implementation issue.`);return p}function Pn(){if(typeof window>"u")return null;let r=window;return r.ethereum?r.ethereum:r.web3?.currentProvider?r.web3.currentProvider:null}function In(r){let e=r;return e.isMetaMask?"MetaMask":e.isRabby?"Rabby":e.isCoinbaseWallet?"Coinbase Wallet":e.isBraveWallet?"Brave Wallet":e.isTokenPocket?"TokenPocket":e.isTrust?"Trust Wallet":"Unknown Wallet"}async function Bn(r){try{let e=await r.request({method:"eth_accounts"});return Array.isArray(e)}catch{return!1}}var ei=m(()=>{"use strict"});var Da={};x(Da,{BackupStorage:()=>et});var Ra,et,Tn=m(()=>{"use strict";Ra="w3pk_backups",et=class{constructor(e){this.customStorage=e}get storage(){return this.customStorage?this.customStorage:typeof window<"u"&&window.localStorage?window.localStorage:null}async init(){}async storeBackupMetadata(e){let t=this.readAll().filter(n=>n.id!==e.id);t.push(e),this.writeAll(t)}async getBackupsByAddress(e){return this.readAll().filter(t=>t.ethereumAddress===e)}async getBackupById(e){return this.readAll().find(t=>t.id===e)??null}async deleteBackup(e){this.writeAll(this.readAll().filter(t=>t.id!==e))}async getBackupCountByMethod(e){return this.readAll().filter(t=>t.method===e).length}readAll(){let e=this.storage?.getItem(Ra);return e?JSON.parse(e):[]}writeAll(e){this.storage?.setItem(Ra,JSON.stringify(e))}}});var ri={};x(ri,{decryptWithPassword:()=>Sr,deriveAddressChecksum:()=>ne,deriveKeyFromPassword:()=>Rn,encryptWithPassword:()=>tt,getDeviceFingerprint:()=>ke,validatePasswordStrength:()=>Fa});async function Rn(r,e,t=31e4){let s=new TextEncoder().encode(r),i=await crypto.subtle.importKey("raw",s,"PBKDF2",!1,["deriveBits","deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:e,iterations:t,hash:"SHA-256"},i,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function tt(r,e,t){let s=await Rn(e,t,31e4),o=new TextEncoder().encode(r),a=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:a},s,o);return{encrypted:br(c),iv:br(a),salt:br(t),iterations:31e4}}async function Sr(r,e,t,n,s=31e4){let i=ti(t),o=await Rn(e,i,s),a=ti(n),c=ti(r),l=await crypto.subtle.decrypt({name:"AES-GCM",iv:a},o,c);return new TextDecoder().decode(l)}async function ke(){let e=[navigator.userAgent,navigator.language,new Date().getTimezoneOffset().toString(),screen.width+"x"+screen.height,screen.colorDepth.toString()].join("|"),n=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",n);return br(s)}async function ne(r){let t=new TextEncoder().encode(r.toLowerCase()),n=await crypto.subtle.digest("SHA-256",t);return br(n).substring(0,16)}function Fa(r){let e=[],t=0;return r.length<12?e.push("Password must be at least 12 characters"):t+=25,/[A-Z]/.test(r)?t+=15:e.push("Add at least one uppercase letter"),/[a-z]/.test(r)?t+=15:e.push("Add at least one lowercase letter"),/[0-9]/.test(r)?t+=15:e.push("Add at least one number"),/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(r)?t+=15:e.push("Add at least one special character"),r.length>=16&&(t+=10),r.length>=20&&(t+=5),["password","12345678","qwerty","abc123","password123","admin","letmein"].some(s=>r.toLowerCase().includes(s))&&(e.push("Password is too common"),t=Math.min(t,25)),{valid:t>=50&&e.length===0,score:Math.min(t,100),feedback:e}}function br(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let n=0;n<e.byteLength;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function ti(r){let e=Ze(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}var _e=m(()=>{"use strict";ve()});var Ua=E((Cy,Ma)=>{"use strict";Ma.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Ke=E(rt=>{"use strict";var ni,$h=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];rt.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};rt.getSymbolTotalCodewords=function(e){return $h[e]};rt.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};rt.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ni=e};rt.isKanjiModeEnabled=function(){return typeof ni<"u"};rt.toSJIS=function(e){return ni(e)}});var Dn=E(ae=>{"use strict";ae.L={bit:1};ae.M={bit:0};ae.Q={bit:3};ae.H={bit:2};function Hh(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return ae.L;case"m":case"medium":return ae.M;case"q":case"quartile":return ae.Q;case"h":case"high":return ae.H;default:throw new Error("Unknown EC Level: "+r)}}ae.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};ae.from=function(e,t){if(ae.isValid(e))return e;try{return Hh(e)}catch{return t}}});var _a=E((By,La)=>{"use strict";function Na(){this.buffer=[],this.length=0}Na.prototype={get:function(r){let e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(let t=0;t<e;t++)this.putBit((r>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};La.exports=Na});var Oa=E((Ty,Ka)=>{"use strict";function Ar(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}Ar.prototype.set=function(r,e,t,n){let s=r*this.size+e;this.data[s]=t,n&&(this.reservedBit[s]=!0)};Ar.prototype.get=function(r,e){return this.data[r*this.size+e]};Ar.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};Ar.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};Ka.exports=Ar});var za=E(Fn=>{"use strict";var qh=Ke().getSymbolSize;Fn.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,n=qh(e),s=n===145?26:Math.ceil((n-13)/(2*t-2))*2,i=[n-7];for(let o=1;o<t-1;o++)i[o]=i[o-1]-s;return i.push(6),i.reverse()};Fn.getPositions=function(e){let t=[],n=Fn.getRowColCoords(e),s=n.length;for(let i=0;i<s;i++)for(let o=0;o<s;o++)i===0&&o===0||i===0&&o===s-1||i===s-1&&o===0||t.push([n[i],n[o]]);return t}});var Ha=E($a=>{"use strict";var Vh=Ke().getSymbolSize,Wa=7;$a.getPositions=function(e){let t=Vh(e);return[[0,0],[t-Wa,0],[0,t-Wa]]}});var qa=E(D=>{"use strict";D.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var nt={N1:3,N2:3,N3:40,N4:10};D.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};D.from=function(e){return D.isValid(e)?parseInt(e,10):void 0};D.getPenaltyN1=function(e){let t=e.size,n=0,s=0,i=0,o=null,a=null;for(let c=0;c<t;c++){s=i=0,o=a=null;for(let l=0;l<t;l++){let u=e.get(c,l);u===o?s++:(s>=5&&(n+=nt.N1+(s-5)),o=u,s=1),u=e.get(l,c),u===a?i++:(i>=5&&(n+=nt.N1+(i-5)),a=u,i=1)}s>=5&&(n+=nt.N1+(s-5)),i>=5&&(n+=nt.N1+(i-5))}return n};D.getPenaltyN2=function(e){let t=e.size,n=0;for(let s=0;s<t-1;s++)for(let i=0;i<t-1;i++){let o=e.get(s,i)+e.get(s,i+1)+e.get(s+1,i)+e.get(s+1,i+1);(o===4||o===0)&&n++}return n*nt.N2};D.getPenaltyN3=function(e){let t=e.size,n=0,s=0,i=0;for(let o=0;o<t;o++){s=i=0;for(let a=0;a<t;a++)s=s<<1&2047|e.get(o,a),a>=10&&(s===1488||s===93)&&n++,i=i<<1&2047|e.get(a,o),a>=10&&(i===1488||i===93)&&n++}return n*nt.N3};D.getPenaltyN4=function(e){let t=0,n=e.data.length;for(let i=0;i<n;i++)t+=e.data[i];return Math.abs(Math.ceil(t*100/n/5)-10)*nt.N4};function Gh(r,e,t){switch(r){case D.Patterns.PATTERN000:return(e+t)%2===0;case D.Patterns.PATTERN001:return e%2===0;case D.Patterns.PATTERN010:return t%3===0;case D.Patterns.PATTERN011:return(e+t)%3===0;case D.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case D.Patterns.PATTERN101:return e*t%2+e*t%3===0;case D.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case D.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}D.applyMask=function(e,t){let n=t.size;for(let s=0;s<n;s++)for(let i=0;i<n;i++)t.isReserved(i,s)||t.xor(i,s,Gh(e,i,s))};D.getBestMask=function(e,t){let n=Object.keys(D.Patterns).length,s=0,i=1/0;for(let o=0;o<n;o++){t(o),D.applyMask(o,e);let a=D.getPenaltyN1(e)+D.getPenaltyN2(e)+D.getPenaltyN3(e)+D.getPenaltyN4(e);D.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var ii=E(si=>{"use strict";var Oe=Dn(),Mn=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],Un=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];si.getBlocksCount=function(e,t){switch(t){case Oe.L:return Mn[(e-1)*4+0];case Oe.M:return Mn[(e-1)*4+1];case Oe.Q:return Mn[(e-1)*4+2];case Oe.H:return Mn[(e-1)*4+3];default:return}};si.getTotalCodewordsCount=function(e,t){switch(t){case Oe.L:return Un[(e-1)*4+0];case Oe.M:return Un[(e-1)*4+1];case Oe.Q:return Un[(e-1)*4+2];case Oe.H:return Un[(e-1)*4+3];default:return}}});var Va=E(Ln=>{"use strict";var xr=new Uint8Array(512),Nn=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)xr[t]=e,Nn[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)xr[t]=xr[t-255]})();Ln.log=function(e){if(e<1)throw new Error("log("+e+")");return Nn[e]};Ln.exp=function(e){return xr[e]};Ln.mul=function(e,t){return e===0||t===0?0:xr[Nn[e]+Nn[t]]}});var Ga=E(vr=>{"use strict";var oi=Va();vr.mul=function(e,t){let n=new Uint8Array(e.length+t.length-1);for(let s=0;s<e.length;s++)for(let i=0;i<t.length;i++)n[s+i]^=oi.mul(e[s],t[i]);return n};vr.mod=function(e,t){let n=new Uint8Array(e);for(;n.length-t.length>=0;){let s=n[0];for(let o=0;o<t.length;o++)n[o]^=oi.mul(t[o],s);let i=0;for(;i<n.length&&n[i]===0;)i++;n=n.slice(i)}return n};vr.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let n=0;n<e;n++)t=vr.mul(t,new Uint8Array([1,oi.exp(n)]));return t}});var Ja=E((Ly,ja)=>{"use strict";var Ya=Ga();function ai(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}ai.prototype.initialize=function(e){this.degree=e,this.genPoly=Ya.generateECPolynomial(this.degree)};ai.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let n=Ya.mod(t,this.genPoly),s=this.degree-n.length;if(s>0){let i=new Uint8Array(this.degree);return i.set(n,s),i}return n};ja.exports=ai});var ci=E(Qa=>{"use strict";Qa.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var li=E(Be=>{"use strict";var Xa="[0-9]+",Yh="[A-Z $%*+\\-./:]+",kr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";kr=kr.replace(/u/g,"\\u");var jh="(?:(?![A-Z0-9 $%*+\\-./:]|"+kr+`)(?:.|[\r
2
- ]))+`;Be.KANJI=new RegExp(kr,"g");Be.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Be.BYTE=new RegExp(jh,"g");Be.NUMERIC=new RegExp(Xa,"g");Be.ALPHANUMERIC=new RegExp(Yh,"g");var Jh=new RegExp("^"+kr+"$"),Qh=new RegExp("^"+Xa+"$"),Xh=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Be.testKanji=function(e){return Jh.test(e)};Be.testNumeric=function(e){return Qh.test(e)};Be.testAlphanumeric=function(e){return Xh.test(e)}});var ze=E(_=>{"use strict";var Zh=ci(),ui=li();_.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};_.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};_.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};_.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};_.MIXED={bit:-1};_.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Zh.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};_.getBestModeForData=function(e){return ui.testNumeric(e)?_.NUMERIC:ui.testAlphanumeric(e)?_.ALPHANUMERIC:ui.testKanji(e)?_.KANJI:_.BYTE};_.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};_.isValid=function(e){return e&&e.bit&&e.ccBits};function ef(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return _.NUMERIC;case"alphanumeric":return _.ALPHANUMERIC;case"kanji":return _.KANJI;case"byte":return _.BYTE;default:throw new Error("Unknown mode: "+r)}}_.from=function(e,t){if(_.isValid(e))return e;try{return ef(e)}catch{return t}}});var nc=E(st=>{"use strict";var _n=Ke(),tf=ii(),Za=Dn(),We=ze(),di=ci(),tc=7973,ec=_n.getBCHDigit(tc);function rf(r,e,t){for(let n=1;n<=40;n++)if(e<=st.getCapacity(n,t,r))return n}function rc(r,e){return We.getCharCountIndicator(r,e)+4}function nf(r,e){let t=0;return r.forEach(function(n){let s=rc(n.mode,e);t+=s+n.getBitsLength()}),t}function sf(r,e){for(let t=1;t<=40;t++)if(nf(r,t)<=st.getCapacity(t,e,We.MIXED))return t}st.from=function(e,t){return di.isValid(e)?parseInt(e,10):t};st.getCapacity=function(e,t,n){if(!di.isValid(e))throw new Error("Invalid QR Code version");typeof n>"u"&&(n=We.BYTE);let s=_n.getSymbolTotalCodewords(e),i=tf.getTotalCodewordsCount(e,t),o=(s-i)*8;if(n===We.MIXED)return o;let a=o-rc(n,e);switch(n){case We.NUMERIC:return Math.floor(a/10*3);case We.ALPHANUMERIC:return Math.floor(a/11*2);case We.KANJI:return Math.floor(a/13);case We.BYTE:default:return Math.floor(a/8)}};st.getBestVersionForData=function(e,t){let n,s=Za.from(t,Za.M);if(Array.isArray(e)){if(e.length>1)return sf(e,s);if(e.length===0)return 1;n=e[0]}else n=e;return rf(n.mode,n.getLength(),s)};st.getEncodedBits=function(e){if(!di.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;_n.getBCHDigit(t)-ec>=0;)t^=tc<<_n.getBCHDigit(t)-ec;return e<<12|t}});var ac=E(oc=>{"use strict";var hi=Ke(),ic=1335,of=21522,sc=hi.getBCHDigit(ic);oc.getEncodedBits=function(e,t){let n=e.bit<<3|t,s=n<<10;for(;hi.getBCHDigit(s)-sc>=0;)s^=ic<<hi.getBCHDigit(s)-sc;return(n<<10|s)^of}});var lc=E(($y,cc)=>{"use strict";var af=ze();function It(r){this.mode=af.NUMERIC,this.data=r.toString()}It.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};It.prototype.getLength=function(){return this.data.length};It.prototype.getBitsLength=function(){return It.getBitsLength(this.data.length)};It.prototype.write=function(e){let t,n,s;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),s=parseInt(n,10),e.put(s,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),s=parseInt(n,10),e.put(s,i*3+1))};cc.exports=It});var dc=E((Hy,uc)=>{"use strict";var cf=ze(),fi=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Bt(r){this.mode=cf.ALPHANUMERIC,this.data=r}Bt.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Bt.prototype.getLength=function(){return this.data.length};Bt.prototype.getBitsLength=function(){return Bt.getBitsLength(this.data.length)};Bt.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=fi.indexOf(this.data[t])*45;n+=fi.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(fi.indexOf(this.data[t]),6)};uc.exports=Bt});var fc=E((qy,hc)=>{"use strict";var lf=ze();function Tt(r){this.mode=lf.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}Tt.getBitsLength=function(e){return e*8};Tt.prototype.getLength=function(){return this.data.length};Tt.prototype.getBitsLength=function(){return Tt.getBitsLength(this.data.length)};Tt.prototype.write=function(r){for(let e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};hc.exports=Tt});var mc=E((Vy,pc)=>{"use strict";var uf=ze(),df=Ke();function Rt(r){this.mode=uf.KANJI,this.data=r}Rt.getBitsLength=function(e){return e*13};Rt.prototype.getLength=function(){return this.data.length};Rt.prototype.getBitsLength=function(){return Rt.getBitsLength(this.data.length)};Rt.prototype.write=function(r){let e;for(e=0;e<this.data.length;e++){let t=df.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
3
- Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};pc.exports=Rt});var gc=E((Gy,pi)=>{"use strict";var Er={single_source_shortest_paths:function(r,e,t){var n={},s={};s[e]=0;var i=Er.PriorityQueue.make();i.push(e,0);for(var o,a,c,l,u,d,h,p,g;!i.empty();){o=i.pop(),a=o.value,l=o.cost,u=r[a]||{};for(c in u)u.hasOwnProperty(c)&&(d=u[c],h=l+d,p=s[c],g=typeof s[c]>"u",(g||p>h)&&(s[c]=h,i.push(c,h),n[c]=a))}if(typeof t<"u"&&typeof s[t]>"u"){var w=["Could not find a path from ",e," to ",t,"."].join("");throw new Error(w)}return n},extract_shortest_path_from_predecessor_list:function(r,e){for(var t=[],n=e,s;n;)t.push(n),s=r[n],n=r[n];return t.reverse(),t},find_path:function(r,e,t){var n=Er.single_source_shortest_paths(r,e,t);return Er.extract_shortest_path_from_predecessor_list(n,t)},PriorityQueue:{make:function(r){var e=Er.PriorityQueue,t={},n;r=r||{};for(n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t.queue=[],t.sorter=r.sorter||e.default_sorter,t},default_sorter:function(r,e){return r.cost-e.cost},push:function(r,e){var t={value:r,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof pi<"u"&&(pi.exports=Er)});var kc=E(Dt=>{"use strict";var P=ze(),bc=lc(),Sc=dc(),Ac=fc(),xc=mc(),Cr=li(),Kn=Ke(),hf=gc();function yc(r){return unescape(encodeURIComponent(r)).length}function Pr(r,e,t){let n=[],s;for(;(s=r.exec(t))!==null;)n.push({data:s[0],index:s.index,mode:e,length:s[0].length});return n}function vc(r){let e=Pr(Cr.NUMERIC,P.NUMERIC,r),t=Pr(Cr.ALPHANUMERIC,P.ALPHANUMERIC,r),n,s;return Kn.isKanjiModeEnabled()?(n=Pr(Cr.BYTE,P.BYTE,r),s=Pr(Cr.KANJI,P.KANJI,r)):(n=Pr(Cr.BYTE_KANJI,P.BYTE,r),s=[]),e.concat(t,n,s).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function mi(r,e){switch(e){case P.NUMERIC:return bc.getBitsLength(r);case P.ALPHANUMERIC:return Sc.getBitsLength(r);case P.KANJI:return xc.getBitsLength(r);case P.BYTE:return Ac.getBitsLength(r)}}function ff(r){return r.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function pf(r){let e=[];for(let t=0;t<r.length;t++){let n=r[t];switch(n.mode){case P.NUMERIC:e.push([n,{data:n.data,mode:P.ALPHANUMERIC,length:n.length},{data:n.data,mode:P.BYTE,length:n.length}]);break;case P.ALPHANUMERIC:e.push([n,{data:n.data,mode:P.BYTE,length:n.length}]);break;case P.KANJI:e.push([n,{data:n.data,mode:P.BYTE,length:yc(n.data)}]);break;case P.BYTE:e.push([{data:n.data,mode:P.BYTE,length:yc(n.data)}])}}return e}function mf(r,e){let t={},n={start:{}},s=["start"];for(let i=0;i<r.length;i++){let o=r[i],a=[];for(let c=0;c<o.length;c++){let l=o[c],u=""+i+c;a.push(u),t[u]={node:l,lastCount:0},n[u]={};for(let d=0;d<s.length;d++){let h=s[d];t[h]&&t[h].node.mode===l.mode?(n[h][u]=mi(t[h].lastCount+l.length,l.mode)-mi(t[h].lastCount,l.mode),t[h].lastCount+=l.length):(t[h]&&(t[h].lastCount=l.length),n[h][u]=mi(l.length,l.mode)+4+P.getCharCountIndicator(l.mode,e))}}s=a}for(let i=0;i<s.length;i++)n[s[i]].end=0;return{map:n,table:t}}function wc(r,e){let t,n=P.getBestModeForData(r);if(t=P.from(e,n),t!==P.BYTE&&t.bit<n.bit)throw new Error('"'+r+'" cannot be encoded with mode '+P.toString(t)+`.
4
- Suggested mode is: `+P.toString(n));switch(t===P.KANJI&&!Kn.isKanjiModeEnabled()&&(t=P.BYTE),t){case P.NUMERIC:return new bc(r);case P.ALPHANUMERIC:return new Sc(r);case P.KANJI:return new xc(r);case P.BYTE:return new Ac(r)}}Dt.fromArray=function(e){return e.reduce(function(t,n){return typeof n=="string"?t.push(wc(n,null)):n.data&&t.push(wc(n.data,n.mode)),t},[])};Dt.fromString=function(e,t){let n=vc(e,Kn.isKanjiModeEnabled()),s=pf(n),i=mf(s,t),o=hf.find_path(i.map,"start","end"),a=[];for(let c=1;c<o.length-1;c++)a.push(i.table[o[c]].node);return Dt.fromArray(ff(a))};Dt.rawSplit=function(e){return Dt.fromArray(vc(e,Kn.isKanjiModeEnabled()))}});var Cc=E(Ec=>{"use strict";var zn=Ke(),gi=Dn(),gf=_a(),yf=Oa(),wf=za(),bf=Ha(),bi=qa(),Si=ii(),Sf=Ja(),On=nc(),Af=ac(),xf=ze(),yi=kc();function vf(r,e){let t=r.size,n=bf.getPositions(e);for(let s=0;s<n.length;s++){let i=n[s][0],o=n[s][1];for(let a=-1;a<=7;a++)if(!(i+a<=-1||t<=i+a))for(let c=-1;c<=7;c++)o+c<=-1||t<=o+c||(a>=0&&a<=6&&(c===0||c===6)||c>=0&&c<=6&&(a===0||a===6)||a>=2&&a<=4&&c>=2&&c<=4?r.set(i+a,o+c,!0,!0):r.set(i+a,o+c,!1,!0))}}function kf(r){let e=r.size;for(let t=8;t<e-8;t++){let n=t%2===0;r.set(t,6,n,!0),r.set(6,t,n,!0)}}function Ef(r,e){let t=wf.getPositions(e);for(let n=0;n<t.length;n++){let s=t[n][0],i=t[n][1];for(let o=-2;o<=2;o++)for(let a=-2;a<=2;a++)o===-2||o===2||a===-2||a===2||o===0&&a===0?r.set(s+o,i+a,!0,!0):r.set(s+o,i+a,!1,!0)}}function Cf(r,e){let t=r.size,n=On.getEncodedBits(e),s,i,o;for(let a=0;a<18;a++)s=Math.floor(a/3),i=a%3+t-8-3,o=(n>>a&1)===1,r.set(s,i,o,!0),r.set(i,s,o,!0)}function wi(r,e,t){let n=r.size,s=Af.getEncodedBits(e,t),i,o;for(i=0;i<15;i++)o=(s>>i&1)===1,i<6?r.set(i,8,o,!0):i<8?r.set(i+1,8,o,!0):r.set(n-15+i,8,o,!0),i<8?r.set(8,n-i-1,o,!0):i<9?r.set(8,15-i-1+1,o,!0):r.set(8,15-i-1,o,!0);r.set(n-8,8,1,!0)}function Pf(r,e){let t=r.size,n=-1,s=t-1,i=7,o=0;for(let a=t-1;a>0;a-=2)for(a===6&&a--;;){for(let c=0;c<2;c++)if(!r.isReserved(s,a-c)){let l=!1;o<e.length&&(l=(e[o]>>>i&1)===1),r.set(s,a-c,l),i--,i===-1&&(o++,i=7)}if(s+=n,s<0||t<=s){s-=n,n=-n;break}}}function If(r,e,t){let n=new gf;t.forEach(function(c){n.put(c.mode.bit,4),n.put(c.getLength(),xf.getCharCountIndicator(c.mode,r)),c.write(n)});let s=zn.getSymbolTotalCodewords(r),i=Si.getTotalCodewordsCount(r,e),o=(s-i)*8;for(n.getLengthInBits()+4<=o&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(0);let a=(o-n.getLengthInBits())/8;for(let c=0;c<a;c++)n.put(c%2?17:236,8);return Bf(n,r,e)}function Bf(r,e,t){let n=zn.getSymbolTotalCodewords(e),s=Si.getTotalCodewordsCount(e,t),i=n-s,o=Si.getBlocksCount(e,t),a=n%o,c=o-a,l=Math.floor(n/o),u=Math.floor(i/o),d=u+1,h=l-u,p=new Sf(h),g=0,w=new Array(o),b=new Array(o),S=0,A=new Uint8Array(r.buffer);for(let T=0;T<o;T++){let z=T<c?u:d;w[T]=A.slice(g,g+z),b[T]=p.encode(w[T]),g+=z,S=Math.max(S,z)}let v=new Uint8Array(n),I=0,k,F;for(k=0;k<S;k++)for(F=0;F<o;F++)k<w[F].length&&(v[I++]=w[F][k]);for(k=0;k<h;k++)for(F=0;F<o;F++)v[I++]=b[F][k];return v}function Tf(r,e,t,n){let s;if(Array.isArray(r))s=yi.fromArray(r);else if(typeof r=="string"){let l=e;if(!l){let u=yi.rawSplit(r);l=On.getBestVersionForData(u,t)}s=yi.fromString(r,l||40)}else throw new Error("Invalid data");let i=On.getBestVersionForData(s,t);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=i;else if(e<i)throw new Error(`
1
+ "use strict";var Nh=Object.create;var ur=Object.defineProperty;var Lh=Object.getOwnPropertyDescriptor;var _h=Object.getOwnPropertyNames;var Kh=Object.getPrototypeOf,Oh=Object.prototype.hasOwnProperty;var zh=(r,e,t)=>e in r?ur(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var p=(r,e)=>()=>(r&&(e=r(r=0)),e);var C=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),x=(r,e)=>{for(var t in e)ur(r,t,{get:e[t],enumerable:!0})},va=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of _h(e))!Oh.call(r,s)&&s!==t&&ur(r,s,{get:()=>e[s],enumerable:!(n=Lh(e,s))||n.enumerable});return r};var z=(r,e,t)=>(t=r!=null?Nh(Kh(r)):{},va(e||!r||!r.__esModule?ur(t,"default",{value:r,enumerable:!0}):t,r)),Wh=r=>va(ur({},"__esModule",{value:!0}),r);var f=(r,e,t)=>zh(r,typeof e!="symbol"?e+"":e,t);var $s={};x($s,{ApiError:()=>dr,AuthenticationError:()=>N,CryptoError:()=>P,PrfUnsupportedError:()=>Le,RegistrationError:()=>et,StorageError:()=>k,SyncBootstrapError:()=>ye,SyncRequiredError:()=>tt,WalletError:()=>g,WalletMissingError:()=>rt,Web3PasskeyError:()=>_});var _,N,et,g,P,k,dr,tt,rt,Hh,ye,Le,W=p(()=>{"use strict";_=class extends Error{constructor(t,n,s){super(t);this.code=n;this.originalError=s;this.name="Web3PasskeyError"}},N=class extends _{constructor(e,t){super(e,"AUTHENTICATION_ERROR",t),this.name="AuthenticationError"}},et=class extends _{constructor(e,t){super(e,"REGISTRATION_ERROR",t),this.name="RegistrationError"}},g=class extends _{constructor(e,t){super(e,"WALLET_ERROR",t),this.name="WalletError"}},P=class extends _{constructor(e,t){super(e,"CRYPTO_ERROR",t),this.name="CryptoError"}},k=class extends _{constructor(e,t){super(e,"STORAGE_ERROR",t),this.name="StorageError"}},dr=class extends _{constructor(t,n,s){super(t,"API_ERROR",s);this.statusCode=n;this.name="ApiError"}},tt=class extends _{constructor(t){super("Passkey authenticated but this device has no data for it. Sync this device or restore from a backup.","SYNC_REQUIRED");this.credentialId=t;this.name="SyncRequiredError"}},rt=class extends _{constructor(t,n){super("Passkey authenticated but no wallet was found on this device. Restore it from a backup.","WALLET_MISSING");this.credentialId=t;this.ethereumAddress=n;this.name="WalletMissingError"}},Hh={PASSKEY_BACKUP:"This device has no data for the passkey, and a passkey-encrypted backup can't set it up. Sync with a backup from exportForSync() or a password backup instead.",NO_CREDENTIAL:"This backup doesn't name its passkey, so it can't set up this device. Create a new password backup on a device where you're logged in.",CREDENTIAL_MISMATCH:"This backup belongs to a different passkey than the one selected.",PUBLIC_KEY_MISMATCH:"The passkey's signature doesn't match the public key in this backup. The backup may have been tampered with."},ye=class extends _{constructor(t,n){super(Hh[t],"SYNC_BOOTSTRAP_FAILED");this.reason=t;this.credentialId=n;this.name="SyncBootstrapError"}},Le=class extends _{constructor(t){super("This passkey's authenticator doesn't support the WebAuthn PRF extension.","PRF_UNSUPPORTED");this.credentialId=t;this.name="PrfUnsupportedError"}}});var Qs={};x(Qs,{arrayBufferToBase64Url:()=>ne,base64ToArrayBuffer:()=>Ys,base64UrlDecode:()=>Js,base64UrlToArrayBuffer:()=>T,safeAtob:()=>nt,safeBtoa:()=>js});function T(r){try{let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4;e+="=".repeat(t);let n=atob(e),s=new Uint8Array(n.length);for(let i=0;i<n.length;i++)s[i]=n.charCodeAt(i);return s.buffer}catch(e){throw new Error(`Failed to decode base64url string: ${e instanceof Error?e.message:"Invalid format"}`)}}function ne(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Ys(r){try{let e=atob(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t.buffer}catch(e){throw new Error(`Failed to decode base64 string: ${e instanceof Error?e.message:"Invalid format"}`)}}function nt(r){try{let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4;return e+="=".repeat(t),atob(e)}catch(e){throw new Error(`Failed to decode base64 string: ${e instanceof Error?e.message:"Invalid format"}`)}}function js(r){try{let e=new TextEncoder().encode(r),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}catch(e){throw new Error(`Failed to encode string: ${e instanceof Error?e.message:"Invalid input"}`)}}function Js(r){return T(r)}var ce=p(()=>{"use strict"});var fr={};x(fr,{PRF_INPUT:()=>hr,decryptData:()=>Q,deriveEncryptionKey:()=>qh,deriveEncryptionKeyFromWebAuthn:()=>le,derivePrfSessionKey:()=>kt,encryptData:()=>J,exportSessionKey:()=>Xs,generateChallenge:()=>Ee,hashCredentialId:()=>Et,hashPublicKey:()=>ei,importSessionKey:()=>Zs});async function kt(r,e=!1){try{let t=(r instanceof ArrayBuffer,r.byteLength);if(t!==32)throw new Error(`PRF output must be 32 bytes, got ${t}`);let n=await crypto.subtle.importKey("raw",r,"HKDF",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:new Uint8Array(32),info:$h},n,{name:"AES-GCM",length:256},e,["encrypt","decrypt"])}catch(t){throw new P("Failed to derive session key from PRF output",t)}}async function Xs(r){try{return ne(await crypto.subtle.exportKey("raw",r))}catch(e){throw new P("Failed to export session key",e)}}async function Zs(r){try{return await crypto.subtle.importKey("raw",T(r),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(e){throw new P("Failed to import session key",e)}}async function le(r,e){try{let t=e?`w3pk-v4:${r}:${e}`:`w3pk-v4:${r}`,n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),s=await crypto.subtle.importKey("raw",n,{name:"PBKDF2"},!1,["deriveKey"]),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode("w3pk-salt-v4"));return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(i),iterations:21e4,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new P("Failed to derive encryption key from WebAuthn",t)}}async function qh(r,e){try{let t=e?`w3pk-v2:${r}:${e}`:`w3pk-v2:${r}`,n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),s=await crypto.subtle.importKey("raw",n,{name:"PBKDF2"},!1,["deriveKey"]),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode("w3pk-salt-v2"));return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(i),iterations:21e4,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new P("Failed to derive encryption key",t)}}function Ee(){let r=new Uint8Array(32);return crypto.getRandomValues(r),ne(r)}async function J(r,e){try{let t=crypto.getRandomValues(new Uint8Array(12)),n=new TextEncoder().encode(r),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:t},e,n),i=new Uint8Array(t.length+s.byteLength);i.set(t),i.set(new Uint8Array(s),t.length);let o="";for(let a=0;a<i.length;a++)o+=String.fromCharCode(i[a]);return btoa(o)}catch(t){throw new P("Failed to encrypt data",t)}}async function Q(r,e){try{if(!r||r.length<16)throw new Error("Invalid encrypted data: too small");let t=nt(r),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);if(n.length<12)throw new Error("Invalid encrypted data: missing IV");let s=n.slice(0,12),i=n.slice(12);if(i.length===0)throw new Error("Invalid encrypted data: no content");let o=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},e,i);return new TextDecoder().decode(o)}catch(t){throw new P(`Data decryption failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}async function Et(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`w3pk-cred-id:${r}`));return ne(e)}catch(e){throw new P("Failed to hash credential ID",e)}}async function ei(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return ne(e)}catch(e){throw new P("Failed to hash public key",e)}}var hr,$h,se=p(()=>{"use strict";W();ce();hr=new TextEncoder().encode("w3pk-prf-input-v1"),$h=new TextEncoder().encode("w3pk-prf-session-key-v1")});var mn={};x(mn,{CredentialStorage:()=>D});async function Ca(r){let e=new TextEncoder().encode(`w3pk-metadata-v1:${r}`),t=await crypto.subtle.digest("SHA-256",e),n=await crypto.subtle.importKey("raw",t,{name:"PBKDF2"},!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:"PBKDF2",salt:new TextEncoder().encode("w3pk-metadata-salt-v1"),iterations:1e5,hash:"SHA-256"},n,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}var fn,pn,D,_e=p(()=>{"use strict";W();se();fn="w3pk_credential_",pn="w3pk_credential_index";D=class{constructor(e){if(e)this.storage=e;else if(typeof window<"u"&&window.localStorage)this.storage=window.localStorage;else throw new k("localStorage is not available")}async saveCredential(e){try{let t=await Ca(e.id),n=await Et(e.id),s={id:n,encryptedUsername:await J(e.username,t),encryptedAddress:await J(e.ethereumAddress,t),publicKey:e.publicKey,publicKeyFingerprint:await ei(e.publicKey),createdAt:e.createdAt,lastUsed:e.lastUsed},i=`${fn}${n}`;this.storage.setItem(i,JSON.stringify(s)),await this.addToIndex(e.id)}catch(t){throw new k("Failed to save credential",t)}}async getCredentialById(e){try{let t=await Et(e),n=`${fn}${t}`,s=this.storage.getItem(n);if(!s)return null;let i=JSON.parse(s),o=await Ca(e);return{id:e,publicKey:i.publicKey,username:await Q(i.encryptedUsername,o),ethereumAddress:await Q(i.encryptedAddress,o),createdAt:i.createdAt,lastUsed:i.lastUsed}}catch(t){throw new k("Failed to retrieve credential",t)}}async getCredentialByUsername(e){try{return(await this.getAllCredentials()).find(n=>n.username===e)||null}catch(t){throw new k("Failed to retrieve credential",t)}}async getCredentialByAddress(e){try{return(await this.getAllCredentials()).find(n=>n.ethereumAddress.toLowerCase()===e.toLowerCase())||null}catch(t){throw new k("Failed to retrieve credential",t)}}async getAllCredentials(){try{let e=await this.getIndex();return(await Promise.all(e.map(async n=>await this.getCredentialById(n)))).filter(n=>n!==null)}catch(e){throw new k("Failed to retrieve credentials",e)}}async userExists(e){return await this.getCredentialByUsername(e)!==null}async updateLastUsed(e){try{let t=await this.getCredentialById(e);t&&(t.lastUsed=new Date().toISOString(),await this.saveCredential(t))}catch(t){throw new k("Failed to update timestamp",t)}}async updateSignatureCounter(e,t){try{let n=await this.getCredentialById(e);n&&(n.signCount=t,n.lastUsed=new Date().toISOString(),await this.saveCredential(n))}catch(n){throw new k("Failed to update signature counter",n)}}async updateCredentialAddress(e,t){try{let n=await this.getCredentialById(e);n&&(n.ethereumAddress=t,n.lastUsed=new Date().toISOString(),await this.saveCredential(n))}catch(n){throw new k("Failed to update credential address",n)}}async deleteCredential(e){try{let t=await Et(e),n=`${fn}${t}`;this.storage.removeItem(n),await this.removeFromIndex(e)}catch(t){throw new k("Failed to delete credential",t)}}async clearAll(){try{let e=await this.getIndex();(await Promise.all(e.map(async n=>await Et(n)))).forEach(n=>{let s=`${fn}${n}`;this.storage.removeItem(s)}),this.storage.removeItem(pn)}catch(e){throw new k("Failed to clear credentials",e)}}async getIndex(){try{let e=this.storage.getItem(pn);return e?JSON.parse(e):[]}catch{return[]}}async addToIndex(e){let t=await this.getIndex();t.includes(e)||(t.push(e),this.storage.setItem(pn,JSON.stringify(t)))}async removeFromIndex(e){let n=(await this.getIndex()).filter(s=>s!==e);this.storage.setItem(pn,JSON.stringify(n))}}});function yn(r){return r.length>32&&(r[32]&4)!==0}var ti=p(()=>{"use strict"});var Ta={};x(Ta,{login:()=>pr,verifyAssertionSignature:()=>gn});async function pr(r="required"){try{let e=new D,t=Ee(),n=[];try{let l=await e.getAllCredentials();l.length>0&&(n=l.map(d=>({id:d.id,type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]})))}catch{}let i={challenge:T(t),rpId:window.location.hostname,userVerification:r,timeout:6e4,extensions:{prf:{eval:{first:hr}}}};n.length>0&&(i.allowCredentials=n.map(l=>({id:T(l.id),type:l.type,transports:l.transports})));let o;try{let l=await navigator.credentials.get({publicKey:i});if(!l)throw new Error("Authentication failed - no credential returned");o=l}catch(l){throw l?.name==="NotAllowedError"||l?.message?.toLowerCase().includes("no credentials available")||l?.message?.toLowerCase().includes("no access key")?(await e.getAllCredentials()).length>0?new N("Your passkey is not available on this device. You may need to restore your wallet from a backup, or login on the device where you registered."):new N("No passkey found. Please register first or restore from a backup."):l}let a=await e.getCredentialById(o.id);if(!a)throw new tt(o.id);if(!await jh(o,a,e))throw new Error("Signature verification failed");let u=yn(new Uint8Array(o.response.authenticatorData))?o.getClientExtensionResults?.().prf?.results?.first:void 0;return{verified:!0,user:{username:a.username,ethereumAddress:a.ethereumAddress,credentialId:a.id},signature:o.response.signature,prfOutput:u}}catch(e){throw e instanceof _?e:new N(e instanceof Error?e.message:"Authentication failed",e)}}async function jh(r,e,t){try{if(!await gn(r,e.publicKey))return!1;let n=new DataView(r.response.authenticatorData).getUint32(33,!1);if(n>0||e.signCount&&e.signCount>0){let s=e.signCount||0;if(n<=s)return console.error(`Authenticator cloning detected! Counter did not increase: stored=${s}, received=${n}`),!1}return await t.updateSignatureCounter(e.id,n),!0}catch(n){return console.error("Signature verification error:",n),!1}}async function gn(r,e){try{let t=r.response.authenticatorData,n=new Uint8Array(t),s=n.slice(0,32),i=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(window.location.hostname)));if(!Jh(s,i))return console.error("RP ID hash mismatch - possible phishing attack"),!1;let o=await crypto.subtle.importKey("spki",T(e),{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),a=await crypto.subtle.digest("SHA-256",r.response.clientDataJSON),c=new Uint8Array(t.byteLength+a.byteLength);c.set(n,0),c.set(new Uint8Array(a),t.byteLength);let u=Qh(new Uint8Array(r.response.signature));return await crypto.subtle.verify({name:"ECDSA",hash:"SHA-256"},o,u,c)}catch(t){return console.error("Signature verification error:",t),!1}}function Jh(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function Qh(r){let e=2;e++;let t=r[e++];t>32&&(e++,t--);let n=r.slice(e,e+t);e+=t,e++;let s=r[e++];s>32&&(e++,s--);let i=r.slice(e,e+s),o=new Uint8Array(64);return o.set(n,32-n.length),o.set(i,64-i.length),o.buffer}var ri=p(()=>{"use strict";W();_e();ce();se();ti()});var Ct={};x(Ct,{createWalletFromMnemonic:()=>ni,deriveWalletFromMnemonic:()=>gr,generateBIP39Wallet:()=>yr});function yr(){try{let r=mr.ethers.Wallet.createRandom().mnemonic;if(!r)throw new Error("Failed to generate mnemonic");let e=r.phrase;return{address:mr.ethers.HDNodeWallet.fromPhrase(e,void 0,"m/44'/60'/0'/0/0").address,mnemonic:e}}catch(r){throw new g("Wallet generation failed",r)}}function ni(r){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");return mr.ethers.HDNodeWallet.fromPhrase(r.trim(),void 0,"m/44'/60'/0'/0/0")}catch(e){throw new g(`Wallet creation failed: ${e instanceof Error?e.message:"Invalid mnemonic"}`,e)}}function gr(r,e=0){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");if(e<0||!Number.isInteger(e))throw new Error("Index must be a non-negative integer");let t=`m/44'/60'/0'/0/${e}`,n=mr.ethers.HDNodeWallet.fromPhrase(r.trim(),void 0,t);return{address:n.address,privateKey:n.privateKey}}catch(t){throw new g(`HD wallet derivation failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}var mr,Te=p(()=>{"use strict";mr=require("ethers");W()});var An={};x(An,{DEFAULT_MODE:()=>ge,DEFAULT_TAG:()=>X,deriveAddressFromP256PublicKey:()=>si,deriveIndexFromOriginModeAndTag:()=>Sn,getCurrentOrigin:()=>ue,getOriginSpecificAddress:()=>we,normalizeOrigin:()=>st});function st(r){try{let e=new URL(r),t=`${e.protocol}//${e.hostname.toLowerCase()}`,n=e.port;return n&&!(e.protocol==="https:"&&n==="443"||e.protocol==="http:"&&n==="80")&&(t+=`:${n}`),t}catch(e){throw new g(`Invalid origin URL: ${r}`,e)}}async function Sn(r,e=ge,t=X){try{let s=`${st(r)}:${e}:${t.toUpperCase()}`,o=new TextEncoder().encode(s),a=await crypto.subtle.digest("SHA-256",o);return new DataView(a).getUint32(0,!1)%Xh}catch(n){throw new g(`Failed to derive index from origin "${r}", mode "${e}", and tag "${t}"`,n)}}async function we(r,e,t,n){try{let s=t||ge,i=(n||X).toUpperCase(),o=st(e),a=await Sn(o,s,i),{address:c,privateKey:u}=gr(r,a),l={address:c,index:a,origin:o,mode:s,tag:i};return s==="YOLO"&&(l.privateKey=u),l}catch(s){throw new g(`Failed to derive origin-specific address for "${e}" with mode "${t||ge}" and tag "${n||X}"`,s)}}function ue(){if(typeof window>"u"||!window.location)throw new g("getCurrentOrigin() only works in browser environments");return window.location.origin}async function si(r){try{let e=T(r),t=await crypto.subtle.importKey("spki",e,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),n=await crypto.subtle.exportKey("jwk",t);if(!n.x||!n.y)throw new Error("Invalid P-256 public key: missing x or y coordinates");let s=T(n.x),i=T(n.y),o=new Uint8Array(64);return o.set(new Uint8Array(s),0),o.set(new Uint8Array(i),32),"0x"+(0,Ra.keccak256)(o).slice(-40)}catch(e){throw new g("Failed to derive address from P-256 public key",e)}}var Ra,ge,X,Xh,Pt=p(()=>{"use strict";Te();W();Ra=require("ethers");ce();ge="STANDARD",X="MAIN",Xh=2147483647});var ci={};x(ci,{derivePrfSecret:()=>ai,evaluatePrf:()=>_a});async function _a(r,e){let t;try{let i={challenge:T(Ee()),rpId:window.location.hostname,userVerification:"required",timeout:6e4,extensions:{prf:{eval:{first:r}}}};e&&(i.allowCredentials=[{id:T(e),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}]);let o=await navigator.credentials.get({publicKey:i});if(!o)throw new N("Authentication failed - no credential returned");t=o}catch(i){throw i instanceof N?i:i?.name==="NotAllowedError"?new N("Authentication was cancelled or the passkey is not available on this device.",i):new N(`Passkey authentication failed: ${i instanceof Error?i.message:"Unknown error"}`,i)}let n=t.getClientExtensionResults?.().prf?.results?.first;if(!n)throw new Le(t.id);let s=ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength).slice().buffer:n.slice(0);if(s.byteLength!==32)throw new Le(t.id);return{output:s,credentialId:t.id,assertion:t}}function rf(r,e){if(typeof e!="string"||e.length===0||e.includes(":"))throw new P("PRF secret tag must be a non-empty string without ':'");return new TextEncoder().encode(`${ef}:${r}:${e}`)}async function ai(r,e,t){let n=rf(r,e),s=await crypto.subtle.digest("SHA-256",n),i=await _a(s,t);try{let o=await crypto.subtle.importKey("raw",i.output,"HKDF",!1,["deriveBits"]),a=await crypto.subtle.deriveBits({name:"HKDF",hash:"SHA-256",salt:tf,info:n},o,256);return{secret:new Uint8Array(a),credentialId:i.credentialId}}catch(o){throw new P("Failed to derive secret from PRF output",o)}finally{new Uint8Array(i.output).fill(0)}}var ef,tf,Cn=p(()=>{"use strict";W();ce();se();ef="w3pk-prf-v1",tf=new TextEncoder().encode("w3pk-prf-secret-v1")});function nf(r,e=0){return/iPhone|iPad|iPod/.test(r)||/Macintosh/.test(r)&&e>1?!0:/AppleWebKit/.test(r)&&!/Chrome|Chromium|Android/.test(r)}function sf(){return navigator.standalone===!0?!0:typeof globalThis.matchMedia=="function"&&globalThis.matchMedia("(display-mode: standalone)").matches}async function Pn(){if(typeof navigator>"u"||!nf(navigator.userAgent??"",navigator.maxTouchPoints??0)||sf())return!1;try{return!await navigator.storage?.persisted?.()}catch{return!0}}var li=p(()=>{"use strict"});var di={};x(di,{encodeEIP7702AuthorizationMessage:()=>Ar,hashEIP7702AuthorizationMessage:()=>xr,verifyEIP7702Authorization:()=>Tn});function Ar(r,e,t){let n=[r===0n?"0x":(0,ie.toBeHex)(r),e.toLowerCase(),t===0n?"0x":(0,ie.toBeHex)(t)],s=(0,ie.encodeRlp)(n);return(0,ie.concat)(["0x05",s])}function xr(r,e,t){let n=Ar(r,e,t);return(0,ie.keccak256)(n)}function Tn(r,e,t,n,s){try{let i=xr(r,e,t),o;return typeof n=="string"?o=ie.Signature.from(n):o=n,(0,ie.recoverAddress)(i,o).toLowerCase()===s.toLowerCase()}catch{return!1}}var ie,Rn=p(()=>{"use strict";ie=require("ethers")});var Ha={};x(Ha,{detectWalletProvider:()=>Mn,getDefaultProvider:()=>Fn,requestExternalWalletAuthorization:()=>Dn,supportsEIP7702Authorization:()=>Un});async function Dn(r,e){if(!r)throw new Error("No external wallet provider found. Please install MetaMask or similar wallet.");let t=BigInt(e.chainId||1),n=e.nonce||0n,s=e.accountIndex||0,i=await r.request({method:"eth_requestAccounts"});if(!i||i.length===0)throw new Error("No accounts found in external wallet");if(s>=i.length)throw new Error(`Account index ${s} out of range. Wallet has ${i.length} accounts.`);let o=i[s],{hashEIP7702AuthorizationMessage:a,verifyEIP7702Authorization:c}=await Promise.resolve().then(()=>(Rn(),di)),{Signature:u}=await import("ethers"),l=a(t,e.delegateToAddress,n),d;try{d=await r.request({method:"eth_sign",params:[o,l]})}catch(w){try{d=await r.request({method:"personal_sign",params:[l,o]})}catch(S){throw new Error(`Failed to request signature from wallet. eth_sign error: ${w.message}, personal_sign error: ${S.message}`)}}let h=u.from(d),m={chainId:t,address:e.delegateToAddress.toLowerCase(),nonce:n,yParity:h.yParity,r:h.r,s:h.s};if(!c(t,e.delegateToAddress,n,m,o))throw new Error(`Signature verification failed. Expected signer: ${o}, but signature does not match. This may indicate a wallet implementation issue.`);return m}function Fn(){if(typeof window>"u")return null;let r=window;return r.ethereum?r.ethereum:r.web3?.currentProvider?r.web3.currentProvider:null}function Mn(r){let e=r;return e.isMetaMask?"MetaMask":e.isRabby?"Rabby":e.isCoinbaseWallet?"Coinbase Wallet":e.isBraveWallet?"Brave Wallet":e.isTokenPocket?"TokenPocket":e.isTrust?"Trust Wallet":"Unknown Wallet"}async function Un(r){try{let e=await r.request({method:"eth_accounts"});return Array.isArray(e)}catch{return!1}}var hi=p(()=>{"use strict"});var Va={};x(Va,{BackupStorage:()=>it});var qa,it,Nn=p(()=>{"use strict";qa="w3pk_backups",it=class{constructor(e){this.customStorage=e}get storage(){return this.customStorage?this.customStorage:typeof window<"u"&&window.localStorage?window.localStorage:null}async init(){}async storeBackupMetadata(e){let t=this.readAll().filter(n=>n.id!==e.id);t.push(e),this.writeAll(t)}async getBackupsByAddress(e){return this.readAll().filter(t=>t.ethereumAddress===e)}async getBackupById(e){return this.readAll().find(t=>t.id===e)??null}async deleteBackup(e){this.writeAll(this.readAll().filter(t=>t.id!==e))}async getBackupCountByMethod(e){return this.readAll().filter(t=>t.method===e).length}readAll(){let e=this.storage?.getItem(qa);return e?JSON.parse(e):[]}writeAll(e){this.storage?.setItem(qa,JSON.stringify(e))}}});var pi={};x(pi,{decryptWithPassword:()=>kr,deriveAddressChecksum:()=>V,deriveKeyFromPassword:()=>Ln,encryptWithPassword:()=>ot,getDeviceFingerprint:()=>Ce,validatePasswordStrength:()=>Ga});async function Ln(r,e,t=31e4){let s=new TextEncoder().encode(r),i=await crypto.subtle.importKey("raw",s,"PBKDF2",!1,["deriveBits","deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:e,iterations:t,hash:"SHA-256"},i,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function ot(r,e,t){let s=await Ln(e,t,31e4),o=new TextEncoder().encode(r),a=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:a},s,o);return{encrypted:vr(c),iv:vr(a),salt:vr(t),iterations:31e4}}async function kr(r,e,t,n,s=31e4){let i=fi(t),o=await Ln(e,i,s),a=fi(n),c=fi(r),u=await crypto.subtle.decrypt({name:"AES-GCM",iv:a},o,c);return new TextDecoder().decode(u)}async function Ce(){let e=[navigator.userAgent,navigator.language,new Date().getTimezoneOffset().toString(),screen.width+"x"+screen.height,screen.colorDepth.toString()].join("|"),n=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",n);return vr(s)}async function V(r){let t=new TextEncoder().encode(r.toLowerCase()),n=await crypto.subtle.digest("SHA-256",t);return vr(n).substring(0,16)}function Ga(r){let e=[],t=0;return r.length<12?e.push("Password must be at least 12 characters"):t+=25,/[A-Z]/.test(r)?t+=15:e.push("Add at least one uppercase letter"),/[a-z]/.test(r)?t+=15:e.push("Add at least one lowercase letter"),/[0-9]/.test(r)?t+=15:e.push("Add at least one number"),/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(r)?t+=15:e.push("Add at least one special character"),r.length>=16&&(t+=10),r.length>=20&&(t+=5),["password","12345678","qwerty","abc123","password123","admin","letmein"].some(s=>r.toLowerCase().includes(s))&&(e.push("Password is too common"),t=Math.min(t,25)),{valid:t>=50&&e.length===0,score:Math.min(t,100),feedback:e}}function vr(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let n=0;n<e.byteLength;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function fi(r){let e=nt(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}var Ke=p(()=>{"use strict";ce()});var ja=C((Xg,Ya)=>{"use strict";Ya.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Oe=C(at=>{"use strict";var mi,df=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];at.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};at.getSymbolTotalCodewords=function(e){return df[e]};at.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};at.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');mi=e};at.isKanjiModeEnabled=function(){return typeof mi<"u"};at.toSJIS=function(e){return mi(e)}});var _n=C(de=>{"use strict";de.L={bit:1};de.M={bit:0};de.Q={bit:3};de.H={bit:2};function hf(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return de.L;case"m":case"medium":return de.M;case"q":case"quartile":return de.Q;case"h":case"high":return de.H;default:throw new Error("Unknown EC Level: "+r)}}de.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};de.from=function(e,t){if(de.isValid(e))return e;try{return hf(e)}catch{return t}}});var Xa=C((tw,Qa)=>{"use strict";function Ja(){this.buffer=[],this.length=0}Ja.prototype={get:function(r){let e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(let t=0;t<e;t++)this.putBit((r>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};Qa.exports=Ja});var ec=C((rw,Za)=>{"use strict";function Er(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}Er.prototype.set=function(r,e,t,n){let s=r*this.size+e;this.data[s]=t,n&&(this.reservedBit[s]=!0)};Er.prototype.get=function(r,e){return this.data[r*this.size+e]};Er.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};Er.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};Za.exports=Er});var tc=C(Kn=>{"use strict";var ff=Oe().getSymbolSize;Kn.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,n=ff(e),s=n===145?26:Math.ceil((n-13)/(2*t-2))*2,i=[n-7];for(let o=1;o<t-1;o++)i[o]=i[o-1]-s;return i.push(6),i.reverse()};Kn.getPositions=function(e){let t=[],n=Kn.getRowColCoords(e),s=n.length;for(let i=0;i<s;i++)for(let o=0;o<s;o++)i===0&&o===0||i===0&&o===s-1||i===s-1&&o===0||t.push([n[i],n[o]]);return t}});var sc=C(nc=>{"use strict";var pf=Oe().getSymbolSize,rc=7;nc.getPositions=function(e){let t=pf(e);return[[0,0],[t-rc,0],[0,t-rc]]}});var ic=C(M=>{"use strict";M.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var ct={N1:3,N2:3,N3:40,N4:10};M.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};M.from=function(e){return M.isValid(e)?parseInt(e,10):void 0};M.getPenaltyN1=function(e){let t=e.size,n=0,s=0,i=0,o=null,a=null;for(let c=0;c<t;c++){s=i=0,o=a=null;for(let u=0;u<t;u++){let l=e.get(c,u);l===o?s++:(s>=5&&(n+=ct.N1+(s-5)),o=l,s=1),l=e.get(u,c),l===a?i++:(i>=5&&(n+=ct.N1+(i-5)),a=l,i=1)}s>=5&&(n+=ct.N1+(s-5)),i>=5&&(n+=ct.N1+(i-5))}return n};M.getPenaltyN2=function(e){let t=e.size,n=0;for(let s=0;s<t-1;s++)for(let i=0;i<t-1;i++){let o=e.get(s,i)+e.get(s,i+1)+e.get(s+1,i)+e.get(s+1,i+1);(o===4||o===0)&&n++}return n*ct.N2};M.getPenaltyN3=function(e){let t=e.size,n=0,s=0,i=0;for(let o=0;o<t;o++){s=i=0;for(let a=0;a<t;a++)s=s<<1&2047|e.get(o,a),a>=10&&(s===1488||s===93)&&n++,i=i<<1&2047|e.get(a,o),a>=10&&(i===1488||i===93)&&n++}return n*ct.N3};M.getPenaltyN4=function(e){let t=0,n=e.data.length;for(let i=0;i<n;i++)t+=e.data[i];return Math.abs(Math.ceil(t*100/n/5)-10)*ct.N4};function mf(r,e,t){switch(r){case M.Patterns.PATTERN000:return(e+t)%2===0;case M.Patterns.PATTERN001:return e%2===0;case M.Patterns.PATTERN010:return t%3===0;case M.Patterns.PATTERN011:return(e+t)%3===0;case M.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case M.Patterns.PATTERN101:return e*t%2+e*t%3===0;case M.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case M.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}M.applyMask=function(e,t){let n=t.size;for(let s=0;s<n;s++)for(let i=0;i<n;i++)t.isReserved(i,s)||t.xor(i,s,mf(e,i,s))};M.getBestMask=function(e,t){let n=Object.keys(M.Patterns).length,s=0,i=1/0;for(let o=0;o<n;o++){t(o),M.applyMask(o,e);let a=M.getPenaltyN1(e)+M.getPenaltyN2(e)+M.getPenaltyN3(e)+M.getPenaltyN4(e);M.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var gi=C(yi=>{"use strict";var ze=_n(),On=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],zn=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];yi.getBlocksCount=function(e,t){switch(t){case ze.L:return On[(e-1)*4+0];case ze.M:return On[(e-1)*4+1];case ze.Q:return On[(e-1)*4+2];case ze.H:return On[(e-1)*4+3];default:return}};yi.getTotalCodewordsCount=function(e,t){switch(t){case ze.L:return zn[(e-1)*4+0];case ze.M:return zn[(e-1)*4+1];case ze.Q:return zn[(e-1)*4+2];case ze.H:return zn[(e-1)*4+3];default:return}}});var oc=C(Hn=>{"use strict";var Cr=new Uint8Array(512),Wn=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)Cr[t]=e,Wn[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)Cr[t]=Cr[t-255]})();Hn.log=function(e){if(e<1)throw new Error("log("+e+")");return Wn[e]};Hn.exp=function(e){return Cr[e]};Hn.mul=function(e,t){return e===0||t===0?0:Cr[Wn[e]+Wn[t]]}});var ac=C(Pr=>{"use strict";var wi=oc();Pr.mul=function(e,t){let n=new Uint8Array(e.length+t.length-1);for(let s=0;s<e.length;s++)for(let i=0;i<t.length;i++)n[s+i]^=wi.mul(e[s],t[i]);return n};Pr.mod=function(e,t){let n=new Uint8Array(e);for(;n.length-t.length>=0;){let s=n[0];for(let o=0;o<t.length;o++)n[o]^=wi.mul(t[o],s);let i=0;for(;i<n.length&&n[i]===0;)i++;n=n.slice(i)}return n};Pr.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let n=0;n<e;n++)t=Pr.mul(t,new Uint8Array([1,wi.exp(n)]));return t}});var uc=C((lw,lc)=>{"use strict";var cc=ac();function bi(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}bi.prototype.initialize=function(e){this.degree=e,this.genPoly=cc.generateECPolynomial(this.degree)};bi.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let n=cc.mod(t,this.genPoly),s=this.degree-n.length;if(s>0){let i=new Uint8Array(this.degree);return i.set(n,s),i}return n};lc.exports=bi});var Si=C(dc=>{"use strict";dc.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Ai=C(Re=>{"use strict";var hc="[0-9]+",yf="[A-Z $%*+\\-./:]+",Ir="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Ir=Ir.replace(/u/g,"\\u");var gf="(?:(?![A-Z0-9 $%*+\\-./:]|"+Ir+`)(?:.|[\r
2
+ ]))+`;Re.KANJI=new RegExp(Ir,"g");Re.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Re.BYTE=new RegExp(gf,"g");Re.NUMERIC=new RegExp(hc,"g");Re.ALPHANUMERIC=new RegExp(yf,"g");var wf=new RegExp("^"+Ir+"$"),bf=new RegExp("^"+hc+"$"),Sf=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Re.testKanji=function(e){return wf.test(e)};Re.testNumeric=function(e){return bf.test(e)};Re.testAlphanumeric=function(e){return Sf.test(e)}});var We=C(O=>{"use strict";var Af=Si(),xi=Ai();O.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};O.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};O.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};O.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};O.MIXED={bit:-1};O.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Af.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};O.getBestModeForData=function(e){return xi.testNumeric(e)?O.NUMERIC:xi.testAlphanumeric(e)?O.ALPHANUMERIC:xi.testKanji(e)?O.KANJI:O.BYTE};O.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};O.isValid=function(e){return e&&e.bit&&e.ccBits};function xf(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return O.NUMERIC;case"alphanumeric":return O.ALPHANUMERIC;case"kanji":return O.KANJI;case"byte":return O.BYTE;default:throw new Error("Unknown mode: "+r)}}O.from=function(e,t){if(O.isValid(e))return e;try{return xf(e)}catch{return t}}});var gc=C(lt=>{"use strict";var $n=Oe(),vf=gi(),fc=_n(),He=We(),vi=Si(),mc=7973,pc=$n.getBCHDigit(mc);function kf(r,e,t){for(let n=1;n<=40;n++)if(e<=lt.getCapacity(n,t,r))return n}function yc(r,e){return He.getCharCountIndicator(r,e)+4}function Ef(r,e){let t=0;return r.forEach(function(n){let s=yc(n.mode,e);t+=s+n.getBitsLength()}),t}function Cf(r,e){for(let t=1;t<=40;t++)if(Ef(r,t)<=lt.getCapacity(t,e,He.MIXED))return t}lt.from=function(e,t){return vi.isValid(e)?parseInt(e,10):t};lt.getCapacity=function(e,t,n){if(!vi.isValid(e))throw new Error("Invalid QR Code version");typeof n>"u"&&(n=He.BYTE);let s=$n.getSymbolTotalCodewords(e),i=vf.getTotalCodewordsCount(e,t),o=(s-i)*8;if(n===He.MIXED)return o;let a=o-yc(n,e);switch(n){case He.NUMERIC:return Math.floor(a/10*3);case He.ALPHANUMERIC:return Math.floor(a/11*2);case He.KANJI:return Math.floor(a/13);case He.BYTE:default:return Math.floor(a/8)}};lt.getBestVersionForData=function(e,t){let n,s=fc.from(t,fc.M);if(Array.isArray(e)){if(e.length>1)return Cf(e,s);if(e.length===0)return 1;n=e[0]}else n=e;return kf(n.mode,n.getLength(),s)};lt.getEncodedBits=function(e){if(!vi.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;$n.getBCHDigit(t)-pc>=0;)t^=mc<<$n.getBCHDigit(t)-pc;return e<<12|t}});var Ac=C(Sc=>{"use strict";var ki=Oe(),bc=1335,Pf=21522,wc=ki.getBCHDigit(bc);Sc.getEncodedBits=function(e,t){let n=e.bit<<3|t,s=n<<10;for(;ki.getBCHDigit(s)-wc>=0;)s^=bc<<ki.getBCHDigit(s)-wc;return(n<<10|s)^Pf}});var vc=C((mw,xc)=>{"use strict";var If=We();function Tt(r){this.mode=If.NUMERIC,this.data=r.toString()}Tt.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};Tt.prototype.getLength=function(){return this.data.length};Tt.prototype.getBitsLength=function(){return Tt.getBitsLength(this.data.length)};Tt.prototype.write=function(e){let t,n,s;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),s=parseInt(n,10),e.put(s,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),s=parseInt(n,10),e.put(s,i*3+1))};xc.exports=Tt});var Ec=C((yw,kc)=>{"use strict";var Bf=We(),Ei=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Rt(r){this.mode=Bf.ALPHANUMERIC,this.data=r}Rt.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Rt.prototype.getLength=function(){return this.data.length};Rt.prototype.getBitsLength=function(){return Rt.getBitsLength(this.data.length)};Rt.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=Ei.indexOf(this.data[t])*45;n+=Ei.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(Ei.indexOf(this.data[t]),6)};kc.exports=Rt});var Pc=C((gw,Cc)=>{"use strict";var Tf=We();function Dt(r){this.mode=Tf.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}Dt.getBitsLength=function(e){return e*8};Dt.prototype.getLength=function(){return this.data.length};Dt.prototype.getBitsLength=function(){return Dt.getBitsLength(this.data.length)};Dt.prototype.write=function(r){for(let e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};Cc.exports=Dt});var Bc=C((ww,Ic)=>{"use strict";var Rf=We(),Df=Oe();function Ft(r){this.mode=Rf.KANJI,this.data=r}Ft.getBitsLength=function(e){return e*13};Ft.prototype.getLength=function(){return this.data.length};Ft.prototype.getBitsLength=function(){return Ft.getBitsLength(this.data.length)};Ft.prototype.write=function(r){let e;for(e=0;e<this.data.length;e++){let t=Df.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
3
+ Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};Ic.exports=Ft});var Tc=C((bw,Ci)=>{"use strict";var Br={single_source_shortest_paths:function(r,e,t){var n={},s={};s[e]=0;var i=Br.PriorityQueue.make();i.push(e,0);for(var o,a,c,u,l,d,h,m,y;!i.empty();){o=i.pop(),a=o.value,u=o.cost,l=r[a]||{};for(c in l)l.hasOwnProperty(c)&&(d=l[c],h=u+d,m=s[c],y=typeof s[c]>"u",(y||m>h)&&(s[c]=h,i.push(c,h),n[c]=a))}if(typeof t<"u"&&typeof s[t]>"u"){var w=["Could not find a path from ",e," to ",t,"."].join("");throw new Error(w)}return n},extract_shortest_path_from_predecessor_list:function(r,e){for(var t=[],n=e,s;n;)t.push(n),s=r[n],n=r[n];return t.reverse(),t},find_path:function(r,e,t){var n=Br.single_source_shortest_paths(r,e,t);return Br.extract_shortest_path_from_predecessor_list(n,t)},PriorityQueue:{make:function(r){var e=Br.PriorityQueue,t={},n;r=r||{};for(n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t.queue=[],t.sorter=r.sorter||e.default_sorter,t},default_sorter:function(r,e){return r.cost-e.cost},push:function(r,e){var t={value:r,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof Ci<"u"&&(Ci.exports=Br)});var _c=C(Mt=>{"use strict";var I=We(),Fc=vc(),Mc=Ec(),Uc=Pc(),Nc=Bc(),Tr=Ai(),qn=Oe(),Ff=Tc();function Rc(r){return unescape(encodeURIComponent(r)).length}function Rr(r,e,t){let n=[],s;for(;(s=r.exec(t))!==null;)n.push({data:s[0],index:s.index,mode:e,length:s[0].length});return n}function Lc(r){let e=Rr(Tr.NUMERIC,I.NUMERIC,r),t=Rr(Tr.ALPHANUMERIC,I.ALPHANUMERIC,r),n,s;return qn.isKanjiModeEnabled()?(n=Rr(Tr.BYTE,I.BYTE,r),s=Rr(Tr.KANJI,I.KANJI,r)):(n=Rr(Tr.BYTE_KANJI,I.BYTE,r),s=[]),e.concat(t,n,s).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function Pi(r,e){switch(e){case I.NUMERIC:return Fc.getBitsLength(r);case I.ALPHANUMERIC:return Mc.getBitsLength(r);case I.KANJI:return Nc.getBitsLength(r);case I.BYTE:return Uc.getBitsLength(r)}}function Mf(r){return r.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function Uf(r){let e=[];for(let t=0;t<r.length;t++){let n=r[t];switch(n.mode){case I.NUMERIC:e.push([n,{data:n.data,mode:I.ALPHANUMERIC,length:n.length},{data:n.data,mode:I.BYTE,length:n.length}]);break;case I.ALPHANUMERIC:e.push([n,{data:n.data,mode:I.BYTE,length:n.length}]);break;case I.KANJI:e.push([n,{data:n.data,mode:I.BYTE,length:Rc(n.data)}]);break;case I.BYTE:e.push([{data:n.data,mode:I.BYTE,length:Rc(n.data)}])}}return e}function Nf(r,e){let t={},n={start:{}},s=["start"];for(let i=0;i<r.length;i++){let o=r[i],a=[];for(let c=0;c<o.length;c++){let u=o[c],l=""+i+c;a.push(l),t[l]={node:u,lastCount:0},n[l]={};for(let d=0;d<s.length;d++){let h=s[d];t[h]&&t[h].node.mode===u.mode?(n[h][l]=Pi(t[h].lastCount+u.length,u.mode)-Pi(t[h].lastCount,u.mode),t[h].lastCount+=u.length):(t[h]&&(t[h].lastCount=u.length),n[h][l]=Pi(u.length,u.mode)+4+I.getCharCountIndicator(u.mode,e))}}s=a}for(let i=0;i<s.length;i++)n[s[i]].end=0;return{map:n,table:t}}function Dc(r,e){let t,n=I.getBestModeForData(r);if(t=I.from(e,n),t!==I.BYTE&&t.bit<n.bit)throw new Error('"'+r+'" cannot be encoded with mode '+I.toString(t)+`.
4
+ Suggested mode is: `+I.toString(n));switch(t===I.KANJI&&!qn.isKanjiModeEnabled()&&(t=I.BYTE),t){case I.NUMERIC:return new Fc(r);case I.ALPHANUMERIC:return new Mc(r);case I.KANJI:return new Nc(r);case I.BYTE:return new Uc(r)}}Mt.fromArray=function(e){return e.reduce(function(t,n){return typeof n=="string"?t.push(Dc(n,null)):n.data&&t.push(Dc(n.data,n.mode)),t},[])};Mt.fromString=function(e,t){let n=Lc(e,qn.isKanjiModeEnabled()),s=Uf(n),i=Nf(s,t),o=Ff.find_path(i.map,"start","end"),a=[];for(let c=1;c<o.length-1;c++)a.push(i.table[o[c]].node);return Mt.fromArray(Mf(a))};Mt.rawSplit=function(e){return Mt.fromArray(Lc(e,qn.isKanjiModeEnabled()))}});var Oc=C(Kc=>{"use strict";var Gn=Oe(),Ii=_n(),Lf=Xa(),_f=ec(),Kf=tc(),Of=sc(),Ri=ic(),Di=gi(),zf=uc(),Vn=gc(),Wf=Ac(),Hf=We(),Bi=_c();function $f(r,e){let t=r.size,n=Of.getPositions(e);for(let s=0;s<n.length;s++){let i=n[s][0],o=n[s][1];for(let a=-1;a<=7;a++)if(!(i+a<=-1||t<=i+a))for(let c=-1;c<=7;c++)o+c<=-1||t<=o+c||(a>=0&&a<=6&&(c===0||c===6)||c>=0&&c<=6&&(a===0||a===6)||a>=2&&a<=4&&c>=2&&c<=4?r.set(i+a,o+c,!0,!0):r.set(i+a,o+c,!1,!0))}}function qf(r){let e=r.size;for(let t=8;t<e-8;t++){let n=t%2===0;r.set(t,6,n,!0),r.set(6,t,n,!0)}}function Vf(r,e){let t=Kf.getPositions(e);for(let n=0;n<t.length;n++){let s=t[n][0],i=t[n][1];for(let o=-2;o<=2;o++)for(let a=-2;a<=2;a++)o===-2||o===2||a===-2||a===2||o===0&&a===0?r.set(s+o,i+a,!0,!0):r.set(s+o,i+a,!1,!0)}}function Gf(r,e){let t=r.size,n=Vn.getEncodedBits(e),s,i,o;for(let a=0;a<18;a++)s=Math.floor(a/3),i=a%3+t-8-3,o=(n>>a&1)===1,r.set(s,i,o,!0),r.set(i,s,o,!0)}function Ti(r,e,t){let n=r.size,s=Wf.getEncodedBits(e,t),i,o;for(i=0;i<15;i++)o=(s>>i&1)===1,i<6?r.set(i,8,o,!0):i<8?r.set(i+1,8,o,!0):r.set(n-15+i,8,o,!0),i<8?r.set(8,n-i-1,o,!0):i<9?r.set(8,15-i-1+1,o,!0):r.set(8,15-i-1,o,!0);r.set(n-8,8,1,!0)}function Yf(r,e){let t=r.size,n=-1,s=t-1,i=7,o=0;for(let a=t-1;a>0;a-=2)for(a===6&&a--;;){for(let c=0;c<2;c++)if(!r.isReserved(s,a-c)){let u=!1;o<e.length&&(u=(e[o]>>>i&1)===1),r.set(s,a-c,u),i--,i===-1&&(o++,i=7)}if(s+=n,s<0||t<=s){s-=n,n=-n;break}}}function jf(r,e,t){let n=new Lf;t.forEach(function(c){n.put(c.mode.bit,4),n.put(c.getLength(),Hf.getCharCountIndicator(c.mode,r)),c.write(n)});let s=Gn.getSymbolTotalCodewords(r),i=Di.getTotalCodewordsCount(r,e),o=(s-i)*8;for(n.getLengthInBits()+4<=o&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(0);let a=(o-n.getLengthInBits())/8;for(let c=0;c<a;c++)n.put(c%2?17:236,8);return Jf(n,r,e)}function Jf(r,e,t){let n=Gn.getSymbolTotalCodewords(e),s=Di.getTotalCodewordsCount(e,t),i=n-s,o=Di.getBlocksCount(e,t),a=n%o,c=o-a,u=Math.floor(n/o),l=Math.floor(i/o),d=l+1,h=u-l,m=new zf(h),y=0,w=new Array(o),S=new Array(o),b=0,A=new Uint8Array(r.buffer);for(let F=0;F<o;F++){let H=F<c?l:d;w[F]=A.slice(y,y+H),S[F]=m.encode(w[F]),y+=H,b=Math.max(b,H)}let v=new Uint8Array(n),B=0,E,U;for(E=0;E<b;E++)for(U=0;U<o;U++)E<w[U].length&&(v[B++]=w[U][E]);for(E=0;E<h;E++)for(U=0;U<o;U++)v[B++]=S[U][E];return v}function Qf(r,e,t,n){let s;if(Array.isArray(r))s=Bi.fromArray(r);else if(typeof r=="string"){let u=e;if(!u){let l=Bi.rawSplit(r);u=Vn.getBestVersionForData(l,t)}s=Bi.fromString(r,u||40)}else throw new Error("Invalid data");let i=Vn.getBestVersionForData(s,t);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=i;else if(e<i)throw new Error(`
5
5
  The chosen QR Code version cannot contain this amount of data.
6
6
  Minimum version required to store current data is: `+i+`.
7
- `);let o=If(e,t,s),a=zn.getSymbolSize(e),c=new yf(a);return vf(c,e),kf(c),Ef(c,e),wi(c,t,0),e>=7&&Cf(c,e),Pf(c,o),isNaN(n)&&(n=bi.getBestMask(c,wi.bind(null,c,t))),bi.applyMask(n,c),wi(c,t,n),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:n,segments:s}}Ec.create=function(e,t){if(typeof e>"u"||e==="")throw new Error("No input text");let n=gi.M,s,i;return typeof t<"u"&&(n=gi.from(t.errorCorrectionLevel,gi.M),s=On.from(t.version),i=bi.from(t.maskPattern),t.toSJISFunc&&zn.setToSJISFunction(t.toSJISFunc)),Tf(e,s,n,i)}});var Ai=E(it=>{"use strict";function Pc(r){if(typeof r=="number"&&(r=r.toString()),typeof r!="string")throw new Error("Color should be defined as hex string");let e=r.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+r);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(n){return[n,n]}))),e.length===6&&e.push("F","F");let t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:t&255,hex:"#"+e.slice(0,6).join("")}}it.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,n=e.width&&e.width>=21?e.width:void 0,s=e.scale||4;return{width:n,scale:n?4:s,margin:t,color:{dark:Pc(e.color.dark||"#000000ff"),light:Pc(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};it.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};it.getImageWidth=function(e,t){let n=it.getScale(e,t);return Math.floor((e+t.margin*2)*n)};it.qrToImageData=function(e,t,n){let s=t.modules.size,i=t.modules.data,o=it.getScale(s,n),a=Math.floor((s+n.margin*2)*o),c=n.margin*o,l=[n.color.light,n.color.dark];for(let u=0;u<a;u++)for(let d=0;d<a;d++){let h=(u*a+d)*4,p=n.color.light;if(u>=c&&d>=c&&u<a-c&&d<a-c){let g=Math.floor((u-c)/o),w=Math.floor((d-c)/o);p=l[i[g*s+w]?1:0]}e[h++]=p.r,e[h++]=p.g,e[h++]=p.b,e[h]=p.a}}});var Ic=E(Wn=>{"use strict";var xi=Ai();function Rf(r,e,t){r.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}function Df(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Wn.render=function(e,t,n){let s=n,i=t;typeof s>"u"&&(!t||!t.getContext)&&(s=t,t=void 0),t||(i=Df()),s=xi.getOptions(s);let o=xi.getImageWidth(e.modules.size,s),a=i.getContext("2d"),c=a.createImageData(o,o);return xi.qrToImageData(c.data,e,s),Rf(a,i,o),a.putImageData(c,0,0),i};Wn.renderToDataURL=function(e,t,n){let s=n;typeof s>"u"&&(!t||!t.getContext)&&(s=t,t=void 0),s||(s={});let i=Wn.render(e,t,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var Rc=E(Tc=>{"use strict";var Ff=Ai();function Bc(r,e){let t=r.a/255,n=e+'="'+r.hex+'"';return t<1?n+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':n}function vi(r,e,t){let n=r+e;return typeof t<"u"&&(n+=" "+t),n}function Mf(r,e,t){let n="",s=0,i=!1,o=0;for(let a=0;a<r.length;a++){let c=Math.floor(a%e),l=Math.floor(a/e);!c&&!i&&(i=!0),r[a]?(o++,a>0&&c>0&&r[a-1]||(n+=i?vi("M",c+t,.5+l+t):vi("m",s,0),s=0,i=!1),c+1<e&&r[a+1]||(n+=vi("h",o),o=0)):s++}return n}Tc.render=function(e,t,n){let s=Ff.getOptions(t),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,c=s.color.light.a?"<path "+Bc(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+Bc(s.color.dark,"stroke")+' d="'+Mf(o,i,s.margin)+'"/>',u='viewBox="0 0 '+a+" "+a+'"',h='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+u+' shape-rendering="crispEdges">'+c+l+`</svg>
8
- `;return typeof n=="function"&&n(null,h),h}});var Br=E(Ir=>{"use strict";var Uf=Ua(),ki=Cc(),Dc=Ic(),Nf=Rc();function Ei(r,e,t,n,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!Uf())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(s=t,t=e,e=n=void 0):o===3&&(e.getContext&&typeof s>"u"?(s=n,n=void 0):(s=n,n=t,t=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(t=e,e=n=void 0):o===2&&!e.getContext&&(n=t,t=e,e=void 0),new Promise(function(c,l){try{let u=ki.create(t,n);c(r(u,e,n))}catch(u){l(u)}})}try{let c=ki.create(t,n);s(null,r(c,e,n))}catch(c){s(c)}}Ir.create=ki.create;Ir.toCanvas=Ei.bind(null,Dc.render);Ir.toDataURL=Ei.bind(null,Dc.renderToDataURL);Ir.toString=Ei.bind(null,function(r,e,t){return Nf.render(r,t)})});var Ft,Ci=m(()=>{"use strict";_e();Ft=class{async createQRBackup(e,t,n={}){let s=n.errorCorrection||"H",i;if(n.password){let l=crypto.getRandomValues(new Uint8Array(32)),u=await tt(e,n.password,l);i={version:1,type:"encrypted",data:u.encrypted,iv:u.iv,salt:u.salt,iterations:u.iterations,checksum:await ne(t)}}else i={version:1,type:"plain",data:e,checksum:await ne(t)};let o=JSON.stringify(i),a=await this.generateQRCode(o,s),c=this.getInstructions(t,!!n.password);return{qrCodeDataURL:a,rawData:o,instructions:c}}async generateQRCode(e,t){try{return await(await Promise.resolve().then(()=>W(Br()))).default.toDataURL(e,{errorCorrectionLevel:t,width:512,margin:2})}catch{return this.createFallbackQRDataURL(e)}}createFallbackQRDataURL(e){if(typeof document>"u")return`data:text/plain;base64,${Buffer.from(e).toString("base64")}`;let t=document.createElement("canvas");t.width=512,t.height=512;let n=t.getContext("2d");if(!n)throw new Error("Canvas not supported");n.fillStyle="white",n.fillRect(0,0,512,512),n.fillStyle="black",n.font="12px monospace",n.textAlign="center",n.textBaseline="middle";let s=this.wrapText(e,50),i=14,o=256-s.length*i/2;return s.forEach((a,c)=>{n.fillText(a,256,o+c*i)}),n.font="bold 16px sans-serif",n.fillText('Install "qrcode" package for QR codes',256,480),t.toDataURL("image/png")}wrapText(e,t){let n=[];for(let s=0;s<e.length;s+=t)n.push(e.substring(s,s+t));return n}getInstructions(e,t){return`
7
+ `);let o=jf(e,t,s),a=Gn.getSymbolSize(e),c=new _f(a);return $f(c,e),qf(c),Vf(c,e),Ti(c,t,0),e>=7&&Gf(c,e),Yf(c,o),isNaN(n)&&(n=Ri.getBestMask(c,Ti.bind(null,c,t))),Ri.applyMask(n,c),Ti(c,t,n),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:n,segments:s}}Kc.create=function(e,t){if(typeof e>"u"||e==="")throw new Error("No input text");let n=Ii.M,s,i;return typeof t<"u"&&(n=Ii.from(t.errorCorrectionLevel,Ii.M),s=Vn.from(t.version),i=Ri.from(t.maskPattern),t.toSJISFunc&&Gn.setToSJISFunction(t.toSJISFunc)),Qf(e,s,n,i)}});var Fi=C(ut=>{"use strict";function zc(r){if(typeof r=="number"&&(r=r.toString()),typeof r!="string")throw new Error("Color should be defined as hex string");let e=r.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+r);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(n){return[n,n]}))),e.length===6&&e.push("F","F");let t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:t&255,hex:"#"+e.slice(0,6).join("")}}ut.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,n=e.width&&e.width>=21?e.width:void 0,s=e.scale||4;return{width:n,scale:n?4:s,margin:t,color:{dark:zc(e.color.dark||"#000000ff"),light:zc(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};ut.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};ut.getImageWidth=function(e,t){let n=ut.getScale(e,t);return Math.floor((e+t.margin*2)*n)};ut.qrToImageData=function(e,t,n){let s=t.modules.size,i=t.modules.data,o=ut.getScale(s,n),a=Math.floor((s+n.margin*2)*o),c=n.margin*o,u=[n.color.light,n.color.dark];for(let l=0;l<a;l++)for(let d=0;d<a;d++){let h=(l*a+d)*4,m=n.color.light;if(l>=c&&d>=c&&l<a-c&&d<a-c){let y=Math.floor((l-c)/o),w=Math.floor((d-c)/o);m=u[i[y*s+w]?1:0]}e[h++]=m.r,e[h++]=m.g,e[h++]=m.b,e[h]=m.a}}});var Wc=C(Yn=>{"use strict";var Mi=Fi();function Xf(r,e,t){r.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}function Zf(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Yn.render=function(e,t,n){let s=n,i=t;typeof s>"u"&&(!t||!t.getContext)&&(s=t,t=void 0),t||(i=Zf()),s=Mi.getOptions(s);let o=Mi.getImageWidth(e.modules.size,s),a=i.getContext("2d"),c=a.createImageData(o,o);return Mi.qrToImageData(c.data,e,s),Xf(a,i,o),a.putImageData(c,0,0),i};Yn.renderToDataURL=function(e,t,n){let s=n;typeof s>"u"&&(!t||!t.getContext)&&(s=t,t=void 0),s||(s={});let i=Yn.render(e,t,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var qc=C($c=>{"use strict";var ep=Fi();function Hc(r,e){let t=r.a/255,n=e+'="'+r.hex+'"';return t<1?n+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':n}function Ui(r,e,t){let n=r+e;return typeof t<"u"&&(n+=" "+t),n}function tp(r,e,t){let n="",s=0,i=!1,o=0;for(let a=0;a<r.length;a++){let c=Math.floor(a%e),u=Math.floor(a/e);!c&&!i&&(i=!0),r[a]?(o++,a>0&&c>0&&r[a-1]||(n+=i?Ui("M",c+t,.5+u+t):Ui("m",s,0),s=0,i=!1),c+1<e&&r[a+1]||(n+=Ui("h",o),o=0)):s++}return n}$c.render=function(e,t,n){let s=ep.getOptions(t),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,c=s.color.light.a?"<path "+Hc(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",u="<path "+Hc(s.color.dark,"stroke")+' d="'+tp(o,i,s.margin)+'"/>',l='viewBox="0 0 '+a+" "+a+'"',h='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+l+' shape-rendering="crispEdges">'+c+u+`</svg>
8
+ `;return typeof n=="function"&&n(null,h),h}});var Fr=C(Dr=>{"use strict";var rp=ja(),Ni=Oc(),Vc=Wc(),np=qc();function Li(r,e,t,n,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!rp())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(s=t,t=e,e=n=void 0):o===3&&(e.getContext&&typeof s>"u"?(s=n,n=void 0):(s=n,n=t,t=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(t=e,e=n=void 0):o===2&&!e.getContext&&(n=t,t=e,e=void 0),new Promise(function(c,u){try{let l=Ni.create(t,n);c(r(l,e,n))}catch(l){u(l)}})}try{let c=Ni.create(t,n);s(null,r(c,e,n))}catch(c){s(c)}}Dr.create=Ni.create;Dr.toCanvas=Li.bind(null,Vc.render);Dr.toDataURL=Li.bind(null,Vc.renderToDataURL);Dr.toString=Li.bind(null,function(r,e,t){return np.render(r,t)})});var Ut,_i=p(()=>{"use strict";Ke();Ut=class{async createQRBackup(e,t,n={}){let s=n.errorCorrection||"H",i;if(n.password){let u=crypto.getRandomValues(new Uint8Array(32)),l=await ot(e,n.password,u);i={version:1,type:"encrypted",data:l.encrypted,iv:l.iv,salt:l.salt,iterations:l.iterations,checksum:await V(t)}}else i={version:1,type:"plain",data:e,checksum:await V(t)};let o=JSON.stringify(i),a=await this.generateQRCode(o,s),c=this.getInstructions(t,!!n.password);return{qrCodeDataURL:a,rawData:o,instructions:c}}async generateQRCode(e,t){try{return await(await Promise.resolve().then(()=>z(Fr()))).default.toDataURL(e,{errorCorrectionLevel:t,width:512,margin:2})}catch{return this.createFallbackQRDataURL(e)}}createFallbackQRDataURL(e){if(typeof document>"u")return`data:text/plain;base64,${Buffer.from(e).toString("base64")}`;let t=document.createElement("canvas");t.width=512,t.height=512;let n=t.getContext("2d");if(!n)throw new Error("Canvas not supported");n.fillStyle="white",n.fillRect(0,0,512,512),n.fillStyle="black",n.font="12px monospace",n.textAlign="center",n.textBaseline="middle";let s=this.wrapText(e,50),i=14,o=256-s.length*i/2;return s.forEach((a,c)=>{n.fillText(a,256,o+c*i)}),n.font="bold 16px sans-serif",n.fillText('Install "qrcode" package for QR codes',256,480),t.toDataURL("image/png")}wrapText(e,t){let n=[];for(let s=0;s<e.length;s+=t)n.push(e.substring(s,s+t));return n}getInstructions(e,t){return`
9
9
  W3PK QR CODE BACKUP
10
10
  ==================
11
11
 
@@ -81,7 +81,7 @@ If QR code is lost/damaged, you can still recover using:
81
81
 
82
82
  Generated by w3pk Recovery System
83
83
  https://docs.w3pk.org/recovery
84
- `}async restoreFromQR(e,t){let n=JSON.parse(e);if(n.version!==1)throw new Error("Unsupported QR backup version");let s;if(n.type==="encrypted"){if(!t)throw new Error("Password required for encrypted QR backup");let{decryptWithPassword:c}=await Promise.resolve().then(()=>(_e(),ri));s=await c(n.data,t,n.salt,n.iv,n.iterations)}else if(n.type==="plain")s=n.data;else throw new Error("Unknown QR backup type");let{Wallet:i}=await import("ethers"),o=i.fromPhrase(s);if(await ne(o.address)!==n.checksum)throw new Error("Address checksum mismatch - corrupted QR or wrong password");return{mnemonic:s,ethereumAddress:o.address}}}});function Lf(){let r=new Uint8Array(1);return crypto.getRandomValues(r),r[0]}function Hn(r,e,t){if(e>t)throw new Error("Threshold cannot be greater than total shares");if(e<2)throw new Error("Threshold must be at least 2");if(t>255)throw new Error("Cannot create more than 255 shares");let n=[];for(let s=0;s<t;s++)n[s]=new Uint8Array(r.length+1),n[s][0]=s+1;for(let s=0;s<r.length;s++){let o=[r[s]];for(let a=1;a<e;a++)o.push(Lf());for(let a=0;a<t;a++){let c=a+1,l=$n.evaluatePolynomial(o,c);n[a][s+1]=l}}return n}function qn(r,e){if(r.length<e)throw new Error(`Need at least ${e} shares to recover secret, got ${r.length}`);let t=r.slice(0,e),n=t[0].length;for(let o of t)if(o.length!==n)throw new Error("All shares must have the same length");let s=n-1,i=new Uint8Array(s);for(let o=0;o<s;o++){let a=[];for(let c of t)a.push({x:c[0],y:c[o+1]});i[o]=$n.interpolate(a)}return i}function Vn(r){return new TextEncoder().encode(r)}function Gn(r){return new TextDecoder().decode(r)}function Yn(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function jn(r){let e=new Uint8Array(r.length/2);for(let t=0;t<r.length;t+=2)e[t/2]=parseInt(r.substring(t,t+2),16);return e}var $e,$n,Jn=m(()=>{"use strict";$e=class $e{static multiply(e,t){return e===0||t===0?0:this.EXP_TABLE[(this.LOG_TABLE[e]+this.LOG_TABLE[t])%255]}static divide(e,t){if(t===0)throw new Error("Division by zero in GF(256)");return e===0?0:this.EXP_TABLE[(this.LOG_TABLE[e]-this.LOG_TABLE[t]+255)%255]}static add(e,t){return e^t}static evaluatePolynomial(e,t){let n=0;for(let s=e.length-1;s>=0;s--)n=this.add(this.multiply(n,t),e[s]);return n}static interpolate(e){let t=0;for(let n=0;n<e.length;n++){let s=e[n].y,i=1;for(let o=0;o<e.length;o++)n!==o&&(s=this.multiply(s,e[o].x),i=this.multiply(i,this.add(e[n].x,e[o].x)));t=this.add(t,this.divide(s,i))}return t}};$e.LOG_TABLE=[],$e.EXP_TABLE=[],(()=>{let e=(n,s)=>{let i=0;for(let o=0;o<8;o++){s&1&&(i^=n);let a=n&128;n<<=1,a&&(n^=283),s>>=1}return i&255},t=1;for(let n=0;n<255;n++)$e.EXP_TABLE[n]=t,$e.LOG_TABLE[t]=n,t=e(t,3);$e.EXP_TABLE[255]=$e.EXP_TABLE[0]})();$n=$e});var Fc,ot,Pi=m(()=>{"use strict";Jn();Fc=new Map,ot=class{constructor(){this.storageKey="w3pk_social_recovery"}getItem(e){return typeof localStorage<"u"?localStorage.getItem(e):Fc.get(e)||null}setItem(e,t){typeof localStorage<"u"?localStorage.setItem(e,t):Fc.set(e,t)}async setupSocialRecovery(e,t,n,s){if(s>n.length)throw new Error("Threshold cannot be greater than number of guardians");if(s<2)throw new Error("Threshold must be at least 2");if(n.length>255)throw new Error("Cannot have more than 255 guardians");let i=Vn(e),o=Hn(i,s,n.length),a=n.map((l,u)=>({id:crypto.randomUUID(),name:l.name,email:l.email,phone:l.phone,shareEncrypted:Yn(o[u]),status:"pending",addedAt:new Date().toISOString()})),c={threshold:s,totalGuardians:n.length,guardians:a,createdAt:new Date().toISOString(),ethereumAddress:t};return this.setItem(this.storageKey,JSON.stringify(c)),a}getSocialRecoveryConfig(){let e=this.getItem(this.storageKey);if(!e)return null;try{return JSON.parse(e)}catch{return null}}async generateGuardianInvite(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.findIndex(c=>c.id===e.id);if(n===-1)throw new Error("Guardian not found");let s={version:1,guardianId:e.id,guardianName:e.name,guardianIndex:n+1,totalGuardians:t.totalGuardians,threshold:t.threshold,share:e.shareEncrypted,ethereumAddress:t.ethereumAddress,createdAt:t.createdAt},i=JSON.stringify(s),o=await this.generateQRCode(i),a=this.getGuardianExplainer(e.name,n+1,t.totalGuardians,t.threshold);return{guardianId:e.id,qrCode:o,shareCode:i,explainer:a}}async generateQRCode(e){try{return await(await Promise.resolve().then(()=>W(Br()))).toDataURL(e,{errorCorrectionLevel:"H",width:512,margin:2})}catch{return this.createPlaceholderQR(e)}}createPlaceholderQR(e){if(typeof document>"u")return`data:text/plain;base64,${Buffer.from(e).toString("base64")}`;let t=document.createElement("canvas");t.width=512,t.height=512;let n=t.getContext("2d");return n?(n.fillStyle="white",n.fillRect(0,0,512,512),n.fillStyle="black",n.font="bold 20px sans-serif",n.textAlign="center",n.textBaseline="middle",n.fillText("Guardian Recovery Share",256,100),n.font="14px monospace",n.fillText('Install "qrcode" for QR codes',256,480),n.font="10px monospace",this.wrapText(e.substring(0,200)+"...",60).forEach((i,o)=>{n.fillText(i,256,150+o*12)}),t.toDataURL("image/png")):""}wrapText(e,t){let n=[];for(let s=0;s<e.length;s+=t)n.push(e.substring(s,s+t));return n}getGuardianExplainer(e,t,n,s){return`
84
+ `}async restoreFromQR(e,t){let n=JSON.parse(e);if(n.version!==1)throw new Error("Unsupported QR backup version");let s;if(n.type==="encrypted"){if(!t)throw new Error("Password required for encrypted QR backup");let{decryptWithPassword:c}=await Promise.resolve().then(()=>(Ke(),pi));s=await c(n.data,t,n.salt,n.iv,n.iterations)}else if(n.type==="plain")s=n.data;else throw new Error("Unknown QR backup type");let{Wallet:i}=await import("ethers"),o=i.fromPhrase(s);if(await V(o.address)!==n.checksum)throw new Error("Address checksum mismatch - corrupted QR or wrong password");return{mnemonic:s,ethereumAddress:o.address}}}});function sp(){let r=new Uint8Array(1);return crypto.getRandomValues(r),r[0]}function Jn(r,e,t){if(e>t)throw new Error("Threshold cannot be greater than total shares");if(e<2)throw new Error("Threshold must be at least 2");if(t>255)throw new Error("Cannot create more than 255 shares");let n=[];for(let s=0;s<t;s++)n[s]=new Uint8Array(r.length+1),n[s][0]=s+1;for(let s=0;s<r.length;s++){let o=[r[s]];for(let a=1;a<e;a++)o.push(sp());for(let a=0;a<t;a++){let c=a+1,u=jn.evaluatePolynomial(o,c);n[a][s+1]=u}}return n}function Qn(r,e){if(r.length<e)throw new Error(`Need at least ${e} shares to recover secret, got ${r.length}`);let t=r.slice(0,e),n=t[0].length;for(let o of t)if(o.length!==n)throw new Error("All shares must have the same length");let s=n-1,i=new Uint8Array(s);for(let o=0;o<s;o++){let a=[];for(let c of t)a.push({x:c[0],y:c[o+1]});i[o]=jn.interpolate(a)}return i}function Xn(r){return new TextEncoder().encode(r)}function Zn(r){return new TextDecoder().decode(r)}function es(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function ts(r){let e=new Uint8Array(r.length/2);for(let t=0;t<r.length;t+=2)e[t/2]=parseInt(r.substring(t,t+2),16);return e}var $e,jn,rs=p(()=>{"use strict";$e=class $e{static multiply(e,t){return e===0||t===0?0:this.EXP_TABLE[(this.LOG_TABLE[e]+this.LOG_TABLE[t])%255]}static divide(e,t){if(t===0)throw new Error("Division by zero in GF(256)");return e===0?0:this.EXP_TABLE[(this.LOG_TABLE[e]-this.LOG_TABLE[t]+255)%255]}static add(e,t){return e^t}static evaluatePolynomial(e,t){let n=0;for(let s=e.length-1;s>=0;s--)n=this.add(this.multiply(n,t),e[s]);return n}static interpolate(e){let t=0;for(let n=0;n<e.length;n++){let s=e[n].y,i=1;for(let o=0;o<e.length;o++)n!==o&&(s=this.multiply(s,e[o].x),i=this.multiply(i,this.add(e[n].x,e[o].x)));t=this.add(t,this.divide(s,i))}return t}};$e.LOG_TABLE=[],$e.EXP_TABLE=[],(()=>{let e=(n,s)=>{let i=0;for(let o=0;o<8;o++){s&1&&(i^=n);let a=n&128;n<<=1,a&&(n^=283),s>>=1}return i&255},t=1;for(let n=0;n<255;n++)$e.EXP_TABLE[n]=t,$e.LOG_TABLE[t]=n,t=e(t,3);$e.EXP_TABLE[255]=$e.EXP_TABLE[0]})();jn=$e});var Gc,dt,Ki=p(()=>{"use strict";rs();Gc=new Map,dt=class{constructor(){this.storageKey="w3pk_social_recovery"}getItem(e){return typeof localStorage<"u"?localStorage.getItem(e):Gc.get(e)||null}setItem(e,t){typeof localStorage<"u"?localStorage.setItem(e,t):Gc.set(e,t)}async setupSocialRecovery(e,t,n,s){if(s>n.length)throw new Error("Threshold cannot be greater than number of guardians");if(s<2)throw new Error("Threshold must be at least 2");if(n.length>255)throw new Error("Cannot have more than 255 guardians");let i=Xn(e),o=Jn(i,s,n.length),a=n.map((u,l)=>({id:crypto.randomUUID(),name:u.name,email:u.email,phone:u.phone,shareEncrypted:es(o[l]),status:"pending",addedAt:new Date().toISOString()})),c={threshold:s,totalGuardians:n.length,guardians:a,createdAt:new Date().toISOString(),ethereumAddress:t};return this.setItem(this.storageKey,JSON.stringify(c)),a}getSocialRecoveryConfig(){let e=this.getItem(this.storageKey);if(!e)return null;try{return JSON.parse(e)}catch{return null}}async generateGuardianInvite(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.findIndex(c=>c.id===e.id);if(n===-1)throw new Error("Guardian not found");let s={version:1,guardianId:e.id,guardianName:e.name,guardianIndex:n+1,totalGuardians:t.totalGuardians,threshold:t.threshold,share:e.shareEncrypted,ethereumAddress:t.ethereumAddress,createdAt:t.createdAt},i=JSON.stringify(s),o=await this.generateQRCode(i),a=this.getGuardianExplainer(e.name,n+1,t.totalGuardians,t.threshold);return{guardianId:e.id,qrCode:o,shareCode:i,explainer:a}}async generateQRCode(e){try{return await(await Promise.resolve().then(()=>z(Fr()))).toDataURL(e,{errorCorrectionLevel:"H",width:512,margin:2})}catch{return this.createPlaceholderQR(e)}}createPlaceholderQR(e){if(typeof document>"u")return`data:text/plain;base64,${Buffer.from(e).toString("base64")}`;let t=document.createElement("canvas");t.width=512,t.height=512;let n=t.getContext("2d");return n?(n.fillStyle="white",n.fillRect(0,0,512,512),n.fillStyle="black",n.font="bold 20px sans-serif",n.textAlign="center",n.textBaseline="middle",n.fillText("Guardian Recovery Share",256,100),n.font="14px monospace",n.fillText('Install "qrcode" for QR codes',256,480),n.font="10px monospace",this.wrapText(e.substring(0,200)+"...",60).forEach((i,o)=>{n.fillText(i,256,150+o*12)}),t.toDataURL("image/png")):""}wrapText(e,t){let n=[];for(let s=0;s<e.length;s+=t)n.push(e.substring(s,s+t));return n}getGuardianExplainer(e,t,n,s){return`
85
85
  \u{1F6E1}\uFE0F GUARDIAN RECOVERY SHARE
86
86
 
87
87
  Dear ${e},
@@ -172,13 +172,13 @@ Thank you for being a trusted guardian!
172
172
 
173
173
  NEED HELP?
174
174
  Visit: https://docs.w3pk.org/social-recovery
175
- `}async recoverFromGuardians(e){if(!e||e.length===0)throw new Error("No guardian shares provided");let t=JSON.parse(e[0]),n=t.threshold,s=t.ethereumAddress;if(!n)throw new Error("Invalid share data: missing threshold information");if(e.length<n)throw new Error(`Need at least ${n} shares, got ${e.length}`);let o=e.map(u=>{let d=JSON.parse(u);if(d.ethereumAddress?.toLowerCase()!==s?.toLowerCase())throw new Error("Shares are from different wallets - cannot combine");return{guardianId:d.guardianId,share:d.share,index:d.guardianIndex}}).map(u=>jn(u.share)),a=qn(o,n),c=Gn(a),l;try{l=JSON.parse(c)}catch{throw new Error("Recovered data is not valid JSON - invalid shares")}if(!l.ethereumAddress)throw new Error("Recovered backup file is missing ethereum address");if(s&&l.ethereumAddress.toLowerCase()!==s.toLowerCase())throw new Error("Recovered address does not match share data - invalid shares");return{backupFileJson:c,ethereumAddress:l.ethereumAddress}}getRecoveryProgress(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=new Set(e.map(s=>{try{return JSON.parse(s).guardianId}catch{return null}}).filter(Boolean));return{collected:n.size,required:t.threshold,guardians:t.guardians.map(s=>({id:s.id,name:s.name,hasProvided:n.has(s.id)})),canRecover:n.size>=t.threshold}}markGuardianVerified(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.find(s=>s.id===e);if(!n)throw new Error("Guardian not found");n.status="active",n.lastVerified=new Date().toISOString(),this.setItem(this.storageKey,JSON.stringify(t))}revokeGuardian(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.find(s=>s.id===e);if(!n)throw new Error("Guardian not found");n.status="revoked",this.setItem(this.storageKey,JSON.stringify(t))}async addGuardian(e,t){let n=this.getSocialRecoveryConfig();if(!n)throw new Error("Social recovery not configured");let s=[...n.guardians.filter(o=>o.status!=="revoked").map(o=>({name:o.name,email:o.email,phone:o.phone})),t],i=await this.setupSocialRecovery(e,n.ethereumAddress,s,n.threshold);return i[i.length-1]}}});var Qn,Mc=m(()=>{"use strict";Tn();Ci();Pi();Qn=class{constructor(){this.verificationStorageKey="w3pk_backup_verifications";this.storage=new et,this.qrCreator=new Ft,this.socialRecoveryManager=new ot}async getBackupStatus(e){let t=await this.storage.getBackupsByAddress(e),n=await this.detectPasskeySync(),s=[...new Set(t.map(u=>u.method))],i=t.map(u=>u.createdAt).sort().pop(),o=t.filter(u=>u.method!=="phrase").map(u=>({id:u.id,method:u.method,location:"local",createdAt:u.createdAt,deviceFingerprint:u.deviceFingerprint})),a=this.getSocialRecoveryStatus(),c=this.getVerificationStatus(e);return{hasBackup:s.length>0,lastBackupAt:i,methods:s,passkeySync:n,recoveryPhrase:{verified:c.verified,verificationCount:c.count,encryptedBackups:o},socialRecovery:a,securityScore:this.calculateSecurityScore(n,o,a,c,s)}}async detectPasskeySync(){if(typeof navigator>"u")return{enabled:!1,deviceCount:0,lastSyncTime:void 0,platform:"unknown"};let e=navigator.userAgent.toLowerCase(),t="unknown";e.includes("mac")||e.includes("iphone")||e.includes("ipad")?t="apple":e.includes("android")?t="google":e.includes("windows")&&(t="microsoft");let n=await this.checkResidentKeySupport();return{enabled:n,deviceCount:1,lastSyncTime:n?new Date().toISOString():void 0,platform:t}}async checkResidentKeySupport(){if(typeof window>"u"||!window.PublicKeyCredential)return!1;try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return!1}}getSocialRecoveryStatus(){let e=this.socialRecoveryManager.getSocialRecoveryConfig();if(!e)return;let t=e.guardians.filter(n=>n.status==="active").length;return{enabled:!0,guardians:e.guardians,threshold:e.threshold,sharesDistributed:e.guardians.length,verifiedGuardians:t}}getVerificationStatus(e){try{let t=typeof localStorage<"u"?localStorage.getItem(this.verificationStorageKey):null;return t?JSON.parse(t)[e.toLowerCase()]||{verified:!1,count:0}:{verified:!1,count:0}}catch{return{verified:!1,count:0}}}async hasBackup(e){return(await this.storage.getBackupsByAddress(e)).length>0}async confirmRecoveryPhraseBackup(e,t){await this.storage.storeBackupMetadata({id:crypto.randomUUID(),ethereumAddress:e,method:"phrase",createdAt:new Date().toISOString(),addressChecksum:t})}markBackupVerified(e){try{let t=typeof localStorage<"u"?localStorage.getItem(this.verificationStorageKey):null,n=t?JSON.parse(t):{},s=e.toLowerCase();n[s]||(n[s]={verified:!1,count:0}),n[s].verified=!0,n[s].count+=1,n[s].lastVerifiedAt=new Date().toISOString(),typeof localStorage<"u"&&localStorage.setItem(this.verificationStorageKey,JSON.stringify(n))}catch(t){console.error("Failed to mark backup as verified:",t)}}calculateSecurityScore(e,t,n,s,i=[]){let o=0;n?.enabled&&(o=20,n.verifiedGuardians>=n.threshold&&(o+=10));let a=0;s?.verified&&(a=10,a+=Math.min(s.count-1,10));let c={passkeyActive:e.enabled?20:0,passkeyMultiDevice:e.deviceCount>1?10:0,phraseVerified:a,encryptedBackup:t.length>0?20:0,socialRecovery:o},l=Object.values(c).reduce((p,g)=>p+g,0),u=i.length>0?l:Math.min(l,20),d,h;return i.length===0?(d="vulnerable",h="Create a backup file or confirm your recovery phrase: browser storage can be wiped"):u<=20?(d="vulnerable",h='Create encrypted backup to reach "protected" (40+ pts)'):u<=50?(d="protected",h='Set up social recovery to reach "secured" (70+ pts)'):u<=80?(d="secured",h='Enable all methods to reach "fort-knox" (100 pts)'):(d="fort-knox",h="Maximum security achieved!"),{total:u,breakdown:c,level:d,nextMilestone:h}}async createQRBackup(e,t,n){let{qrCodeDataURL:s,rawData:i,instructions:o}=await this.qrCreator.createQRBackup(e,t,n),a={id:crypto.randomUUID(),ethereumAddress:t,method:"qr",createdAt:new Date().toISOString(),addressChecksum:JSON.parse(i).checksum};return await this.storage.storeBackupMetadata(a),{qrCodeDataURL:s,instructions:o}}async restoreFromQR(e,t){return await this.qrCreator.restoreFromQR(e,t)}async simulateRecoveryScenario(e,t){let n=[];switch(e.type){case"lost-device":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync (iCloud/Google)",success:!0,time:"5 minutes",requirements:["Sign in to cloud account","Authenticate on new device"]}),t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-phrase":t.passkeySync.enabled&&n.push({method:"Passkey (current device)",success:!0,time:"instant",requirements:["Current device","Biometric/PIN"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-both":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Cloud account access","New device"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"switch-platform":t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break}let s=n.length>0&&n.some(o=>o.success),i="";return s?(i=`\u2705 You're safe! ${n.length} way${n.length>1?"s":""} to recover.
175
+ `}async recoverFromGuardians(e){if(!e||e.length===0)throw new Error("No guardian shares provided");let t=JSON.parse(e[0]),n=t.threshold,s=t.ethereumAddress;if(!n)throw new Error("Invalid share data: missing threshold information");if(e.length<n)throw new Error(`Need at least ${n} shares, got ${e.length}`);let o=e.map(l=>{let d=JSON.parse(l);if(d.ethereumAddress?.toLowerCase()!==s?.toLowerCase())throw new Error("Shares are from different wallets - cannot combine");return{guardianId:d.guardianId,share:d.share,index:d.guardianIndex}}).map(l=>ts(l.share)),a=Qn(o,n),c=Zn(a),u;try{u=JSON.parse(c)}catch{throw new Error("Recovered data is not valid JSON - invalid shares")}if(!u.ethereumAddress)throw new Error("Recovered backup file is missing ethereum address");if(s&&u.ethereumAddress.toLowerCase()!==s.toLowerCase())throw new Error("Recovered address does not match share data - invalid shares");return{backupFileJson:c,ethereumAddress:u.ethereumAddress}}getRecoveryProgress(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=new Set(e.map(s=>{try{return JSON.parse(s).guardianId}catch{return null}}).filter(Boolean));return{collected:n.size,required:t.threshold,guardians:t.guardians.map(s=>({id:s.id,name:s.name,hasProvided:n.has(s.id)})),canRecover:n.size>=t.threshold}}markGuardianVerified(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.find(s=>s.id===e);if(!n)throw new Error("Guardian not found");n.status="active",n.lastVerified=new Date().toISOString(),this.setItem(this.storageKey,JSON.stringify(t))}revokeGuardian(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.find(s=>s.id===e);if(!n)throw new Error("Guardian not found");n.status="revoked",this.setItem(this.storageKey,JSON.stringify(t))}async addGuardian(e,t){let n=this.getSocialRecoveryConfig();if(!n)throw new Error("Social recovery not configured");let s=[...n.guardians.filter(o=>o.status!=="revoked").map(o=>({name:o.name,email:o.email,phone:o.phone})),t],i=await this.setupSocialRecovery(e,n.ethereumAddress,s,n.threshold);return i[i.length-1]}}});var ns,Yc=p(()=>{"use strict";Nn();_i();Ki();li();ns=class{constructor(){this.verificationStorageKey="w3pk_backup_verifications";this.storage=new it,this.qrCreator=new Ut,this.socialRecoveryManager=new dt}async getBackupStatus(e){let t=await this.storage.getBackupsByAddress(e),n=await this.detectPasskeySync(),s=[...new Set(t.map(l=>l.method))],i=t.map(l=>l.createdAt).sort().pop(),o=t.filter(l=>l.method!=="phrase").map(l=>({id:l.id,method:l.method,location:"local",createdAt:l.createdAt,deviceFingerprint:l.deviceFingerprint})),a=this.getSocialRecoveryStatus(),c=this.getVerificationStatus(e);return{hasBackup:s.length>0,evictionRisk:await Pn(),lastBackupAt:i,methods:s,passkeySync:n,recoveryPhrase:{verified:c.verified,verificationCount:c.count,encryptedBackups:o},socialRecovery:a,securityScore:this.calculateSecurityScore(n,o,a,c,s)}}async detectPasskeySync(){if(typeof navigator>"u")return{enabled:!1,deviceCount:0,lastSyncTime:void 0,platform:"unknown"};let e=navigator.userAgent.toLowerCase(),t="unknown";e.includes("mac")||e.includes("iphone")||e.includes("ipad")?t="apple":e.includes("android")?t="google":e.includes("windows")&&(t="microsoft");let n=await this.checkResidentKeySupport();return{enabled:n,deviceCount:1,lastSyncTime:n?new Date().toISOString():void 0,platform:t}}async checkResidentKeySupport(){if(typeof window>"u"||!window.PublicKeyCredential)return!1;try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return!1}}getSocialRecoveryStatus(){let e=this.socialRecoveryManager.getSocialRecoveryConfig();if(!e)return;let t=e.guardians.filter(n=>n.status==="active").length;return{enabled:!0,guardians:e.guardians,threshold:e.threshold,sharesDistributed:e.guardians.length,verifiedGuardians:t}}getVerificationStatus(e){try{let t=typeof localStorage<"u"?localStorage.getItem(this.verificationStorageKey):null;return t?JSON.parse(t)[e.toLowerCase()]||{verified:!1,count:0}:{verified:!1,count:0}}catch{return{verified:!1,count:0}}}async hasBackup(e){return(await this.storage.getBackupsByAddress(e)).length>0}async confirmRecoveryPhraseBackup(e,t){await this.storage.storeBackupMetadata({id:crypto.randomUUID(),ethereumAddress:e,method:"phrase",createdAt:new Date().toISOString(),addressChecksum:t})}markBackupVerified(e){try{let t=typeof localStorage<"u"?localStorage.getItem(this.verificationStorageKey):null,n=t?JSON.parse(t):{},s=e.toLowerCase();n[s]||(n[s]={verified:!1,count:0}),n[s].verified=!0,n[s].count+=1,n[s].lastVerifiedAt=new Date().toISOString(),typeof localStorage<"u"&&localStorage.setItem(this.verificationStorageKey,JSON.stringify(n))}catch(t){console.error("Failed to mark backup as verified:",t)}}calculateSecurityScore(e,t,n,s,i=[]){let o=0;n?.enabled&&(o=20,n.verifiedGuardians>=n.threshold&&(o+=10));let a=0;s?.verified&&(a=10,a+=Math.min(s.count-1,10));let c={passkeyActive:e.enabled?20:0,passkeyMultiDevice:e.deviceCount>1?10:0,phraseVerified:a,encryptedBackup:t.length>0?20:0,socialRecovery:o},u=Object.values(c).reduce((m,y)=>m+y,0),l=i.length>0?u:Math.min(u,20),d,h;return i.length===0?(d="vulnerable",h="Create a backup file or confirm your recovery phrase: browser storage can be wiped"):l<=20?(d="vulnerable",h='Create encrypted backup to reach "protected" (40+ pts)'):l<=50?(d="protected",h='Set up social recovery to reach "secured" (70+ pts)'):l<=80?(d="secured",h='Enable all methods to reach "fort-knox" (100 pts)'):(d="fort-knox",h="Maximum security achieved!"),{total:l,breakdown:c,level:d,nextMilestone:h}}async createQRBackup(e,t,n){let{qrCodeDataURL:s,rawData:i,instructions:o}=await this.qrCreator.createQRBackup(e,t,n),a={id:crypto.randomUUID(),ethereumAddress:t,method:"qr",createdAt:new Date().toISOString(),addressChecksum:JSON.parse(i).checksum};return await this.storage.storeBackupMetadata(a),{qrCodeDataURL:s,instructions:o}}async restoreFromQR(e,t){return await this.qrCreator.restoreFromQR(e,t)}async simulateRecoveryScenario(e,t){let n=[];switch(e.type){case"lost-device":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync (iCloud/Google)",success:!0,time:"5 minutes",requirements:["Sign in to cloud account","Authenticate on new device"]}),t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-phrase":t.passkeySync.enabled&&n.push({method:"Passkey (current device)",success:!0,time:"instant",requirements:["Current device","Biometric/PIN"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-both":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Cloud account access","New device"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"switch-platform":t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break}let s=n.length>0&&n.some(o=>o.success),i="";return s?(i=`\u2705 You're safe! ${n.length} way${n.length>1?"s":""} to recover.
176
176
 
177
177
  `,i+=`Available recovery methods:
178
178
  `,n.forEach(o=>{i+=`- ${o.method} (~${o.time})
179
179
  `})):(i=`\u274C Wallet cannot be recovered in this scenario.
180
180
 
181
- `,i+="Recommendation: Set up at least 2 backup methods to prevent total loss."),{scenario:e,success:s,availableMethods:n,timeEstimate:s?n[0].time:"N/A",educationalNote:i}}}});var ye={};x(ye,{BackupFileManager:()=>Tr});var Tr,ce=m(()=>{"use strict";_e();H();Tr=class{async createPasswordBackup(e,t,n){if(!n||n.length<1)throw new Error("Password is required for password-based backup");let s=crypto.getRandomValues(new Uint8Array(32)),i=await tt(e,n,s),o=await ne(t),a={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:i.encrypted,encryptionMethod:"password",passwordEncryption:{salt:i.salt,iv:i.iv,iterations:i.iterations},addressChecksum:o},c=JSON.stringify(a,null,2),l=new Blob([c],{type:"application/json"});return{backupFile:a,json:c,blob:l}}async createPasskeyBackup(e,t,n,s){let i=await fe(n,s),o=await oe(e,i),a=await ne(t),l=new TextEncoder().encode(s),u=await crypto.subtle.digest("SHA-256",l),h=Array.from(new Uint8Array(u)).map(b=>b.toString(16).padStart(2,"0")).join("").substring(0,16),p={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:o,encryptionMethod:"passkey",credentialId:n,publicKeyFingerprint:h,addressChecksum:a},g=JSON.stringify(p,null,2),w=new Blob([g],{type:"application/json"});return{backupFile:p,json:g,blob:w}}async createHybridBackup(e,t,n,s,i){let o=await fe(s,i),a=await oe(e,o),c=crypto.getRandomValues(new Uint8Array(32)),l=await tt(a,n,c),u=await ne(t),h=new TextEncoder().encode(i),p=await crypto.subtle.digest("SHA-256",h),w=Array.from(new Uint8Array(p)).map(v=>v.toString(16).padStart(2,"0")).join("").substring(0,16),b={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:l.encrypted,encryptionMethod:"hybrid",credentialId:s,publicKeyFingerprint:w,passwordEncryption:{salt:l.salt,iv:l.iv,iterations:l.iterations},addressChecksum:u},S=JSON.stringify(b,null,2),A=new Blob([S],{type:"application/json"});return{backupFile:b,json:S,blob:A}}async restoreWithExistingPasskey(e,t,n){if(e.encryptionMethod==="password")throw new Error("This backup is password-protected. Use restoreWithPassword() instead.");if(e.credentialId&&e.credentialId!==t)throw new Error("Credential ID mismatch. This backup was created with a different passkey.");let s;if(e.encryptionMethod==="passkey"){let c=await fe(t,n);s=await te(e.encryptedMnemonic,c)}else throw new Error("This backup requires both passkey and password. Use restoreWithHybrid() instead.");let{Wallet:i}=await import("ethers"),o=i.fromPhrase(s);if(await ne(o.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or decryption failure");return{mnemonic:s,ethereumAddress:e.ethereumAddress}}async restoreWithPassword(e,t){if(!e.passwordEncryption)throw new Error("This backup is not password-protected.");let n;if(e.encryptionMethod==="password")n=await Sr(e.encryptedMnemonic,t,e.passwordEncryption.salt,e.passwordEncryption.iv,e.passwordEncryption.iterations);else throw e.encryptionMethod==="hybrid"?new Error("This backup requires both passkey and password. Use restoreWithHybrid() instead."):new Error("This backup is passkey-only. Use restoreWithExistingPasskey() instead.");let{Wallet:s}=await import("ethers"),i=s.fromPhrase(n);if(await ne(i.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or wrong password");return{mnemonic:n,ethereumAddress:e.ethereumAddress}}async restoreWithHybrid(e,t,n,s){if(e.encryptionMethod!=="hybrid")throw new Error("This backup is not a hybrid backup.");if(!e.passwordEncryption)throw new Error("Missing password encryption data in hybrid backup.");let i=await Sr(e.encryptedMnemonic,t,e.passwordEncryption.salt,e.passwordEncryption.iv,e.passwordEncryption.iterations),o=await fe(n,s),a=await te(i,o),{Wallet:c}=await import("ethers"),l=c.fromPhrase(a);if(await ne(l.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or decryption failure");return{mnemonic:a,ethereumAddress:e.ethereumAddress}}async parseBackupFile(e){let t;e instanceof Blob?t=await e.text():t=e;let n=JSON.parse(t);if(!n.createdAt||!n.ethereumAddress||!n.encryptedMnemonic)throw new Error("Invalid backup file: missing required fields");return n}createDownloadableBackup(e,t){let n=JSON.stringify(e,null,2),s=new Blob([n],{type:"application/json"}),i=`w3pk-backup-${e.ethereumAddress.substring(0,8)}-${new Date().toISOString().split("T")[0]}.json`;return{blob:s,filename:t||i}}}});var Uc=m(()=>{"use strict"});var Te={};x(Te,{BackupFileManager:()=>Tr,BackupManager:()=>Qn,BackupStorage:()=>et,QRBackupCreator:()=>Ft,decryptWithPassword:()=>Sr,deriveAddressChecksum:()=>ne,deriveKeyFromPassword:()=>Rn,encryptWithPassword:()=>tt,getDeviceFingerprint:()=>ke,validatePasswordStrength:()=>Fa});var Re=m(()=>{"use strict";Mc();Tn();Ci();ce();Uc();_e()});var Nc={};x(Nc,{extractRS:()=>Ii});function Ii(r){let e=0;if(r[e++]!==48)throw new Error("Invalid DER signature: missing sequence tag");if(e++,r[e++]!==2)throw new Error("Invalid DER signature: missing r integer tag");let t=r[e++];t>32&&(e++,t--);let n=r.slice(e,e+t);if(e+=t,r[e++]!==2)throw new Error("Invalid DER signature: missing s integer tag");let s=r[e++];s>32&&(e++,s--);let i=r.slice(e,e+s),o=new Uint8Array(32),a=new Uint8Array(32);o.set(n,32-n.length),a.set(i,32-i.length);let c=BigInt("0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"),l=BigInt("0x"+Buffer.from(a).toString("hex"));l>c/2n&&(l=c-l);let u="0x"+Buffer.from(o).toString("hex"),d="0x"+l.toString(16).padStart(64,"0");return{r:u,s:d}}var Bi=m(()=>{"use strict"});var Xn={};x(Xn,{SocialRecovery:()=>Ti});var Ti,Zn=m(()=>{"use strict";Jn();Ti=class{async splitAmongGuardians(e,t,n){if(n>t.length)throw new Error("Threshold cannot exceed number of guardians");if(n<2)throw new Error("Threshold must be at least 2 for security");if(t.length>255)throw new Error("Cannot have more than 255 guardians");let s=JSON.stringify(e),i=Vn(s),o=Hn(i,n,t.length),a=t.map((c,l)=>({guardianId:crypto.randomUUID(),guardianName:c.name,shareData:Yn(o[l]),shareIndex:l+1,threshold:n,createdAt:new Date().toISOString(),walletAddress:e.ethereumAddress}));return{threshold:n,totalShares:t.length,guardianShares:a,backupFile:e,setupDate:new Date().toISOString()}}async recoverFromShares(e){if(e.length<2)throw new Error("At least 2 shares required for recovery");let t=e[0].threshold,n=e[0].walletAddress;if(!t)throw new Error("Invalid share: missing threshold information");if(e.length<t)throw new Error(`Need at least ${t} shares to recover, but only ${e.length} provided`);if(!e.every(l=>l.walletAddress===n&&l.threshold===t))throw new Error("Shares are from different wallets or have inconsistent thresholds");let i=e.map(l=>jn(l.shareData)),o=qn(i,t),a=Gn(o),c=JSON.parse(a);if(c.ethereumAddress!==n)throw new Error("Recovered backup address mismatch - corrupted shares");return c}async createGuardianInvitation(e,t){let n={type:"w3pk-guardian-share",version:1,guardianName:e.guardianName,walletAddress:e.walletAddress,shareData:e.shareData,shareIndex:e.shareIndex,threshold:e.threshold,createdAt:e.createdAt,message:t||`You have been chosen as a recovery guardian for wallet ${e.walletAddress.substring(0,10)}...`},s=JSON.stringify(n,null,2),i;try{i=await(await Promise.resolve().then(()=>W(Br()))).toDataURL(s,{errorCorrectionLevel:"H",width:512})}catch(a){console.warn("QR code generation not available:",a)}let o=`
181
+ `,i+="Recommendation: Set up at least 2 backup methods to prevent total loss."),{scenario:e,success:s,availableMethods:n,timeEstimate:s?n[0].time:"N/A",educationalNote:i}}}});var be={};x(be,{BackupFileManager:()=>Mr,generatePrfSalt:()=>ip,prfSyncInput:()=>op});function ip(){return ne(crypto.getRandomValues(new Uint8Array(32)).buffer)}async function op(r){let e=new Uint8Array(T(r));return crypto.subtle.digest("SHA-256",new Uint8Array([...Jc,...e]))}async function jc(r,e){try{let t=await crypto.subtle.importKey("raw",r,"HKDF",!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:T(e),info:Jc},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new P("Failed to derive backup key from PRF output",t)}}var Jc,Mr,he=p(()=>{"use strict";Ke();se();W();ce();Jc=new TextEncoder().encode("w3pk-prf-sync-v1");Mr=class{async createPasswordBackup(e,t,n,s){if(!n||n.length<1)throw new Error("Password is required for password-based backup");let i=crypto.getRandomValues(new Uint8Array(32)),o=await ot(e,n,i),a=await V(t),c={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:o.encrypted,encryptionMethod:"password",passwordEncryption:{salt:o.salt,iv:o.iv,iterations:o.iterations},...s&&{credential:{id:s.id,publicKey:s.publicKey}},addressChecksum:a},u=JSON.stringify(c,null,2),l=new Blob([u],{type:"application/json"});return{backupFile:c,json:u,blob:l}}async createPasskeyBackup(e,t,n,s){let i=await le(n,s),o=await J(e,i),a=await V(t),u=new TextEncoder().encode(s),l=await crypto.subtle.digest("SHA-256",u),h=Array.from(new Uint8Array(l)).map(S=>S.toString(16).padStart(2,"0")).join("").substring(0,16),m={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:o,encryptionMethod:"passkey",credentialId:n,publicKeyFingerprint:h,addressChecksum:a},y=JSON.stringify(m,null,2),w=new Blob([y],{type:"application/json"});return{backupFile:m,json:y,blob:w}}async createHybridBackup(e,t,n,s,i){let o=await le(s,i),a=await J(e,o),c=crypto.getRandomValues(new Uint8Array(32)),u=await ot(a,n,c),l=await V(t),h=new TextEncoder().encode(i),m=await crypto.subtle.digest("SHA-256",h),w=Array.from(new Uint8Array(m)).map(v=>v.toString(16).padStart(2,"0")).join("").substring(0,16),S={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:u.encrypted,encryptionMethod:"hybrid",credentialId:s,publicKeyFingerprint:w,passwordEncryption:{salt:u.salt,iv:u.iv,iterations:u.iterations},addressChecksum:l},b=JSON.stringify(S,null,2),A=new Blob([b],{type:"application/json"});return{backupFile:S,json:b,blob:A}}async createPrfBackup(e,t,n,s,i,o){let a=await jc(o,i),c=await J(e,a),u=await V(t),l={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:c,encryptionMethod:"prf",credential:{id:n.id,publicKey:n.publicKey},prfSalt:i,username:s,addressChecksum:u},d=JSON.stringify(l,null,2),h=new Blob([d],{type:"application/json"});return{backupFile:l,json:d,blob:h}}async restoreWithPrf(e,t){if(e.encryptionMethod!=="prf"||!e.prfSalt)throw new Error("This backup is not a PRF backup.");let n=await jc(t,e.prfSalt),s=await Q(e.encryptedMnemonic,n),{Wallet:i}=await import("ethers"),o=i.fromPhrase(s);if(await V(o.address)!==e.addressChecksum||o.address.toLowerCase()!==e.ethereumAddress.toLowerCase())throw new Error("Address checksum mismatch - corrupted backup or decryption failure");return{mnemonic:s,ethereumAddress:o.address}}async restoreWithExistingPasskey(e,t,n){if(e.encryptionMethod==="password")throw new Error("This backup is password-protected. Use restoreWithPassword() instead.");if(e.encryptionMethod==="prf")throw new Error("This backup is PRF-encrypted. Use restoreWithPrf() instead.");if(e.credentialId&&e.credentialId!==t)throw new Error("Credential ID mismatch. This backup was created with a different passkey.");let s;if(e.encryptionMethod==="passkey"){let c=await le(t,n);s=await Q(e.encryptedMnemonic,c)}else throw new Error("This backup requires both passkey and password. Use restoreWithHybrid() instead.");let{Wallet:i}=await import("ethers"),o=i.fromPhrase(s);if(await V(o.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or decryption failure");return{mnemonic:s,ethereumAddress:e.ethereumAddress}}async restoreWithPassword(e,t){if(!e.passwordEncryption)throw new Error("This backup is not password-protected.");let n;if(e.encryptionMethod==="password")n=await kr(e.encryptedMnemonic,t,e.passwordEncryption.salt,e.passwordEncryption.iv,e.passwordEncryption.iterations);else throw e.encryptionMethod==="hybrid"?new Error("This backup requires both passkey and password. Use restoreWithHybrid() instead."):new Error("This backup is passkey-only. Use restoreWithExistingPasskey() instead.");let{Wallet:s}=await import("ethers"),i=s.fromPhrase(n);if(await V(i.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or wrong password");return{mnemonic:n,ethereumAddress:e.ethereumAddress}}async restoreWithHybrid(e,t,n,s){if(e.encryptionMethod!=="hybrid")throw new Error("This backup is not a hybrid backup.");if(!e.passwordEncryption)throw new Error("Missing password encryption data in hybrid backup.");let i=await kr(e.encryptedMnemonic,t,e.passwordEncryption.salt,e.passwordEncryption.iv,e.passwordEncryption.iterations),o=await le(n,s),a=await Q(i,o),{Wallet:c}=await import("ethers"),u=c.fromPhrase(a);if(await V(u.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or decryption failure");return{mnemonic:a,ethereumAddress:e.ethereumAddress}}async parseBackupFile(e){let t;e instanceof Blob?t=await e.text():t=e;let n=JSON.parse(t);if(!n.createdAt||!n.ethereumAddress||!n.encryptedMnemonic)throw new Error("Invalid backup file: missing required fields");if(n.encryptionMethod==="prf"&&(!n.prfSalt||!n.credential?.id||!n.credential.publicKey))throw new Error("Invalid backup file: PRF backup without its salt or passkey");return n}createDownloadableBackup(e,t){let n=JSON.stringify(e,null,2),s=new Blob([n],{type:"application/json"}),i=`w3pk-backup-${e.ethereumAddress.substring(0,8)}-${new Date().toISOString().split("T")[0]}.json`;return{blob:s,filename:t||i}}}});var Qc=p(()=>{"use strict"});var De={};x(De,{BackupFileManager:()=>Mr,BackupManager:()=>ns,BackupStorage:()=>it,QRBackupCreator:()=>Ut,decryptWithPassword:()=>kr,deriveAddressChecksum:()=>V,deriveKeyFromPassword:()=>Ln,encryptWithPassword:()=>ot,getDeviceFingerprint:()=>Ce,validatePasswordStrength:()=>Ga});var Fe=p(()=>{"use strict";Yc();Nn();_i();he();Qc();Ke()});var Xc={};x(Xc,{extractRS:()=>Oi});function Oi(r){let e=0;if(r[e++]!==48)throw new Error("Invalid DER signature: missing sequence tag");if(e++,r[e++]!==2)throw new Error("Invalid DER signature: missing r integer tag");let t=r[e++];t>32&&(e++,t--);let n=r.slice(e,e+t);if(e+=t,r[e++]!==2)throw new Error("Invalid DER signature: missing s integer tag");let s=r[e++];s>32&&(e++,s--);let i=r.slice(e,e+s),o=new Uint8Array(32),a=new Uint8Array(32);o.set(n,32-n.length),a.set(i,32-i.length);let c=BigInt("0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"),u=BigInt("0x"+Buffer.from(a).toString("hex"));u>c/2n&&(u=c-u);let l="0x"+Buffer.from(o).toString("hex"),d="0x"+u.toString(16).padStart(64,"0");return{r:l,s:d}}var zi=p(()=>{"use strict"});var ss={};x(ss,{SocialRecovery:()=>Wi});var Wi,is=p(()=>{"use strict";rs();Wi=class{async splitAmongGuardians(e,t,n){if(n>t.length)throw new Error("Threshold cannot exceed number of guardians");if(n<2)throw new Error("Threshold must be at least 2 for security");if(t.length>255)throw new Error("Cannot have more than 255 guardians");let s=JSON.stringify(e),i=Xn(s),o=Jn(i,n,t.length),a=t.map((c,u)=>({guardianId:crypto.randomUUID(),guardianName:c.name,shareData:es(o[u]),shareIndex:u+1,threshold:n,createdAt:new Date().toISOString(),walletAddress:e.ethereumAddress}));return{threshold:n,totalShares:t.length,guardianShares:a,backupFile:e,setupDate:new Date().toISOString()}}async recoverFromShares(e){if(e.length<2)throw new Error("At least 2 shares required for recovery");let t=e[0].threshold,n=e[0].walletAddress;if(!t)throw new Error("Invalid share: missing threshold information");if(e.length<t)throw new Error(`Need at least ${t} shares to recover, but only ${e.length} provided`);if(!e.every(u=>u.walletAddress===n&&u.threshold===t))throw new Error("Shares are from different wallets or have inconsistent thresholds");let i=e.map(u=>ts(u.shareData)),o=Qn(i,t),a=Zn(o),c=JSON.parse(a);if(c.ethereumAddress!==n)throw new Error("Recovered backup address mismatch - corrupted shares");return c}async createGuardianInvitation(e,t){let n={type:"w3pk-guardian-share",version:1,guardianName:e.guardianName,walletAddress:e.walletAddress,shareData:e.shareData,shareIndex:e.shareIndex,threshold:e.threshold,createdAt:e.createdAt,message:t||`You have been chosen as a recovery guardian for wallet ${e.walletAddress.substring(0,10)}...`},s=JSON.stringify(n,null,2),i;try{i=await(await Promise.resolve().then(()=>z(Fr()))).toDataURL(s,{errorCorrectionLevel:"H",width:512})}catch(a){console.warn("QR code generation not available:",a)}let o=`
182
182
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
183
183
  W3PK GUARDIAN RECOVERY SHARE
184
184
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
@@ -220,7 +220,7 @@ ${e.shareData}
220
220
  Generated by w3pk - Web3 Passkey SDK
221
221
  https://github.com/w3hc/w3pk
222
222
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
223
- `;return{qrCodeDataURL:i,shareDocument:o,shareJson:s}}parseGuardianShare(e){let t=JSON.parse(e);if(t.type!=="w3pk-guardian-share")throw new Error("Invalid guardian share format");if(!t.threshold)throw new Error("Invalid guardian share: missing threshold information");return{guardianId:crypto.randomUUID(),guardianName:t.guardianName,shareData:t.shareData,shareIndex:t.shareIndex,threshold:t.threshold,createdAt:t.createdAt,walletAddress:t.walletAddress}}async verifyRecovery(e){try{return{canRecover:!0,recoveredAddress:(await this.recoverFromShares(e)).ethereumAddress}}catch(t){return{canRecover:!1,error:t instanceof Error?t.message:"Unknown error"}}}createShareDownload(e){let t=JSON.stringify({type:"w3pk-guardian-share",version:1,guardianName:e.guardianName,walletAddress:e.walletAddress,shareData:e.shareData,shareIndex:e.shareIndex,threshold:e.threshold,createdAt:e.createdAt},null,2),n=new Blob([t],{type:"application/json"}),s=`w3pk-guardian-${e.guardianName.replace(/\s+/g,"-")}-share-${e.shareIndex}.json`;return{blob:n,filename:s}}}});var Lc={};x(Lc,{authenticateWithPasskey:()=>Di,promptPasskeySelection:()=>Ri});async function Ri(){try{let r=new R,e=Ue(),t=N(e),n=[];try{let c=await r.getAllCredentials();c.length>0&&(n=c.map(l=>({id:l.id,type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]})))}catch{}let s={challenge:t,rpId:window.location.hostname,userVerification:"required",timeout:12e4};n.length>0&&(s.allowCredentials=n.map(c=>({id:N(c.id),type:c.type,transports:c.transports})));let i=await navigator.credentials.get({publicKey:s});if(!i)throw new O("No passkey selected. Please select a passkey to continue with sync.");let o=i.id,a=await r.getCredentialById(o);return a?{credentialId:o,publicKey:a.publicKey,ethereumAddress:a.ethereumAddress}:{credentialId:o,publicKey:"",ethereumAddress:void 0}}catch(r){throw r?.name==="NotAllowedError"?new O("Passkey selection was cancelled. Please try again and select your passkey."):r instanceof O?r:new O(`Failed to select passkey: ${r instanceof Error?r.message:"Unknown error"}`,r)}}async function Di(r){try{let e=Ue(),n={challenge:N(e),rpId:window.location.hostname,userVerification:"required",timeout:6e4,allowCredentials:[{id:N(r),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}]},s=await navigator.credentials.get({publicKey:n});if(!s)throw new O("Authentication failed - no credential returned");return s}catch(e){throw e?.name==="NotAllowedError"?new O("Authentication was cancelled or the passkey is not available on this device."):new O(`Passkey authentication failed: ${e instanceof Error?e.message:"Unknown error"}`,e)}}var Fi=m(()=>{"use strict";j();Le();ve();H()});var es={};x(es,{DeviceSyncManager:()=>Rr});var Rr,Dr=m(()=>{"use strict";Rr=class{constructor(){this.SYNC_STORAGE_KEY="w3pk_sync_info"}async getSyncInfo(){try{let e=localStorage.getItem(this.SYNC_STORAGE_KEY);return e?JSON.parse(e):null}catch(e){return console.error("Failed to get sync info:",e),null}}async updateSyncInfo(e){let t=await this.getSyncInfo(),n=this.detectPlatform(),s={deviceName:t?.deviceName||this.generateDeviceName(),platform:n,lastSyncTime:new Date().toISOString(),walletsSynced:t?.walletsSynced||[]};s.walletsSynced.includes(e)||s.walletsSynced.push(e),localStorage.setItem(this.SYNC_STORAGE_KEY,JSON.stringify(s))}detectPlatform(){let e=navigator.userAgent.toLowerCase();return/iphone|ipad|ipod/.test(e)?"ios":/android/.test(e)?"android":/mac/.test(e)?"macos":/win/.test(e)?"windows":/linux/.test(e)?"linux":"unknown"}generateDeviceName(){let e=this.detectPlatform(),t=new Date().toISOString().split("T")[0];return`${e}-device-${t}`}async exportForSync(e,t,n,s){let{BackupFileManager:i}=await Promise.resolve().then(()=>(ce(),ye));return new i().createPasskeyBackup(e,t,n,s)}async importFromSync(e,t,n){let{BackupFileManager:s}=await Promise.resolve().then(()=>(ce(),ye)),o=await new s().restoreWithExistingPasskey(e,t,n);return await this.updateSyncInfo(o.ethereumAddress),o}async canSyncBackup(e,t){return e.encryptionMethod!=="passkey"?!0:e.publicKeyFingerprint?t.some(n=>n.publicKeyFingerprint===e.publicKeyFingerprint):!1}async generateSyncQR(e){try{let t=await Promise.resolve().then(()=>W(Br())),n=JSON.stringify(e);if(n.length>2953)throw new Error("Backup file too large for QR code. Use file transfer instead.");return t.toDataURL(n,{errorCorrectionLevel:"H",margin:2,width:512})}catch(t){throw t.code==="ERR_MODULE_NOT_FOUND"?new Error("QR code generation requires qrcode package: npm install qrcode"):t}}async parseSyncQR(e){let{BackupFileManager:t}=await Promise.resolve().then(()=>(ce(),ye));return new t().parseBackupFile(e)}}});var ts,_c=m(()=>{"use strict";_e();ts=class{async createSyncPackage(e,t,n){let s=await ke(),{deriveEncryptionKeyFromWebAuthn:i,encryptData:o}=await Promise.resolve().then(()=>(H(),Ne)),a=await i(t,n),c=await o(e,a),l=this.detectSyncMethod();return{id:crypto.randomUUID(),encryptedData:c,deviceFingerprints:[s],syncMethod:l,version:1,updatedAt:new Date().toISOString()}}detectSyncMethod(){let e=navigator.userAgent.toLowerCase();return e.includes("mac")||e.includes("iphone")||e.includes("ipad")?"icloud":e.includes("android")||e.includes("chrome")?"google":e.includes("windows")?"microsoft":"custom"}async restoreFromSync(e,t,n){let{deriveEncryptionKeyFromWebAuthn:s,decryptData:i}=await Promise.resolve().then(()=>(H(),Ne)),o=await s(t,n),a=await i(e.encryptedData,o),c=await ke();return e.deviceFingerprints.includes(c)||(e.deviceFingerprints.push(c),e.updatedAt=new Date().toISOString()),a}async getSetupFlow(){return{success:!1,steps:[{title:"1. Authenticate on New Device",action:"Use Touch ID/Face ID",educational:"Your passkey is automatically synced via iCloud/Google",status:"waiting"},{title:"2. Decrypt Wallet Data",action:"System validates device",educational:"Only your trusted devices can decrypt the wallet",status:"waiting"},{title:"3. Verify Recovery",action:"Check partial address",educational:"Confirm address matches your wallet",status:"waiting"},{title:"4. Ready!",action:"Wallet synced",educational:"All devices now have access",status:"waiting"}]}}getSyncExplainer(){return`
223
+ `;return{qrCodeDataURL:i,shareDocument:o,shareJson:s}}parseGuardianShare(e){let t=JSON.parse(e);if(t.type!=="w3pk-guardian-share")throw new Error("Invalid guardian share format");if(!t.threshold)throw new Error("Invalid guardian share: missing threshold information");return{guardianId:crypto.randomUUID(),guardianName:t.guardianName,shareData:t.shareData,shareIndex:t.shareIndex,threshold:t.threshold,createdAt:t.createdAt,walletAddress:t.walletAddress}}async verifyRecovery(e){try{return{canRecover:!0,recoveredAddress:(await this.recoverFromShares(e)).ethereumAddress}}catch(t){return{canRecover:!1,error:t instanceof Error?t.message:"Unknown error"}}}createShareDownload(e){let t=JSON.stringify({type:"w3pk-guardian-share",version:1,guardianName:e.guardianName,walletAddress:e.walletAddress,shareData:e.shareData,shareIndex:e.shareIndex,threshold:e.threshold,createdAt:e.createdAt},null,2),n=new Blob([t],{type:"application/json"}),s=`w3pk-guardian-${e.guardianName.replace(/\s+/g,"-")}-share-${e.shareIndex}.json`;return{blob:n,filename:s}}}});var Zc={};x(Zc,{authenticateWithPasskey:()=>$i,promptPasskeySelection:()=>Hi});async function Hi(){try{let r=new D,e=Ee(),t=T(e),n=[];try{let l=await r.getAllCredentials();l.length>0&&(n=l.map(d=>({id:d.id,type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]})))}catch{}let s={challenge:t,rpId:window.location.hostname,userVerification:"required",timeout:12e4};n.length>0&&(s.allowCredentials=n.map(l=>({id:T(l.id),type:l.type,transports:l.transports})));let i=await navigator.credentials.get({publicKey:s});if(!i)throw new N("No passkey selected. Please select a passkey to continue with sync.");let o=i.id,a=i.response.userHandle,c=a?.byteLength?new TextDecoder().decode(a):void 0,u=await r.getCredentialById(o);return u?{credentialId:o,publicKey:u.publicKey,ethereumAddress:u.ethereumAddress,username:u.username,assertion:i}:{credentialId:o,publicKey:"",ethereumAddress:void 0,username:c,assertion:i}}catch(r){throw r?.name==="NotAllowedError"?new N("Passkey selection was cancelled. Please try again and select your passkey."):r instanceof N?r:new N(`Failed to select passkey: ${r instanceof Error?r.message:"Unknown error"}`,r)}}async function $i(r){try{let e=Ee(),n={challenge:T(e),rpId:window.location.hostname,userVerification:"required",timeout:6e4,allowCredentials:[{id:T(r),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}]},s=await navigator.credentials.get({publicKey:n});if(!s)throw new N("Authentication failed - no credential returned");return s}catch(e){throw e?.name==="NotAllowedError"?new N("Authentication was cancelled or the passkey is not available on this device."):new N(`Passkey authentication failed: ${e instanceof Error?e.message:"Unknown error"}`,e)}}var qi=p(()=>{"use strict";W();_e();ce();se()});var os={};x(os,{DeviceSyncManager:()=>Ur});var Ur,Nr=p(()=>{"use strict";Ur=class{constructor(){this.SYNC_STORAGE_KEY="w3pk_sync_info"}async getSyncInfo(){try{let e=localStorage.getItem(this.SYNC_STORAGE_KEY);return e?JSON.parse(e):null}catch(e){return console.error("Failed to get sync info:",e),null}}async updateSyncInfo(e){let t=await this.getSyncInfo(),n=this.detectPlatform(),s={deviceName:t?.deviceName||this.generateDeviceName(),platform:n,lastSyncTime:new Date().toISOString(),walletsSynced:t?.walletsSynced||[]};s.walletsSynced.includes(e)||s.walletsSynced.push(e),localStorage.setItem(this.SYNC_STORAGE_KEY,JSON.stringify(s))}detectPlatform(){let e=navigator.userAgent.toLowerCase();return/iphone|ipad|ipod/.test(e)?"ios":/android/.test(e)?"android":/mac/.test(e)?"macos":/win/.test(e)?"windows":/linux/.test(e)?"linux":"unknown"}generateDeviceName(){let e=this.detectPlatform(),t=new Date().toISOString().split("T")[0];return`${e}-device-${t}`}async exportForSync(e,t,n,s,i){let{BackupFileManager:o,generatePrfSalt:a,prfSyncInput:c}=await Promise.resolve().then(()=>(he(),be)),{evaluatePrf:u}=await Promise.resolve().then(()=>(Cn(),ci)),{PrfUnsupportedError:l}=await Promise.resolve().then(()=>(W(),$s)),d=new o,h=a(),m;try{({output:m}=await u(await c(h),n.id))}catch(y){if(y instanceof l&&i)return d.createPasswordBackup(e,t,i,n);throw y}try{return await d.createPrfBackup(e,t,n,s,h,m)}finally{new Uint8Array(m).fill(0)}}async importFromSync(e,t){let{BackupFileManager:n,prfSyncInput:s}=await Promise.resolve().then(()=>(he(),be)),{evaluatePrf:i}=await Promise.resolve().then(()=>(Cn(),ci)),{verifyAssertionSignature:o}=await Promise.resolve().then(()=>(ri(),Ta)),{SyncBootstrapError:a}=await Promise.resolve().then(()=>(W(),$s)),c=new n;if(e.encryptionMethod!=="prf"||!e.prfSalt||!e.credential)throw new Error("This backup is not a PRF backup.");let u=e.credential.id,l=await i(await s(e.prfSalt),u),d;try{if(l.credentialId!==u)throw new a("CREDENTIAL_MISMATCH",l.credentialId);if(!await o(l.assertion,t))throw new a("PUBLIC_KEY_MISMATCH",u);d=await c.restoreWithPrf(e,l.output)}finally{new Uint8Array(l.output).fill(0)}return await this.updateSyncInfo(d.ethereumAddress),d}async canSyncBackup(e,t){return e.encryptionMethod!=="passkey"?!0:e.publicKeyFingerprint?t.some(n=>n.publicKeyFingerprint===e.publicKeyFingerprint):!1}async generateSyncQR(e){try{let t=await Promise.resolve().then(()=>z(Fr())),n=JSON.stringify(e);if(n.length>2953)throw new Error("Backup file too large for QR code. Use file transfer instead.");return t.toDataURL(n,{errorCorrectionLevel:"H",margin:2,width:512})}catch(t){throw t.code==="ERR_MODULE_NOT_FOUND"?new Error("QR code generation requires qrcode package: npm install qrcode"):t}}async parseSyncQR(e){let{BackupFileManager:t}=await Promise.resolve().then(()=>(he(),be));return new t().parseBackupFile(e)}}});var as,el=p(()=>{"use strict";Ke();as=class{async createSyncPackage(e,t,n){let s=await Ce(),{deriveEncryptionKeyFromWebAuthn:i,encryptData:o}=await Promise.resolve().then(()=>(se(),fr)),a=await i(t,n),c=await o(e,a),u=this.detectSyncMethod();return{id:crypto.randomUUID(),encryptedData:c,deviceFingerprints:[s],syncMethod:u,version:1,updatedAt:new Date().toISOString()}}detectSyncMethod(){let e=navigator.userAgent.toLowerCase();return e.includes("mac")||e.includes("iphone")||e.includes("ipad")?"icloud":e.includes("android")||e.includes("chrome")?"google":e.includes("windows")?"microsoft":"custom"}async restoreFromSync(e,t,n){let{deriveEncryptionKeyFromWebAuthn:s,decryptData:i}=await Promise.resolve().then(()=>(se(),fr)),o=await s(t,n),a=await i(e.encryptedData,o),c=await Ce();return e.deviceFingerprints.includes(c)||(e.deviceFingerprints.push(c),e.updatedAt=new Date().toISOString()),a}async getSetupFlow(){return{success:!1,steps:[{title:"1. Authenticate on New Device",action:"Use Touch ID/Face ID",educational:"Your passkey is automatically synced via iCloud/Google",status:"waiting"},{title:"2. Decrypt Wallet Data",action:"System validates device",educational:"Only your trusted devices can decrypt the wallet",status:"waiting"},{title:"3. Verify Recovery",action:"Check partial address",educational:"Confirm address matches your wallet",status:"waiting"},{title:"4. Ready!",action:"Wallet synced",educational:"All devices now have access",status:"waiting"}]}}getSyncExplainer(){return`
224
224
  HOW CROSS-DEVICE SYNC WORKS
225
225
  ===========================
226
226
 
@@ -301,14 +301,14 @@ If passkey doesn't sync:
301
301
  Think of it like:
302
302
  \u{1F511} Passkey = Your car key (syncs via keychain)
303
303
  \u{1F697} Wallet = Your car (locked, needs key to start)
304
- `}}});var rs,Kc=m(()=>{"use strict";_e();rs=class{constructor(){this.storageKey="w3pk_devices"}async registerDevice(){let e={id:await ke(),name:this.getDeviceName(),platform:this.detectPlatform(),lastActive:new Date().toISOString(),trusted:!0,canRevoke:!1},t=await this.getDevices(),n=t.find(s=>s.id===e.id);return n?(n.lastActive=new Date().toISOString(),localStorage.setItem(this.storageKey,JSON.stringify(t))):(t.push(e),localStorage.setItem(this.storageKey,JSON.stringify(t))),e}async getDevices(){let e=localStorage.getItem(this.storageKey);if(!e)return[];try{return JSON.parse(e)}catch{return[]}}async getSyncStatus(){let e=await this.getDevices(),t=await ke();e.forEach(i=>{i.canRevoke=i.id!==t}),e.sort((i,o)=>new Date(o.lastActive).getTime()-new Date(i.lastActive).getTime());let n=this.detectPlatform(),s=e.length>1?new Date(Math.max(...e.map(i=>new Date(i.lastActive).getTime()))).toISOString():void 0;return{enabled:e.length>1,devices:e,lastSyncTime:s,platform:this.getPlatformName(n)}}async revokeDevice(e){let t=await this.getDevices(),n=await ke();if(e===n)throw new Error("Cannot revoke current device");let s=t.filter(i=>i.id!==e);localStorage.setItem(this.storageKey,JSON.stringify(s))}async updateLastActive(){let e=await this.getDevices(),t=await ke(),n=e.find(s=>s.id===t);n&&(n.lastActive=new Date().toISOString(),localStorage.setItem(this.storageKey,JSON.stringify(e)))}getDeviceName(){let e=this.detectPlatform(),t=navigator.userAgent;if(e==="ios")return t.includes("iPhone")?"iPhone":t.includes("iPad")?"iPad":t.includes("iPod")?"iPod":"iOS Device";if(e==="android"){let n=t.match(/Android.*;\s([^)]+)\)/);return n?n[1]:"Android Device"}return e==="macos"?"Mac":e==="windows"?"Windows PC":e==="linux"?"Linux PC":"Unknown Device"}detectPlatform(){let e=navigator.userAgent.toLowerCase();return e.includes("iphone")||e.includes("ipad")||e.includes("ipod")?"ios":e.includes("android")?"android":e.includes("mac")?"macos":e.includes("windows")?"windows":e.includes("linux")?"linux":"unknown"}getPlatformName(e){switch(e){case"ios":return"iOS (iCloud Keychain)";case"android":return"Android (Google)";case"macos":return"macOS (iCloud Keychain)";case"windows":return"Windows (Microsoft)";case"linux":return"Linux";default:return"Unknown"}}async getDeviceListFormatted(){let e=await this.getSyncStatus();if(e.devices.length===0)return"No devices registered";let t=`Your Devices (${e.devices.length}):
304
+ `}}});var cs,tl=p(()=>{"use strict";Ke();cs=class{constructor(){this.storageKey="w3pk_devices"}async registerDevice(){let e={id:await Ce(),name:this.getDeviceName(),platform:this.detectPlatform(),lastActive:new Date().toISOString(),trusted:!0,canRevoke:!1},t=await this.getDevices(),n=t.find(s=>s.id===e.id);return n?(n.lastActive=new Date().toISOString(),localStorage.setItem(this.storageKey,JSON.stringify(t))):(t.push(e),localStorage.setItem(this.storageKey,JSON.stringify(t))),e}async getDevices(){let e=localStorage.getItem(this.storageKey);if(!e)return[];try{return JSON.parse(e)}catch{return[]}}async getSyncStatus(){let e=await this.getDevices(),t=await Ce();e.forEach(i=>{i.canRevoke=i.id!==t}),e.sort((i,o)=>new Date(o.lastActive).getTime()-new Date(i.lastActive).getTime());let n=this.detectPlatform(),s=e.length>1?new Date(Math.max(...e.map(i=>new Date(i.lastActive).getTime()))).toISOString():void 0;return{enabled:e.length>1,devices:e,lastSyncTime:s,platform:this.getPlatformName(n)}}async revokeDevice(e){let t=await this.getDevices(),n=await Ce();if(e===n)throw new Error("Cannot revoke current device");let s=t.filter(i=>i.id!==e);localStorage.setItem(this.storageKey,JSON.stringify(s))}async updateLastActive(){let e=await this.getDevices(),t=await Ce(),n=e.find(s=>s.id===t);n&&(n.lastActive=new Date().toISOString(),localStorage.setItem(this.storageKey,JSON.stringify(e)))}getDeviceName(){let e=this.detectPlatform(),t=navigator.userAgent;if(e==="ios")return t.includes("iPhone")?"iPhone":t.includes("iPad")?"iPad":t.includes("iPod")?"iPod":"iOS Device";if(e==="android"){let n=t.match(/Android.*;\s([^)]+)\)/);return n?n[1]:"Android Device"}return e==="macos"?"Mac":e==="windows"?"Windows PC":e==="linux"?"Linux PC":"Unknown Device"}detectPlatform(){let e=navigator.userAgent.toLowerCase();return e.includes("iphone")||e.includes("ipad")||e.includes("ipod")?"ios":e.includes("android")?"android":e.includes("mac")?"macos":e.includes("windows")?"windows":e.includes("linux")?"linux":"unknown"}getPlatformName(e){switch(e){case"ios":return"iOS (iCloud Keychain)";case"android":return"Android (Google)";case"macos":return"macOS (iCloud Keychain)";case"windows":return"Windows (Microsoft)";case"linux":return"Linux";default:return"Unknown"}}async getDeviceListFormatted(){let e=await this.getSyncStatus();if(e.devices.length===0)return"No devices registered";let t=`Your Devices (${e.devices.length}):
305
305
 
306
306
  `;return e.devices.forEach((n,s)=>{let i=Date.now()-new Date(n.lastActive).getTime(),o=this.formatTimeDiff(i);t+=`${s+1}. ${n.name}
307
307
  `,t+=` Platform: ${this.getPlatformName(n.platform)}
308
308
  `,t+=` Last active: ${o}
309
309
  `,t+=` ${n.canRevoke?"":"(Current device)"}
310
310
 
311
- `}),t}formatTimeDiff(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),s=Math.floor(n/60),i=Math.floor(s/24);return i>0?`${i} day${i>1?"s":""} ago`:s>0?`${s} hour${s>1?"s":""} ago`:n>0?`${n} minute${n>1?"s":""} ago`:"just now"}}});var ns,Oc=m(()=>{"use strict";ns=class{async detectSyncCapabilities(){let e=this.detectPlatform(),t=await this.checkPasskeySync(),n=this.estimateDeviceCount();return{passkeysSync:t,platform:e,estimatedDevices:n,syncEnabled:t&&e!=="none"}}detectPlatform(){let e=navigator.userAgent.toLowerCase();return e.includes("mac")||e.includes("iphone")||e.includes("ipad")||e.includes("ipod")?"apple":e.includes("android")?"google":e.includes("windows")?"microsoft":"none"}async checkPasskeySync(){if(!window.PublicKeyCredential)return!1;try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return!1}}estimateDeviceCount(){return 1}getPlatformEducation(e){switch(e){case"apple":return`
311
+ `}),t}formatTimeDiff(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),s=Math.floor(n/60),i=Math.floor(s/24);return i>0?`${i} day${i>1?"s":""} ago`:s>0?`${s} hour${s>1?"s":""} ago`:n>0?`${n} minute${n>1?"s":""} ago`:"just now"}}});var ls,rl=p(()=>{"use strict";ls=class{async detectSyncCapabilities(){let e=this.detectPlatform(),t=await this.checkPasskeySync(),n=this.estimateDeviceCount();return{passkeysSync:t,platform:e,estimatedDevices:n,syncEnabled:t&&e!=="none"}}detectPlatform(){let e=navigator.userAgent.toLowerCase();return e.includes("mac")||e.includes("iphone")||e.includes("ipad")||e.includes("ipod")?"apple":e.includes("android")?"google":e.includes("windows")?"microsoft":"none"}async checkPasskeySync(){if(!window.PublicKeyCredential)return!1;try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return!1}}estimateDeviceCount(){return 1}getPlatformEducation(e){switch(e){case"apple":return`
312
312
  \u{1F34E} Apple iCloud Keychain
313
313
 
314
314
  Your passkey automatically syncs across:
@@ -387,7 +387,7 @@ This ensures you can recover if:
387
387
  - Device is lost/stolen
388
388
  - Device is damaged
389
389
  - You switch devices
390
- `}}getSyncInstructions(e){switch(e){case"apple":return["Open Settings on your iPhone/iPad/Mac","Tap your name at the top",'Tap "iCloud"','Enable "Keychain"','Enable "iCloud Backup" (recommended)'];case"google":return["Open Chrome Settings",'Click "You and Google"','Enable "Sync"','Ensure "Passwords" is checked',"Sign in on other devices with same Google account"];case"microsoft":return["Windows Hello sync is limited","Consider using:","- Encrypted backup file","- Social recovery","- Cloud backup (password-protected)"];case"none":return["Platform sync not available","Use alternative backup methods:","- Create encrypted backup file","- Set up social recovery","- Save recovery phrase securely"]}}}});var zc=m(()=>{"use strict"});var Wc={};x(Wc,{DeviceManager:()=>rs,DeviceSyncManager:()=>Rr,PlatformDetector:()=>ns,VaultSync:()=>ts});var $c=m(()=>{"use strict";_c();Kc();Oc();Dr();zc()});var Mt,Hc=m(()=>{"use strict";Mt=class{getScenarios(){return[{type:"lost-device",description:"Your phone fell in the ocean"},{type:"lost-phrase",description:"Your paper backup burned in a fire"},{type:"lost-both",description:"Phone stolen AND forgot recovery phrase"},{type:"switch-platform",description:"Switching from iPhone to Android"}]}async simulateScenario(e,t){let n=[];switch(e.type){case"lost-device":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:`Passkey Sync (${t.passkeySync.platform})`,success:!0,time:"5 minutes",requirements:["Sign in to cloud account on new device","Authenticate with biometric/PIN"]}),t.recoveryPhrase.encryptedBackups.length>0&&t.recoveryPhrase.encryptedBackups.forEach(o=>{n.push({method:`Encrypted ${o.method.toUpperCase()} Backup`,success:!0,time:"2 minutes",requirements:["Backup file/QR code","Backup password"]})}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`Contact ${t.socialRecovery.threshold} guardians`,"Collect shares from guardians","Verify identity with each guardian"]});break;case"lost-phrase":t.passkeySync.enabled&&n.push({method:"Passkey (current device)",success:!0,time:"Instant",requirements:["Access to current device","Biometric/PIN authentication"]}),t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Any synced device","Biometric authentication"]}),t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-both":t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Cloud account access","New device","Biometric setup"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`,"Identity verification with guardians"]});break;case"switch-platform":t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break}let s=n.length>0,i=this.getEducationalNote(e,n,t);return{scenario:e,success:s,availableMethods:n,timeEstimate:s?this.estimateFastestRecovery(n):"Cannot recover",educationalNote:i}}estimateFastestRecovery(e){let t=e.map(n=>n.time.toLowerCase());if(t.some(n=>n.includes("instant")))return"Instant";if(t.some(n=>n.includes("minute"))){let n=t.filter(s=>s.includes("minute")).map(s=>parseInt(s));return`${Math.min(...n)} minutes`}return t.some(n=>n.includes("hour"))?"24 hours":"Unknown"}getEducationalNote(e,t,n){let s=n.securityScore.total,i=n.securityScore.level;if(t.length===0)return`
390
+ `}}getSyncInstructions(e){switch(e){case"apple":return["Open Settings on your iPhone/iPad/Mac","Tap your name at the top",'Tap "iCloud"','Enable "Keychain"','Enable "iCloud Backup" (recommended)'];case"google":return["Open Chrome Settings",'Click "You and Google"','Enable "Sync"','Ensure "Passwords" is checked',"Sign in on other devices with same Google account"];case"microsoft":return["Windows Hello sync is limited","Consider using:","- Encrypted backup file","- Social recovery","- Cloud backup (password-protected)"];case"none":return["Platform sync not available","Use alternative backup methods:","- Create encrypted backup file","- Set up social recovery","- Save recovery phrase securely"]}}}});var nl=p(()=>{"use strict"});var sl={};x(sl,{DeviceManager:()=>cs,DeviceSyncManager:()=>Ur,PlatformDetector:()=>ls,VaultSync:()=>as});var il=p(()=>{"use strict";el();tl();rl();Nr();nl()});var Nt,ol=p(()=>{"use strict";Nt=class{getScenarios(){return[{type:"lost-device",description:"Your phone fell in the ocean"},{type:"lost-phrase",description:"Your paper backup burned in a fire"},{type:"lost-both",description:"Phone stolen AND forgot recovery phrase"},{type:"switch-platform",description:"Switching from iPhone to Android"}]}async simulateScenario(e,t){let n=[];switch(e.type){case"lost-device":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:`Passkey Sync (${t.passkeySync.platform})`,success:!0,time:"5 minutes",requirements:["Sign in to cloud account on new device","Authenticate with biometric/PIN"]}),t.recoveryPhrase.encryptedBackups.length>0&&t.recoveryPhrase.encryptedBackups.forEach(o=>{n.push({method:`Encrypted ${o.method.toUpperCase()} Backup`,success:!0,time:"2 minutes",requirements:["Backup file/QR code","Backup password"]})}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`Contact ${t.socialRecovery.threshold} guardians`,"Collect shares from guardians","Verify identity with each guardian"]});break;case"lost-phrase":t.passkeySync.enabled&&n.push({method:"Passkey (current device)",success:!0,time:"Instant",requirements:["Access to current device","Biometric/PIN authentication"]}),t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Any synced device","Biometric authentication"]}),t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-both":t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Cloud account access","New device","Biometric setup"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`,"Identity verification with guardians"]});break;case"switch-platform":t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break}let s=n.length>0,i=this.getEducationalNote(e,n,t);return{scenario:e,success:s,availableMethods:n,timeEstimate:s?this.estimateFastestRecovery(n):"Cannot recover",educationalNote:i}}estimateFastestRecovery(e){let t=e.map(n=>n.time.toLowerCase());if(t.some(n=>n.includes("instant")))return"Instant";if(t.some(n=>n.includes("minute"))){let n=t.filter(s=>s.includes("minute")).map(s=>parseInt(s));return`${Math.min(...n)} minutes`}return t.some(n=>n.includes("hour"))?"24 hours":"Unknown"}getEducationalNote(e,t,n){let s=n.securityScore.total,i=n.securityScore.level;if(t.length===0)return`
391
391
  \u274C WALLET CANNOT BE RECOVERED
392
392
 
393
393
  Scenario: ${e.description}
@@ -435,7 +435,7 @@ Scenario: ${e.description}
435
435
  `,t.forEach((a,c)=>{o+=`${c+1}. ${a.method}
436
436
  `,o+=` \u23F1 Time: ~${a.time}
437
437
  `,o+=` Requirements:
438
- `,a.requirements.forEach(l=>{o+=` - ${l}
438
+ `,a.requirements.forEach(u=>{o+=` - ${u}
439
439
  `}),o+=`
440
440
  `}),o+=`
441
441
  SECURITY RECOMMENDATIONS:
@@ -460,7 +460,7 @@ SECURITY RECOMMENDATIONS:
460
460
  `):(o+=`\u{1F3C6} Excellent! Score: ${s}/100
461
461
  `,o+=` Your wallet is extremely well-protected!
462
462
  `,o+=` You can survive almost any disaster scenario.
463
- `),o}async runInteractiveTest(e){let t=this.getScenarios(),n=[];for(let u of t){let d=await this.simulateScenario(u,e);n.push(d)}let s=n.filter(u=>u.success).length,i=s/t.length*100,o=e.securityScore.total,a=e.securityScore.level,c="";c+=`RECOVERY TEST RESULTS
463
+ `),o}async runInteractiveTest(e){let t=this.getScenarios(),n=[];for(let l of t){let d=await this.simulateScenario(l,e);n.push(d)}let s=n.filter(l=>l.success).length,i=s/t.length*100,o=e.securityScore.total,a=e.securityScore.level,c="";c+=`RECOVERY TEST RESULTS
464
464
  `,c+=`${"=".repeat(50)}
465
465
 
466
466
  `,i===100?c+=`\u{1F3C6} PERFECT! You can recover in ALL scenarios.
@@ -473,11 +473,11 @@ SECURITY SCORE: ${o}/100 (${a})
473
473
 
474
474
  `,c+=`SCORE BREAKDOWN:
475
475
 
476
- `;let l=e.securityScore.breakdown;return c+=`\u{1F511} Passkey Active: ${l.passkeyActive}/20
477
- `,c+=`\u{1F4F1} Multi-Device Sync: ${l.passkeyMultiDevice}/10
478
- `,c+=`\u{1F4BE} Encrypted Backup: ${l.encryptedBackup}/20
479
- `,c+=`\u2705 Backup Verified: ${l.phraseVerified}/20
480
- `,c+=`\u{1F465} Social Recovery: ${l.socialRecovery}/30
476
+ `;let u=e.securityScore.breakdown;return c+=`\u{1F511} Passkey Active: ${u.passkeyActive}/20
477
+ `,c+=`\u{1F4F1} Multi-Device Sync: ${u.passkeyMultiDevice}/10
478
+ `,c+=`\u{1F4BE} Encrypted Backup: ${u.encryptedBackup}/20
479
+ `,c+=`\u2705 Backup Verified: ${u.phraseVerified}/20
480
+ `,c+=`\u{1F465} Social Recovery: ${u.socialRecovery}/30
481
481
 
482
482
  `,c+=`NEXT STEPS:
483
483
  `,c+=`${"=".repeat(50)}
@@ -486,15 +486,15 @@ SECURITY SCORE: ${o}/100 (${a})
486
486
  `,c+=`Your wallet is extremely well-protected.
487
487
 
488
488
  `,o<100&&(c+=`To reach perfect 100/100:
489
- `,l.passkeyMultiDevice===0&&(c+=` \u2022 Sync passkey to another device (+10 pts)
490
- `),l.phraseVerified<20&&(c+=` \u2022 Verify your backup multiple times (+${20-l.phraseVerified} pts)
491
- `),l.socialRecovery<30&&(c+=` \u2022 Verify all your guardians (+${30-l.socialRecovery} pts)
489
+ `,u.passkeyMultiDevice===0&&(c+=` \u2022 Sync passkey to another device (+10 pts)
490
+ `),u.phraseVerified<20&&(c+=` \u2022 Verify your backup multiple times (+${20-u.phraseVerified} pts)
491
+ `),u.socialRecovery<30&&(c+=` \u2022 Verify all your guardians (+${30-u.socialRecovery} pts)
492
492
  `))):o>=50?(c+=`${e.securityScore.nextMilestone}
493
493
 
494
494
  `,c+=`Recommended actions:
495
- `,l.encryptedBackup===0&&(c+=` 1. Create encrypted backup (+20 pts)
496
- `),l.phraseVerified===0&&(c+=` 2. Test your backup (+10 pts)
497
- `),l.socialRecovery===0&&(c+=` 3. Set up social recovery (+20-30 pts)
495
+ `,u.encryptedBackup===0&&(c+=` 1. Create encrypted backup (+20 pts)
496
+ `),u.phraseVerified===0&&(c+=` 2. Test your backup (+10 pts)
497
+ `),u.socialRecovery===0&&(c+=` 3. Set up social recovery (+20-30 pts)
498
498
  `)):(c+=`\u26A0\uFE0F URGENT: Your wallet security is at risk!
499
499
 
500
500
  `,c+=`Critical actions needed:
@@ -503,7 +503,7 @@ SECURITY SCORE: ${o}/100 (${a})
503
503
  `,c+=` 3. Set up social recovery (+20-30 pts)
504
504
 
505
505
  `,c+=`Target: Reach at least 50/100 for basic protection.
506
- `),{scenarios:n,overallScore:i,securityScore:o,feedback:c}}}});function Mi(r){return ss[r]||null}function Ui(){return Object.keys(ss)}function Ni(r){let e=r.toLowerCase();return Object.values(ss).filter(t=>t.title.toLowerCase().includes(e)||t.content.toLowerCase().includes(e))}var ss,qc=m(()=>{"use strict";ss={whatIsPasskey:{title:"What is a Passkey?",content:`
506
+ `),{scenarios:n,overallScore:i,securityScore:o,feedback:c}}}});function Vi(r){return us[r]||null}function Gi(){return Object.keys(us)}function Yi(r){let e=r.toLowerCase();return Object.values(us).filter(t=>t.title.toLowerCase().includes(e)||t.content.toLowerCase().includes(e))}var us,al=p(()=>{"use strict";us={whatIsPasskey:{title:"What is a Passkey?",content:`
507
507
  Think of a passkey like your house smart lock:
508
508
 
509
509
  \u{1F511} Traditional Key (Password):
@@ -947,17 +947,17 @@ Good: 70 pts (backup + social recovery)
947
947
  Excellent: 80+ pts (all layers enabled)
948
948
 
949
949
  Remember: Higher score = Lower chance of loss!
950
- `}}});var is={};x(is,{RecoverySimulator:()=>Mt,educationalModules:()=>ss,getAllTopics:()=>Ui,getExplainer:()=>Mi,searchExplainers:()=>Ni});var Fr=m(()=>{"use strict";Hc();qc()});var ls={};x(ls,{deriveMLKemKeypair:()=>Mr,mlkemDecrypt:()=>cs,mlkemDecryptWithKey:()=>zi,mlkemEncrypt:()=>as,mlkemEncryptWithKey:()=>Oi});function De(r){r.fill(0)}function Ut(r){if(typeof btoa<"u"){let e=Array.from(r).map(t=>String.fromCharCode(t)).join("");return btoa(e)}return Buffer.from(r).toString("base64")}function at(r){if(typeof atob<"u"){let e=atob(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}return new Uint8Array(Buffer.from(r,"base64"))}async function Yc(r,e){let t=(0,_i.hkdf)(Ki.sha256,r,new Uint8Array(0),new TextEncoder().encode(Kf),32);try{return await crypto.subtle.importKey("raw",t,"AES-KW",!1,[e])}finally{De(t)}}async function Of(r,e,t){if(r===2){let s=await Yc(e,"unwrapKey");return crypto.subtle.unwrapKey("raw",t,s,"AES-KW",{name:"AES-GCM"},!1,["decrypt"])}let n=new Uint8Array(32);try{for(let s=0;s<32;s++)n[s]=t[s]^e[s];return await crypto.subtle.importKey("raw",n,{name:"AES-GCM"},!1,["decrypt"])}finally{De(n)}}async function Mr(r,e="mlkem-v1"){let t=await(0,os.createMlKem1024)(),n;if(typeof r=="string"){let i=r.startsWith("0x")?r.slice(2):r;if(typeof Buffer<"u")n=new Uint8Array(Buffer.from(i,"hex"));else{let o=new Uint8Array(i.length/2);for(let a=0;a<i.length;a+=2)o[a/2]=parseInt(i.substring(a,a+2),16);n=o}}else n=r;let s=(0,_i.hkdf)(Ki.sha256,n,new Uint8Array(Buffer.from("mlkem-keypair-v1","utf-8")),new Uint8Array(Buffer.from(e,"utf-8")),64);try{let[i,o]=t.deriveKeyPair(s);return{publicKey:i,privateKey:o}}finally{De(s),De(n)}}async function as(r,e){let t=await(0,os.createMlKem1024)(),n=Array.isArray(e)?e:[e];if(n.length===0)throw new Error("At least one public key is required");let s=new Uint8Array(32);crypto.getRandomValues(s);try{let i=new Uint8Array(12);crypto.getRandomValues(i);let a=new TextEncoder().encode(r),c=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!0,["encrypt"]),l=await crypto.subtle.encrypt({name:"AES-GCM",iv:i,tagLength:128},c,a),u=new Uint8Array(l),d=16;if(u.length<d)throw new Error("Encrypted data too short to contain auth tag");let h=u.slice(0,-d),p=u.slice(-d),g=[];for(let w of n){let b=typeof w=="string"?at(w):w;if(b.length!==1568)throw new Error(`Invalid ML-KEM public key size: ${b.length} (expected 1568)`);let[S,A]=t.encap(b);try{let v=await Yc(A,"wrapKey"),I=new Uint8Array(await crypto.subtle.wrapKey("raw",c,v,"AES-KW")),k=new Uint8Array(S.length+I.length);k.set(S,0),k.set(I,S.length),g.push({publicKey:Ut(b),ciphertext:Ut(k)})}finally{De(A)}}return{version:2,recipients:g,encryptedData:Ut(h),iv:Ut(i),authTag:Ut(p)}}finally{De(s)}}async function cs(r,e,t){let n=await(0,os.createMlKem1024)(),s=typeof e=="string"?at(e):e;if(s.length!==3168)throw new Error(`Invalid ML-KEM private key size: ${s.length} (expected 3168)`);let i=r.version??1;if(i!==1&&i!==2)throw new Error(`Unsupported payload version: ${String(i)}`);let o=at(r.encryptedData),a=at(r.iv),c=at(r.authTag);if(a.length!==Vc)throw new Error(`Invalid IV size: ${a.length} (expected ${Vc})`);if(c.length!==Gc)throw new Error(`Invalid auth tag size: ${c.length} (expected ${Gc})`);let l=Li+_f[i],u=async p=>{let g=at(p);if(g.length!==l)throw new Error(`Invalid combined ciphertext size: ${g.length} (expected ${l})`);let w=g.slice(0,Li),b=g.slice(Li),S=n.decap(w,s);try{return await Of(i,S,b)}finally{De(S)}},d=new Uint8Array(o.length+c.length);d.set(o,0),d.set(c,o.length);let h=async p=>{let g=await u(p),w=await crypto.subtle.decrypt({name:"AES-GCM",iv:a,tagLength:128},g,d);return new TextDecoder().decode(w)};if(t){let p=typeof t=="string"?at(t):t,g=Ut(p),w=r.recipients.find(b=>b.publicKey===g);if(!w)throw new Error("Public key not found in recipients list");return h(w.ciphertext)}for(let p of r.recipients)try{return await h(p.ciphertext)}catch{continue}throw new Error("No matching recipient found for this private key")}async function Oi(r,e,t,n="mlkem-v1"){let s=await Mr(e,n);try{let i=[s.publicKey,...t];return await as(r,i)}finally{De(s.privateKey)}}async function zi(r,e,t="mlkem-v1"){let n=await Mr(e,t);try{return await cs(r,n.privateKey,n.publicKey)}finally{De(n.privateKey)}}var os,_i,Ki,Li,_f,Vc,Gc,Kf,Ur=m(()=>{"use strict";os=require("mlkem"),_i=require("@noble/hashes/hkdf.js"),Ki=require("@noble/hashes/sha2.js"),Li=1568,_f={1:32,2:40},Vc=12,Gc=16,Kf="w3pk-mlkem-kek-v2"});function zf(r){return r[Symbol.asyncIterator]!=null}function Wf(r){if(zf(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Wi,Qc=m(()=>{"use strict";Wi=Wf});function $f(r){return r[Symbol.asyncIterator]!=null}function Hf(r,e=1){return e=Number(e),$f(r)?(async function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for await(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)})():(function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)})()}var us,$i=m(()=>{"use strict";us=Hf});async function*Nr(r,e=1){for await(let t of us(r,e)){let n=t.map(async s=>s().then(i=>({ok:!0,value:i}),i=>({ok:!1,err:i})));for(let s=0;s<n.length;s++){let i=await n[s];if(i.ok)yield i.value;else throw i.err}}}var Hi=m(()=>{"use strict";$i()});function Fe(r=0){return new Uint8Array(r)}function se(r=0){return new Uint8Array(r)}var ct=m(()=>{"use strict"});function qf(r){return r?.buffer instanceof ArrayBuffer}function Xc(r){if(qf(r))return r;let e=r.slice();return new Uint8Array(e.buffer,0,e.byteLength)}var Zc=m(()=>{"use strict"});function Lr(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=se(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return Xc(t)}var qi=m(()=>{"use strict";ct();Zc()});function el(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var tl=m(()=>{"use strict"});function rl(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function ds(r){return!!r?.[sl]}var sl,nl,Lt,il=m(()=>{"use strict";ct();qi();tl();sl=Symbol.for("@achingbrain/uint8arraylist");Lt=class r{constructor(...e){f(this,"bufs");f(this,"length");f(this,nl,!0);this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[(nl=sl,Symbol.iterator)](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(ds(n)){t+=n.byteLength;for(let s of n.bufs)this.bufs.push(s)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(ds(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=rl(this.bufs,e);return t.buf[t.index]}set(e,t){let n=rl(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(ds(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return Lr(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Lr(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=n,i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(o);break}let d=e-a;n.push(o.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(u){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!ds(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let d=0;d<i;d++)o[d]=-1;for(let d=0;d<s;d++)o[n[d]]=d;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let h=l;h>=0;h--){let p=this.get(d+h);if(n[h]!==p){u=Math.max(1,h-a[p]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=Fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=Fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!el(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}}});var Vi,hs,fs,ol,ps,al,cl,ll,ul,dl,hl,fl,_r=m(()=>{"use strict";Vi=BigInt(34),hs=8,fs=262144,ol="links-bytes",ps=262144,al=1048576,cl=50,ll=10,ul=!0,dl=!0,hl=!1,fl="file"});var pl,ml=m(()=>{"use strict";il();_r();pl=(r={})=>{let e=r.chunkSize??ps;return async function*(n){let s=new Lt,i=0,o=!1;for await(let a of n)for(s.append(a),i+=a.length;i>=e;)if(yield s.subarray(0,e),o=!0,e===s.length)s=new Lt,i=0;else{let l=new Lt;l.append(s.sublist(e)),s=l,i-=e}(!o||i>0)&&(yield s.subarray(0,i))}}});function gl(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function we(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return lt(r);if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return lt(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));throw new Error("Unknown type, must be binary type")}function yl(r){return new TextEncoder().encode(r)}function wl(r){return new TextDecoder().decode(r)}function Vf(r){return r?.buffer instanceof ArrayBuffer}function lt(r){return Vf(r)?r:r.slice()}var g0,He=m(()=>{"use strict";g0=new Uint8Array(0)});function Gf(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),o=i.charCodeAt(0);if(t[o]!==255)throw new TypeError(i+" is ambiguous");t[o]=s}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var w=0,b=0,S=0,A=g.length;S!==A&&g[S]===0;)S++,w++;for(var v=(A-S)*u+1>>>0,I=new Uint8Array(v);S!==A;){for(var k=g[S],F=0,T=v-1;(k!==0||F<b)&&T!==-1;T--,F++)k+=256*I[T]>>>0,I[T]=k%a>>>0,k=k/a>>>0;if(k!==0)throw new Error("Non-zero carry");b=F,S++}for(var z=v-b;z!==v&&I[z]===0;)z++;for(var Pe=c.repeat(w);z<v;++z)Pe+=r.charAt(I[z]);return Pe}function h(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var w=0;if(g[w]!==" "){for(var b=0,S=0;g[w]===c;)b++,w++;for(var A=(g.length-w)*l+1>>>0,v=new Uint8Array(A);g[w];){var I=t[g.charCodeAt(w)];if(I===255)return;for(var k=0,F=A-1;(I!==0||k<S)&&F!==-1;F--,k++)I+=a*v[F]>>>0,v[F]=I%256>>>0,I=I/256>>>0;if(I!==0)throw new Error("Non-zero carry");S=k,w++}if(g[w]!==" "){for(var T=A-S;T!==A&&v[T]===0;)T++;for(var z=new Uint8Array(b+(A-T)),Pe=b;T!==A;)z[Pe++]=v[T++];return z}}}function p(g){var w=h(g);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:p}}var Yf,jf,Sl,Al=m(()=>{"use strict";Yf=Gf,jf=Yf,Sl=jf});function xl(r,e){return new ji({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}function _t({name:r,prefix:e,encode:t,decode:n}){return new Ji(r,e,t,n)}function qe({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=Sl(t,r);return _t({prefix:e,name:r,encode:n,decode:i=>we(s(i))})}function Jf(r,e,t,n){let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),o=0,a=0,c=0;for(let l=0;l<s;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,o+=t,o>=8&&(o-=8,i[c++]=255&a>>o)}if(o>=t||(255&a<<8-o)!==0)throw new SyntaxError("Unexpected end of data");return i}function Qf(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,i+=e[s&a>>o];if(o!==0&&(i+=e[s&a<<t-o]),n)for(;(i.length*t&7)!==0;)i+="=";return i}function Xf(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function L({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let s=Xf(n);return _t({prefix:e,name:r,encode(i){return Qf(i,n,t)},decode(i){return Jf(i,s,t,r)}})}var Gi,Yi,ji,Ji,be=m(()=>{"use strict";He();Al();Gi=class{constructor(e,t,n){f(this,"name");f(this,"prefix");f(this,"baseEncode");this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Yi=class{constructor(e,t,n){f(this,"name");f(this,"prefix");f(this,"baseDecode");f(this,"prefixCodePoint");this.name=e,this.prefix=t;let s=t.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return xl(this,e)}},ji=class{constructor(e){f(this,"decoders");this.decoders=e}or(e){return xl(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};Ji=class{constructor(e,t,n,s){f(this,"name");f(this,"prefix");f(this,"baseEncode");f(this,"baseDecode");f(this,"encoder");f(this,"decoder");this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new Gi(e,t,n),this.decoder=new Yi(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}});var Qi={};x(Qi,{base32:()=>Q,base32hex:()=>rp,base32hexpad:()=>sp,base32hexpadupper:()=>ip,base32hexupper:()=>np,base32pad:()=>ep,base32padupper:()=>tp,base32upper:()=>Zf,base32z:()=>op});var Q,Zf,ep,tp,rp,np,sp,ip,op,Kr=m(()=>{"use strict";be();Q=L({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Zf=L({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),ep=L({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),tp=L({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rp=L({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),np=L({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),sp=L({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),ip=L({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),op=L({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var Xi={};x(Xi,{base36:()=>Or,base36upper:()=>ap});var Or,ap,Zi=m(()=>{"use strict";be();Or=qe({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),ap=qe({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var eo={};x(eo,{base58btc:()=>le,base58flickr:()=>cp});var le,cp,ms=m(()=>{"use strict";be();le=qe({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),cp=qe({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});function El(r,e,t){e=e||[],t=t||0;for(var n=t;r>=hp;)e[t++]=r&255|vl,r/=128;for(;r&dp;)e[t++]=r&255|vl,r>>>=7;return e[t]=r|0,El.bytes=t-n+1,e}function to(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw to.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&kl)<<s:(o&kl)*Math.pow(2,s),s+=7}while(o>=pp);return to.bytes=i-n,t}var lp,vl,up,dp,hp,fp,pp,kl,mp,gp,yp,wp,bp,Sp,Ap,xp,vp,kp,Ep,Cp,zr,Cl=m(()=>{"use strict";lp=El,vl=128,up=127,dp=~up,hp=Math.pow(2,31);fp=to,pp=128,kl=127;mp=Math.pow(2,7),gp=Math.pow(2,14),yp=Math.pow(2,21),wp=Math.pow(2,28),bp=Math.pow(2,35),Sp=Math.pow(2,42),Ap=Math.pow(2,49),xp=Math.pow(2,56),vp=Math.pow(2,63),kp=function(r){return r<mp?1:r<gp?2:r<yp?3:r<wp?4:r<bp?5:r<Sp?6:r<Ap?7:r<xp?8:r<vp?9:10},Ep={encode:lp,decode:fp,encodingLength:kp},Cp=Ep,zr=Cp});function Wr(r,e=0){return[zr.decode(r,e),zr.decode.bytes]}function Kt(r,e,t=0){return zr.encode(r,e,t),e}function Ot(r){return zr.encodingLength(r)}var ys=m(()=>{"use strict";Cl()});function Wt(r,e){let t=e.byteLength,n=Ot(r),s=n+Ot(t),i=new Uint8Array(s+t);return Kt(r,i,0),Kt(t,i,n),i.set(e,s),new zt(r,t,e,i)}function ws(r){let e=we(r),[t,n]=Wr(e),[s,i]=Wr(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new zt(t,s,o,e)}function Pl(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&gl(r.bytes,t.bytes)}}var zt,Ht=m(()=>{"use strict";He();ys();zt=class{constructor(e,t,n,s){f(this,"code");f(this,"size");f(this,"digest");f(this,"bytes");this.code=e,this.size=t,this.digest=lt(n),this.bytes=lt(s)}}});var ro=m(()=>{"use strict"});function Il(r,e){let{bytes:t,version:n}=r;return n===0?Ip(t,no(r),e??le.encoder):Bp(t,no(r),e??Q.encoder)}function no(r){let e=Bl.get(r);if(e==null){let t=new Map;return Bl.set(r,t),t}return e}function Pp(r,e){switch(r[0]){case"Q":{let t=e??le;return[le.prefix,t.decode(`${le.prefix}${r}`)]}case le.prefix:{let t=e??le;return[le.prefix,t.decode(r)]}case Q.prefix:{let t=e??Q;return[Q.prefix,t.decode(r)]}case Or.prefix:{let t=e??Or;return[Or.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Ip(r,e,t){let{prefix:n}=t;if(n!==le.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return s}function Bp(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let i=t.encode(r);return e.set(n,i),i}else return s}function Tl(r,e,t){let n=Ot(r),s=n+Ot(e),i=new Uint8Array(s+t.byteLength);return Kt(r,i,0),Kt(e,i,n),i.set(t,s),i}var Bl,Rl,V,$r,Tp,Rp,ut=m(()=>{"use strict";Kr();Zi();ms();He();Ht();ys();ro();Bl=new WeakMap;V=class r{constructor(e,t,n,s){f(this,"code");f(this,"version");f(this,"multihash");f(this,"bytes");f(this,"/");f(this,Rl,"CID");this.code=t,this.version=e,this.multihash=n,this.bytes=lt(s),this["/"]=this.bytes}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==$r)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Tp)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Wt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&Pl(e.multihash,n.multihash)}toString(e){return Il(this,e)}toJSON(){return{"/":Il(this)}}link(){return this}[(Rl=Symbol.toStringTag,Symbol.for("nodejs.util.inspect.custom"))](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:i,bytes:o}=t;return new r(n,s,i,o??Tl(n,s,i.bytes))}else if(t[Rp]===!0){let{version:n,multihash:s,code:i}=t,o=ws(s);return r.create(n,i,o)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==$r)throw new Error(`Version 0 CID must use dag-pb (code: ${$r}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Tl(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,$r,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=we(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=s.subarray(t.multihashSize-t.digestSize),o=new zt(t.multihashCode,t.digestSize,i,s);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,h]=Wr(e.subarray(t));return t+=h,d},s=n(),i=$r;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,a=n(),c=n(),l=t+c,u=l-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,s]=Pp(e,t),i=r.decode(s);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return no(i).set(n,e),i}};$r=112,Tp=18;Rp=Symbol.for("@ipld/js-cid/CID")});function so(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let s=r[e++];if(t+=n<28?(s&127)<<n:(s&127)*2**n,s<128)break}return[t,e]}function bs(r,e){let t;[t,e]=so(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function Dl(r,e){let t;return[t,e]=so(r,e),[t&7,t>>3,e]}function Fp(r){let e={},t=r.length,n=0;for(;n<t;){let s,i;if([s,i,n]=Dl(r,n),i===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(s!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=bs(r,n)}else if(i===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(s!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let o;[o,n]=bs(r,n),e.Name=Dp.decode(o)}else if(i===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(s!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Tsize`);[e.Tsize,n]=so(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${i}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function Fl(r){let e=r.length,t=0,n,s=!1,i;for(;t<e;){let a,c;if([a,c,t]=Dl(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(i)throw new Error("protobuf: (PBNode) duplicate Data section");[i,t]=bs(r,t),n&&(s=!0)}else if(c===2){if(s)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=bs(r,t),n.push(Fp(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let o={};return i&&(o.Data=i),o.Links=n||[],o}var Dp,Ml=m(()=>{"use strict";Dp=new TextDecoder});function Up(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=Hr(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=Nl.encode(r.Name);t-=n.length,e.set(n,t),t=Hr(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=Hr(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function Ll(r){let e=Lp(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=Hr(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let s=r.Links.length-1;s>=0;s--){let i=Up(r.Links[s],t.subarray(0,n));n-=i,n=Hr(t,n,i)-1,t[n]=18}return t}function Np(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+qt(t)}if(typeof r.Name=="string"){let t=Nl.encode(r.Name).length;e+=1+t+qt(t)}return typeof r.Tsize=="number"&&(e+=1+qt(r.Tsize)),e}function Lp(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+qt(t)}if(r.Links)for(let t of r.Links){let n=Np(t);e+=1+n+qt(n)}return e}function Hr(r,e,t){e-=qt(t);let n=e;for(;t>=Mp;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function qt(r){return r%2===0&&r++,Math.floor((_p(r)+6)/7)}function _p(r){let e=0;return r>=Ul&&(r=Math.floor(r/Ul),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+Kp[r]}var Nl,Ul,Mp,Kp,_l=m(()=>{"use strict";Nl=new TextEncoder,Ul=2**32,Mp=2**31;Kp=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]});function Ol(r,e){if(r===e)return 0;let t=r.Name?io.encode(r.Name):[],n=e.Name?io.encode(e.Name):[],s=t.length,i=n.length;for(let o=0,a=Math.min(s,i);o<a;++o)if(t[o]!==n[o]){s=t[o],i=n[o];break}return s<i?-1:i<s?1:0}function Kl(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function zl(r){if(typeof r.asCID=="object"){let t=V.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=V.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=V.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=V.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function X(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=io.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(zl),e.Links.sort(Ol);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function oo(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!Kl(r,Op))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!Kl(t,zp))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&Ol(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function Wl(r,e=[]){return X({Data:r,Links:e})}function $l(r,e,t){return zl({Hash:t,Name:r,Tsize:e})}function Hl(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var Op,zp,io,ql=m(()=>{"use strict";ut();Op=["Data","Links"],zp=["Hash","Name","Tsize"],io=new TextEncoder});var qr={};x(qr,{code:()=>$p,createLink:()=>$l,createNode:()=>Wl,decode:()=>Hp,encode:()=>Z,name:()=>Wp,prepare:()=>X,validate:()=>oo});function Z(r){oo(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),Ll(e)}function Hp(r){let e=Hl(r),t=Fl(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(s=>{let i={};try{i.Hash=V.decode(s.Hash)}catch{}if(!i.Hash)throw new Error("Invalid Hash field found in link, expected CID");return s.Name!==void 0&&(i.Name=s.Name),s.Tsize!==void 0&&(i.Tsize=s.Tsize),i})),n}var Wp,$p,dt=m(()=>{"use strict";ut();Ml();_l();ql();Wp="dag-pb",$p=112});var Vt,Vr,ao=m(()=>{"use strict";Vt=class Vt extends Error{constructor(t="Invalid type"){super(t);f(this,"name",Vt.name);f(this,"code",Vt.code)}};f(Vt,"name","InvalidTypeError"),f(Vt,"code","ERR_INVALID_TYPE");Vr=Vt});function Gr(r){if(r<qp)return 1;if(r<Vp)return 2;if(r<Gp)return 3;if(r<Vl)return 4;if(r<Gl)return 5;if(r<Yl)return 6;if(r<jl)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Jl(r,e,t=0){switch(Gr(r)){case 8:e[t++]=r&255|G,r/=128;case 7:e[t++]=r&255|G,r/=128;case 6:e[t++]=r&255|G,r/=128;case 5:e[t++]=r&255|G,r/=128;case 4:e[t++]=r&255|G,r>>>=7;case 3:e[t++]=r&255|G,r>>>=7;case 2:e[t++]=r&255|G,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Ql(r,e){let t=r[e],n=0;if(n+=t&Ve,t<G||(t=r[e+1],n+=(t&Ve)<<7,t<G)||(t=r[e+2],n+=(t&Ve)<<14,t<G)||(t=r[e+3],n+=(t&Ve)<<21,t<G)||(t=r[e+4],n+=(t&Ve)*Vl,t<G)||(t=r[e+5],n+=(t&Ve)*Gl,t<G)||(t=r[e+6],n+=(t&Ve)*Yl,t<G)||(t=r[e+7],n+=(t&Ve)*jl,t<G))return n;throw new RangeError("Could not decode varint")}var qp,Vp,Gp,Vl,Gl,Yl,jl,G,Ve,co=m(()=>{"use strict";ct();qp=Math.pow(2,7),Vp=Math.pow(2,14),Gp=Math.pow(2,21),Vl=Math.pow(2,28),Gl=Math.pow(2,35),Yl=Math.pow(2,42),jl=Math.pow(2,49),G=128,Ve=127});function Yp(r){return r.buffer instanceof ArrayBuffer}function Xl(r){return Yp(r)?r:r.slice()}var Zl=m(()=>{"use strict"});function eu(r,e,t){lo[0]=r,e[t]=Ge[0],e[t+1]=Ge[1],e[t+2]=Ge[2],e[t+3]=Ge[3]}function tu(r,e){return Ge[0]=r[e],Ge[1]=r[e+1],Ge[2]=r[e+2],Ge[3]=r[e+3],lo[0]}function ru(r,e,t){uo[0]=r,e[t]=$[0],e[t+1]=$[1],e[t+2]=$[2],e[t+3]=$[3],e[t+4]=$[4],e[t+5]=$[5],e[t+6]=$[6],e[t+7]=$[7]}function nu(r,e){return $[0]=r[e],$[1]=r[e+1],$[2]=r[e+2],$[3]=r[e+3],$[4]=r[e+4],$[5]=r[e+5],$[6]=r[e+6],$[7]=r[e+7],uo[0]}var lo,Ge,uo,$,ho=m(()=>{"use strict";lo=new Float32Array([-0]),Ge=new Uint8Array(lo.buffer);uo=new Float64Array([-0]),$=new Uint8Array(uo.buffer)});var jp,Jp,ie,ht,su,fo=m(()=>{"use strict";jp=BigInt(Number.MAX_SAFE_INTEGER),Jp=BigInt(Number.MIN_SAFE_INTEGER),ie=class r{constructor(e,t){f(this,"lo");f(this,"hi");this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return ht;if(e<jp&&e>Jp)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>su&&(s=0n,++n>su&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return ht;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):ht}},ht=new ie(0,0);ht.toBigInt=function(){return 0n};ht.zzEncode=ht.zzDecode=function(){return this};ht.length=function(){return 1};su=4294967296n});function iu(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function ou(r,e,t){if(t-e<1)return"";let s,i=[],o=0,a;for(;e<t;)a=r[e++],a<128?i[o++]=a:a>191&&a<224?i[o++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[o++]=55296+(a>>10),i[o++]=56320+(a&1023)):i[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,i)),o=0);return s!=null?(o>0&&s.push(String.fromCharCode.apply(String,i.slice(0,o))),s.join("")):String.fromCharCode.apply(String,i.slice(0,o))}function po(r,e,t){let n=t,s,i;for(let o=0;o<r.length;++o)s=r.charCodeAt(o),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((i=r.charCodeAt(o+1))&64512)===56320?(s=65536+((s&1023)<<10)+(i&1023),++o,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}var mo=m(()=>{"use strict"});function Se(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Ss(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}function Yr(r){return new go(r instanceof Uint8Array?r:r.subarray())}var go,As=m(()=>{"use strict";co();Zl();ho();fo();mo();go=class{constructor(e){f(this,"buf");f(this,"pos");f(this,"len");f(this,"_slice",Uint8Array.prototype.subarray);this.buf=Xl(e),this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Se(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Se(this,4);return Ss(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Se(this,4);return Ss(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Se(this,4);let e=tu(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Se(this,4);let e=nu(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Se(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return ou(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Se(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Se(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new ie(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Se(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Se(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Se(this,8);let e=Ss(this.buf,this.pos+=4),t=Ss(this.buf,this.pos+=4);return new ie(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Ql(this.buf,this.pos);return this.pos+=Gr(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}});function jr(r,e,t){let n=Yr(r);return e.decode(n,void 0,t)}var cu=m(()=>{"use strict";As()});var yo={};x(yo,{base10:()=>Qp});var Qp,lu=m(()=>{"use strict";be();Qp=qe({prefix:"9",name:"base10",alphabet:"0123456789"})});var wo={};x(wo,{base16:()=>Xp,base16upper:()=>Zp});var Xp,Zp,uu=m(()=>{"use strict";be();Xp=L({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Zp=L({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var bo={};x(bo,{base2:()=>em});var em,du=m(()=>{"use strict";be();em=L({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var So={};x(So,{base256emoji:()=>im});function nm(r){return r.reduce((e,t)=>(e+=tm[t],e),"")}function sm(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=rm[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var hu,tm,rm,im,fu=m(()=>{"use strict";be();hu=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),tm=hu.reduce((r,e,t)=>(r[t]=e,r),[]),rm=hu.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);im=_t({prefix:"\u{1F680}",name:"base256emoji",encode:nm,decode:sm})});var xo={};x(xo,{base64:()=>Ao,base64pad:()=>om,base64url:()=>am,base64urlpad:()=>cm});var Ao,om,am,cm,vo=m(()=>{"use strict";be();Ao=L({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),om=L({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),am=L({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),cm=L({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var ko={};x(ko,{base8:()=>lm});var lm,pu=m(()=>{"use strict";be();lm=L({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var Eo={};x(Eo,{identity:()=>um});var um,mu=m(()=>{"use strict";He();be();um=_t({prefix:"\0",name:"identity",encode:r=>wl(r),decode:r=>yl(r)})});var pb,mb,gu=m(()=>{"use strict";pb=new TextEncoder,mb=new TextDecoder});var Yt={};x(Yt,{code:()=>Gt,decode:()=>pm,encode:()=>fm,name:()=>hm});function fm(r){return we(r)}function pm(r){return we(r)}var hm,Gt,Jr=m(()=>{"use strict";He();hm="raw",Gt=85});var Co={};x(Co,{identity:()=>ym});function gm(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Wt(yu,wu(r))}var yu,mm,wu,ym,bu=m(()=>{"use strict";He();Ht();yu=0,mm="identity",wu=we;ym={code:yu,name:mm,encode:wu,digest:gm}});function ft({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:s}){return new Po(r,e,t,n,s)}function Su(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Wt(e,r)}var wm,Po,xs=m(()=>{"use strict";Ht();wm=20;Po=class{constructor(e,t,n,s,i){f(this,"name");f(this,"code");f(this,"encode");f(this,"minDigestLength");f(this,"maxDigestLength");this.name=e,this.code=t,this.encode=n,this.minDigestLength=s??wm,this.maxDigestLength=i}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?Su(n,this.code,t?.truncate):n.then(s=>Su(s,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}}});var Bo={};x(Bo,{sha256:()=>Io,sha512:()=>bm});function xu(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Io,bm,To=m(()=>{"use strict";xs();Io=ft({name:"sha2-256",code:18,encode:xu("SHA-256")}),bm=ft({name:"sha2-512",code:19,encode:xu("SHA-512")})});var vu=m(()=>{"use strict"});var ku=m(()=>{"use strict"});var Eu=m(()=>{"use strict"});var Cu=m(()=>{"use strict"});var Pu=m(()=>{"use strict";vu();ku();Eu();ro();Cu()});var Iu=m(()=>{"use strict";He();ut();Ht();xs();ys();Pu()});var Ro,Bb,Bu=m(()=>{"use strict";lu();uu();du();fu();Kr();Zi();ms();vo();pu();mu();gu();Jr();bu();To();Iu();Ro={...Eo,...bo,...ko,...yo,...wo,...Qi,...Xi,...eo,...xo,...So},Bb={...Bo,...Co}});function Ru(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Tu,Do,Sm,Du,Fu=m(()=>{"use strict";Bu();ct();Tu=Ru("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Do=Ru("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=se(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Sm={utf8:Tu,"utf-8":Tu,hex:Ro.base16,latin1:Do,ascii:Do,binary:Do,...Ro},Du=Sm});function jt(r,e="utf8"){let t=Du[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var vs=m(()=>{"use strict";Fu()});function Fo(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return se(o);s+o>e&&(n=se(e),s=0);let a=n.subarray(s,s+=o);return(s&7)!==0&&(s=(s|7)+1),a}}var Mu=m(()=>{"use strict";ct()});function Mo(){}function xm(r){return globalThis.Buffer!=null?se(r):Am(r)}function Uo(r,e,t){e[t]=r&255}function vm(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}function ks(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Qr(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function km(r,e,t){e.set(r,t)}function Em(r,e,t){e.set(r,t)}function Cm(r,e,t){r.length<40?po(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(jt(r),t)}function _o(){return new Xr}var pt,No,Am,Xr,Lo,Ko=m(()=>{"use strict";co();ct();vs();ho();fo();Mu();mo();pt=class{constructor(e,t,n){f(this,"fn");f(this,"len");f(this,"next");f(this,"val");this.fn=e,this.len=t,this.next=void 0,this.val=n}};No=class{constructor(e){f(this,"head");f(this,"tail");f(this,"len");f(this,"next");this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},Am=Fo();Xr=class{constructor(){f(this,"len");f(this,"head");f(this,"tail");f(this,"states");this.len=0,this.head=new pt(Mo,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new pt(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Lo((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(ks,10,ie.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=ie.fromBigInt(e);return this._push(ks,t.length(),t)}uint64Number(e){return this._push(Jl,Gr(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=ie.fromBigInt(e).zzEncode();return this._push(ks,t.length(),t)}sint64Number(e){let t=ie.fromNumber(e).zzEncode();return this._push(ks,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Uo,1,e?1:0)}fixed32(e){return this._push(Qr,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=ie.fromBigInt(e);return this._push(Qr,4,t.lo)._push(Qr,4,t.hi)}fixed64Number(e){let t=ie.fromNumber(e);return this._push(Qr,4,t.lo)._push(Qr,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(eu,4,e)}double(e){return this._push(ru,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Uo,1,0):this.uint32(t)._push(km,t,e)}string(e){let t=iu(e);return t!==0?this.uint32(t)._push(po,t,e):this._push(Uo,1,0)}fork(){return this.states=new No(this),this.head=this.tail=new pt(Mo,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new pt(Mo,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=xm(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};Lo=class extends pt{constructor(t,n){super(vm,t,n);f(this,"next");this.next=void 0}};globalThis.Buffer!=null&&(Xr.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(Em,e,r),this},Xr.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(Cm,e,r),this})});function Zr(r,e){let t=_o();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Uu=m(()=>{"use strict";Ko()});function*en(r,e,t){let n=Yr(r);yield*e.stream(n,void 0,"$",t)}var Nu=m(()=>{"use strict";As()});function Cs(r,e,t,n,s){return{name:r,type:e,encode:t,decode:n,stream:s}}var Es,Oo=m(()=>{"use strict";Es={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5}});function zo(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(o,a){let c=e(o);a.int32(c)},n=function(o){let a=o.int32();return e(a)},s=function*(o){let a=o.int32();yield e(a)};return Cs("enum",Es.VARINT,t,n,s)}var Lu=m(()=>{"use strict";Oo()});function tn(r,e,t){return Cs("message",Es.LENGTH_DELIMITED,r,e,t)}var _u=m(()=>{"use strict";Oo()});var rn,Ku=m(()=>{"use strict";cu();Uu();Nu();Lu();_u();As();Ko();rn=class extends Error{constructor(){super(...arguments);f(this,"code","ERR_MAX_LENGTH");f(this,"name","MaxLengthError")}}});var Ae,nn,Ou,zu=m(()=>{"use strict";Ku();(function(r){let e;(function(a){a.Raw="Raw",a.Directory="Directory",a.File="File",a.Metadata="Metadata",a.Symlink="Symlink",a.HAMTShard="HAMTShard"})(e=r.DataType||(r.DataType={}));let t;(function(a){a[a.Raw=0]="Raw",a[a.Directory=1]="Directory",a[a.File=2]="File",a[a.Metadata=3]="Metadata",a[a.Symlink=4]="Symlink",a[a.HAMTShard=5]="HAMTShard"})(t||(t={})),(function(a){a.codec=()=>zo(t)})(e=r.DataType||(r.DataType={}));let n;r.codec=()=>(n==null&&(n=tn((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.Type!=null&&(c.uint32(8),r.DataType.codec().encode(a.Type,c)),a.Data!=null&&(c.uint32(18),c.bytes(a.Data)),a.filesize!=null&&(c.uint32(24),c.uint64(a.filesize)),a.blocksizes!=null&&a.blocksizes.length>0)for(let u of a.blocksizes)c.uint32(32),c.uint64(u);a.hashType!=null&&(c.uint32(40),c.uint64(a.hashType)),a.fanout!=null&&(c.uint32(48),c.uint64(a.fanout)),a.mode!=null&&(c.uint32(56),c.uint32(a.mode)),a.mtime!=null&&(c.uint32(66),nn.codec().encode(a.mtime,c)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={blocksizes:[]},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let h=a.uint32();switch(h>>>3){case 1:{u.Type=r.DataType.codec().decode(a);break}case 2:{u.Data=a.bytes();break}case 3:{u.filesize=a.uint64();break}case 4:{if(l.limits?.blocksizes!=null&&u.blocksizes.length===l.limits.blocksizes)throw new rn('Decode error - repeated field "blocksizes" had too many elements');u.blocksizes.push(a.uint64());break}case 5:{u.hashType=a.uint64();break}case 6:{u.fanout=a.uint64();break}case 7:{u.mode=a.uint32();break}case 8:{u.mtime=nn.codec().decode(a,a.uint32(),{limits:l.limits?.mtime});break}default:{a.skipType(h&7);break}}}return u},function*(a,c,l,u={}){let d={blocksizes:0},h=c==null?a.len:a.pos+c;for(;a.pos<h;){let p=a.uint32();switch(p>>>3){case 1:{yield{field:`${l}.Type`,value:r.DataType.codec().decode(a)};break}case 2:{yield{field:`${l}.Data`,value:a.bytes()};break}case 3:{yield{field:`${l}.filesize`,value:a.uint64()};break}case 4:{if(u.limits?.blocksizes!=null&&d.blocksizes===u.limits.blocksizes)throw new rn('Streaming decode error - repeated field "blocksizes" had too many elements');yield{field:`${l}.blocksizes[]`,index:d.blocksizes,value:a.uint64()},d.blocksizes++;break}case 5:{yield{field:`${l}.hashType`,value:a.uint64()};break}case 6:{yield{field:`${l}.fanout`,value:a.uint64()};break}case 7:{yield{field:`${l}.mode`,value:a.uint32()};break}case 8:{yield*nn.codec().stream(a,a.uint32(),`${l}.mtime`,{limits:u.limits?.mtime});break}default:{a.skipType(p&7);break}}}})),n);function s(a){return Zr(a,r.codec())}r.encode=s;function i(a,c){return jr(a,r.codec(),c)}r.decode=i;function o(a,c){return en(a,r.codec(),c)}r.stream=o})(Ae||(Ae={}));(function(r){let e;r.codec=()=>(e==null&&(e=tn((i,o,a={})=>{a.lengthDelimited!==!1&&o.fork(),i.Seconds!=null&&(o.uint32(8),o.int64(i.Seconds)),i.FractionalNanoseconds!=null&&(o.uint32(21),o.fixed32(i.FractionalNanoseconds)),a.lengthDelimited!==!1&&o.ldelim()},(i,o,a={})=>{let c={},l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.Seconds=i.int64();break}case 2:{c.FractionalNanoseconds=i.fixed32();break}default:{i.skipType(u&7);break}}}return c},function*(i,o,a,c={}){let l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Seconds`,value:i.int64()};break}case 2:{yield{field:`${a}.FractionalNanoseconds`,value:i.fixed32()};break}default:{i.skipType(u&7);break}}}})),e);function t(i){return Zr(i,r.codec())}r.encode=t;function n(i,o){return jr(i,r.codec(),o)}r.decode=n;function s(i,o){return en(i,r.codec(),o)}r.stream=s})(nn||(nn={}));(function(r){let e;r.codec=()=>(e==null&&(e=tn((i,o,a={})=>{a.lengthDelimited!==!1&&o.fork(),i.MimeType!=null&&(o.uint32(10),o.string(i.MimeType)),a.lengthDelimited!==!1&&o.ldelim()},(i,o,a={})=>{let c={},l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();u>>>3===1?c.MimeType=i.string():i.skipType(u&7)}return c},function*(i,o,a,c={}){let l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();u>>>3===1?yield{field:`${a}.MimeType`,value:i.string()}:i.skipType(u&7)}})),e);function t(i){return Zr(i,r.codec())}r.encode=t;function n(i,o){return jr(i,r.codec(),o)}r.decode=n;function s(i,o){return en(i,r.codec(),o)}r.stream=s})(Ou||(Ou={}))});var Wu,Pm,$u,Hu,Y,Jt=m(()=>{"use strict";ao();zu();ao();Wu={Raw:"raw",Directory:"directory",File:"file",Metadata:"metadata",Symlink:"symlink",HAMTShard:"hamt-sharded-directory"},Pm=["directory","hamt-sharded-directory"],$u=parseInt("0644",8),Hu=parseInt("0755",8),Y=class r{constructor(e={type:"file"}){f(this,"type");f(this,"data");f(this,"blockSizes");f(this,"hashType");f(this,"fanout");f(this,"mtime");f(this,"_mode");f(this,"_originalMode");let{type:t,data:n,blockSizes:s,hashType:i,fanout:o,mtime:a,mode:c}=e;if(t!=null&&!Object.values(Wu).includes(t))throw new Vr("Type: "+t+" is not valid");this.type=t??"file",this.data=n,this.hashType=i,this.fanout=o,this.blockSizes=s??[],this._originalMode=0,this.mode=c,this.mtime=a}static unmarshal(e){let t=Ae.decode(e),n=new r({type:Wu[t.Type!=null?t.Type.toString():"File"],data:t.Data,blockSizes:t.blocksizes,mode:t.mode,mtime:t.mtime!=null?{secs:t.mtime.Seconds??0n,nsecs:t.mtime.FractionalNanoseconds}:void 0,fanout:t.fanout});return n._originalMode=t.mode??0,n}set mode(e){e==null?this._mode=this.isDirectory()?Hu:$u:this._mode=e&4095}get mode(){return this._mode}isDirectory(){return Pm.includes(this.type)}addBlockSize(e){this.blockSizes.push(e)}removeBlockSize(e){this.blockSizes.splice(e,1)}fileSize(){if(this.isDirectory())return 0n;let e=0n;return this.blockSizes.forEach(t=>{e+=t}),this.data!=null&&(e+=BigInt(this.data.length)),e}marshal(){let e;switch(this.type){case"raw":e=Ae.DataType.Raw;break;case"directory":e=Ae.DataType.Directory;break;case"file":e=Ae.DataType.File;break;case"metadata":e=Ae.DataType.Metadata;break;case"symlink":e=Ae.DataType.Symlink;break;case"hamt-sharded-directory":e=Ae.DataType.HAMTShard;break;default:throw new Vr(`Type: ${e} is not valid`)}let t=this.data;(this.data==null||this.data.length===0)&&(t=void 0);let n;this.mode!=null&&(n=this._originalMode&4294963200|(this.mode??0),n===$u&&!this.isDirectory()&&(n=void 0),n===Hu&&this.isDirectory()&&(n=void 0));let s;return this.mtime!=null&&(s={Seconds:this.mtime.secs,FractionalNanoseconds:this.mtime.nsecs}),Ae.encode({Type:e,Data:t,filesize:this.isDirectory()?void 0:this.fileSize(),blocksizes:this.blockSizes,hashType:this.hashType,fanout:this.fanout,mode:n,mtime:s})}}});var Me,Ps=m(()=>{"use strict";Me=class extends Event{constructor(t,n){super(t);f(this,"type");f(this,"detail");this.type=t,this.detail=n}}});var ue,Qt=m(()=>{"use strict";dt();ut();To();ue=async(r,e,t)=>{t.codec==null&&(t.codec=qr);let n=await Io.digest(r),s=V.create(t.cidVersion??1,t.codec.code,n);return await e.put(s,r,t),s}});function Vu(r){return async function*(t,n){let s=0n;for await(let i of t.content)yield async()=>{let o,a={codec:qr,cidVersion:r.cidVersion,onProgress:r.onProgress};r.rawLeaves?(a.codec=Yt,a.cidVersion=1):(o=new Y({type:r.leafType,data:i}),i=Z({Data:o.marshal(),Links:[]}));let c=await ue(i,n,a);return s+=BigInt(i.byteLength),r.onProgress?.(new Me("unixfs:importer:progress:file:write",{bytesWritten:s,cid:c,path:t.path})),{cid:c,unixfs:o,size:BigInt(i.length),block:i}}}}var Gu=m(()=>{"use strict";dt();Jt();Jr();Ps();Qt()});var Xt,nr,Zt,Wo,er,$o,tr,Ho,rr,xe,Ye,sn=m(()=>{"use strict";Xt=class Xt extends Error{constructor(t="Invalid parameters"){super(t);f(this,"name",Xt.name);f(this,"code",Xt.code)}};f(Xt,"name","InvalidParametersError"),f(Xt,"code","ERR_INVALID_PARAMS");nr=Xt,Zt=class Zt extends Error{constructor(t="Invalid avg chunk size"){super(t);f(this,"name",Zt.name);f(this,"code",Zt.code)}};f(Zt,"name","InvalidAvgChunkSizeError"),f(Zt,"code","ERR_INVALID_AVG_CHUNK_SIZE");Wo=Zt,er=class er extends Error{constructor(t="Invalid chunk size"){super(t);f(this,"name",er.name);f(this,"code",er.code)}};f(er,"name","InvalidChunkSizeError"),f(er,"code","ERR_INVALID_CHUNK_SIZE");$o=er,tr=class tr extends Error{constructor(t="Invalid min chunk size"){super(t);f(this,"name",tr.name);f(this,"code",tr.code)}};f(tr,"name","InvalidMinChunkSizeError"),f(tr,"code","ERR_INVALID_MIN_CHUNK_SIZE");Ho=tr,rr=class rr extends Error{constructor(t="Invalid content"){super(t);f(this,"name",rr.name);f(this,"code",rr.code)}};f(rr,"name","InvalidContentError"),f(rr,"code","ERR_INVALID_CONTENT");xe=rr,Ye=class extends Error{constructor(){super(...arguments);f(this,"name",xe.name);f(this,"code",xe.code)}};f(Ye,"name","InvalidShardingStrategyError"),f(Ye,"code","ERR_SHARDING_STRATEGY")});var Yu,ju=m(()=>{"use strict";dt();Jt();Qt();Yu=async(r,e,t)=>{let n=new Y({type:"directory",mtime:r.mtime,mode:r.mode}),s=Z(X({Data:n.marshal()})),i=await ue(s,e,t),o=r.path;return{cid:i,path:o,unixfs:n,size:BigInt(s.length),originalPath:r.originalPath,block:s}}});async function*Im(r,e,t){let n=-1,s;for await(let i of Nr(t.bufferImporter(r,e),t.blockWriteConcurrency)){if(n++,n===0){s={...i,single:!0};continue}else n===1&&s!=null&&(yield{...s,block:void 0,single:void 0},s=void 0);yield{...i,block:void 0}}s!=null&&(yield s)}function Ju(r){return r.single===!0}var Bm,Qu,Xu=m(()=>{"use strict";dt();Jt();Hi();Jr();Ps();Qt();Bm=(r,e,t)=>async function(s){if(s.length===1&&Ju(s[0])&&t.reduceSingleLeafToSelf){let u=s[0],d=u.block;return Ju(u)&&(r.mtime!==void 0||r.mode!==void 0)&&(u.unixfs=new Y({type:"file",mtime:r.mtime,mode:r.mode,data:u.block}),d={Data:u.unixfs.marshal(),Links:[]},u.block=Z(X(d)),u.cid=await ue(u.block,e,{...t,cidVersion:t.cidVersion}),u.size=BigInt(u.block.length)),t.onProgress?.(new Me("unixfs:importer:progress:file:layout",{cid:u.cid,path:r.originalPath})),{cid:u.cid,path:r.path,unixfs:u.unixfs,size:u.size,originalPath:r.originalPath}}let i=new Y({type:"file",mtime:r.mtime,mode:r.mode}),o=s.filter(u=>u.cid.code===Gt&&u.size>0||u.unixfs!=null&&u.unixfs.data==null&&u.unixfs.fileSize()>0n?!0:!!u.unixfs?.data?.length).map(u=>u.cid.code===Gt?(i.addBlockSize(u.size),{Name:"",Tsize:Number(u.size),Hash:u.cid}):(u.unixfs?.data==null?i.addBlockSize(u.unixfs?.fileSize()??0n):i.addBlockSize(BigInt(u.unixfs.data.length)),{Name:"",Tsize:Number(u.size),Hash:u.cid})),a={Data:i.marshal(),Links:o},c=Z(X(a)),l=await ue(c,e,t);return t.onProgress?.(new Me("unixfs:importer:progress:file:layout",{cid:l,path:r.originalPath})),{cid:l,path:r.path,unixfs:i,size:BigInt(c.length+a.Links.reduce((u,d)=>u+(d.Tsize??0),0)),originalPath:r.originalPath,block:c}},Qu=async(r,e,t)=>t.layout(Im(r,e,t),Bm(r,e,t))});function Tm(r){return Symbol.iterator in r}function Rm(r){return Symbol.asyncIterator in r}function Dm(r){try{if(r instanceof Uint8Array)return(async function*(){yield r})();if(Tm(r))return(async function*(){yield*r})();if(Rm(r))return r}catch{throw new xe("Content was invalid")}throw new xe("Content was invalid")}function Zu(r){return async function*(t,n){for await(let s of t){let i;if(s.path!=null&&(i=s.path,s.path=s.path.split("/").filter(o=>o!=null&&o!==".").join("/")),Fm(s)){let o={path:s.path,mtime:s.mtime,mode:s.mode,content:(async function*(){let c=0n;for await(let l of r.chunker(r.chunkValidator(Dm(s.content)))){let u=BigInt(l.byteLength);c+=u,r.onProgress?.(new Me("unixfs:importer:progress:file:read",{bytesRead:c,chunkSize:u,path:s.path})),yield l}})(),originalPath:i},a=r.fileBuilder??Qu;yield async()=>a(o,n,r)}else if(s.path!=null){let o={path:s.path,mtime:s.mtime,mode:s.mode,originalPath:i},a=r.dirBuilder??Yu;yield async()=>a(o,n,r)}else throw new Error("Import candidate must have content or path or both")}}}function Fm(r){return r.content!=null}var ed=m(()=>{"use strict";Ps();sn();ju();Xu()});var td,rd=m(()=>{"use strict";vs();sn();td=()=>async function*(e){for await(let t of e){if(t.length===void 0)throw new xe("Content was invalid");if(typeof t=="string"||t instanceof String)yield jt(t.toString());else if(Array.isArray(t))yield Uint8Array.from(t);else if(t instanceof Uint8Array)yield t;else throw new xe("Content was invalid")}}});function qo(r){let e=r?.maxChildrenPerNode??Mm;return async function t(n,s){let i=[];for await(let o of us(n,e))i.push(await s(o));return i.length>1?t(i,s):i[0]}}var Mm,nd=m(()=>{"use strict";$i();Mm=174});function Um(r){return r[Symbol.asyncIterator]!=null}function Nm(r){if(Um(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var sd,id=m(()=>{"use strict";sd=Nm});var od=m(()=>{"use strict";nd()});var Ee,Is=m(()=>{"use strict";ut();Ee=class{constructor(e,t){f(this,"options");f(this,"root");f(this,"dir");f(this,"path");f(this,"dirty");f(this,"flat");f(this,"parent");f(this,"parentKey");f(this,"unixfs");f(this,"mode");f(this,"mtime");f(this,"cid");f(this,"size");f(this,"nodeSize");this.options=t??{},this.root=e.root,this.dir=e.dir,this.path=e.path,this.dirty=e.dirty,this.flat=e.flat,this.parent=e.parent,this.parentKey=e.parentKey,this.unixfs=e.unixfs,this.mode=e.mode,this.mtime=e.mtime}}});function _m(r){let e=0;return r>=4294967296&&(r=Math.floor(r/4294967296),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+Lm[r]}function je(r){return r%2===0&&r++,Math.floor((_m(r)+6)/7)}function Bs(r){let e=0;for(let t=0;t<r.length;t++){let n=r.charCodeAt(t);n<128?e++:n<2048?e+=2:n>=55296&&n<=56319&&t+1<r.length?(t++,e+=4):e+=3}return e}function ad(r,e,t){let n=1+je(e)+e;return n+=1+je(r)+r,n+=1+je(t),1+je(n)+n}function cd(r,e){let t=2;if(r!==void 0&&r!==Km&&(t+=1+je(r)),e!=null){let n=0,s=Number(e.secs);s<0?n+=11:n+=1+je(s),e.nsecs!=null&&(n+=5),t+=1+je(n)+n}return 1+je(t)+t}var Lm,Km,ld=m(()=>{"use strict";Lm=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];Km=493});function Vo(r,e){return e?.cid!=null&&e?.size!=null?r+e.cid.byteLength:0}function Go(r,e){return e?.cid!=null&&e?.size!=null?ad(r,e.cid.byteLength,Number(e.size)):0}var mt,Yo=m(()=>{"use strict";dt();Jt();Is();jo();ld();Qt();mt=class extends Ee{constructor(t,n){super(t,n);f(this,"_children");this._children=new Map}async put(t,n){if(this.nodeSize!==void 0){let s=this._children.get(t),i=Bs(t),o=this.options?.shardSplitStrategy;if(o==="links-bytes")this.nodeSize-=Vo(i,s),this.nodeSize+=Vo(i,n);else if(o==="block-bytes")this.nodeSize-=Go(i,s),this.nodeSize+=Go(i,n);else throw new Ye(`Invalid shardSplitStrategy: ${o}`);this.nodeSize<0&&(this.nodeSize=void 0)}this.cid=void 0,this.size=void 0,this._children.set(t,n)}async get(t){return Promise.resolve(this._children.get(t))}childCount(){return this._children.size}directChildrenCount(){return this.childCount()}onlyChild(){return this._children.values().next().value}*eachChildSeries(){for(let[t,n]of this._children.entries())yield{key:t,child:n}}marshal(){let t=new Y({type:"directory",mtime:this.mtime,mode:this.mode}),n=[];for(let[i,o]of this._children.entries())if(!(o.size==null||o.cid==null)){if(o.cid==null)throw new Error("Directory contents must be flushed before marshaling");n.push({Hash:o.cid,Name:i,Tsize:o.size==null?void 0:Number(o.size)})}let s={Data:t.marshal(),Links:n};return Z(X(s))}async estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;let t=this.options?.shardSplitStrategy;if(t==="links-bytes"){this.nodeSize=0;for(let[n,s]of this._children.entries())this.nodeSize+=Vo(Bs(n),s)}else if(t==="block-bytes"){this.nodeSize=cd(this.mode,this.mtime);for(let[n,s]of this._children.entries())this.nodeSize+=Go(Bs(n),s)}else throw new Ye(`Invalid shardSplitStrategy: ${t}`);return this.nodeSize}async*flush(t){let n=[];for(let[l,u]of this._children.entries()){let d=u;if(u instanceof Ee)for await(let h of u.flush(t))d=h,yield h;d.size!=null&&d.cid!=null&&n.push({Name:l,Tsize:Number(d.size),Hash:d.cid})}let s=new Y({type:"directory",mtime:this.mtime,mode:this.mode}),i={Data:s.marshal(),Links:n},o=Z(X(i)),a=await ue(o,t,this.options),c=o.length+i.Links.reduce((l,u)=>l+(u.Tsize??0),0);this.cid=a,this.size=c,yield{cid:a,unixfs:s,path:this.path,size:BigInt(c)}}}});function Je(r,e){let t=r.lo+e.lo>>>0,n=r.hi+e.hi+(t<r.lo?1:0)>>>0;return{lo:t,hi:n}}function Om(r,e){return r+e>>>0}function de(r,e){let t=r.lo&65535,n=r.lo>>>16,s=e.lo&65535,i=e.lo>>>16,o=t*s,a=t*i,c=n*s,l=n*i,u=(o>>>16)+(a&65535)+(c&65535)>>>0,d=(u<<16|o&65535)>>>0,h=l+(a>>>16)+(c>>>16)+(u>>>16),p=Math.imul(r.lo,e.hi),g=Math.imul(r.hi,e.lo),w=h+p+g>>>0;return{lo:d,hi:w}}function gt(r,e){return Math.imul(r,e)>>>0}function sr(r,e){if(e===0)return r;if(e===32)return{lo:r.hi,hi:r.lo};if(e<32){let s=(r.lo<<e|r.hi>>>32-e)>>>0,i=(r.hi<<e|r.lo>>>32-e)>>>0;return{lo:s,hi:i}}e-=32;let t=(r.hi<<e|r.lo>>>32-e)>>>0,n=(r.lo<<e|r.hi>>>32-e)>>>0;return{lo:t,hi:n}}function U(r,e){return{lo:(r.lo^e.lo)>>>0,hi:(r.hi^e.hi)>>>0}}function Jo(r,e){if(e===0)return r;if(e<32){let t=(r.lo>>>e|r.hi<<32-e)>>>0,n=r.hi>>>e;return{lo:t,hi:n}}return{lo:r.hi>>>e-32,hi:0}}function B(r,e){return{lo:r>>>0,hi:e>>>0}}function Qo(r,e){return(r<<e|r>>>32-e)>>>0}function ud(r,e){let t=e*8,n=r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24,s=r[t+4]|r[t+5]<<8|r[t+6]<<16|r[t+7]<<24;return{lo:n>>>0,hi:s>>>0}}function zm(r,e){let t=e*4;return(r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24)>>>0}function dd(r){return r=U(r,Jo(r,33)),r=de(r,B(3981806797,4283543511)),r=U(r,Jo(r,33)),r=de(r,B(444984403,3301882366)),r=U(r,Jo(r,33)),r}function Wm(r){return r^=r>>>16,r=gt(r,2246822507),r^=r>>>13,r=gt(r,3266489909),r^=r>>>16,r}function Xo(r,e=0){let t=B(e,0),n=B(e,0),s=r.length,i=Math.floor(s/16),o=B(289559509,2277735313),a=B(658871167,1291169091);for(let h=0;h<i;h++){let p=ud(r,h*2),g=ud(r,h*2+1);p=de(p,o),p=sr(p,31),p=de(p,a),t=U(t,p),t=sr(t,27),t=Je(t,n),t=Je(de(t,B(5,0)),B(1390208809,0)),g=de(g,a),g=sr(g,33),g=de(g,o),n=U(n,g),n=sr(n,31),n=Je(n,t),n=Je(de(n,B(5,0)),B(944331445,0))}let c=B(0,0),l=B(0,0),u=r.slice(i*16);switch(u.length){case 15:l=U(l,B(0,u[14]<<16));case 14:l=U(l,B(0,u[13]<<8));case 13:l=U(l,B(0,u[12]));case 12:l=U(l,B(u[11]<<24,0));case 11:l=U(l,B(u[10]<<16,0));case 10:l=U(l,B(u[9]<<8,0));case 9:l=U(l,B(u[8],0)),l=de(l,a),l=sr(l,33),l=de(l,o),n=U(n,l);case 8:c=U(c,B(0,u[7]<<24));case 7:c=U(c,B(0,u[6]<<16));case 6:c=U(c,B(0,u[5]<<8));case 5:c=U(c,B(0,u[4]));case 4:c=U(c,B(u[3]<<24,0));case 3:c=U(c,B(u[2]<<16,0));case 2:c=U(c,B(u[1]<<8,0));case 1:c=U(c,B(u[0],0)),c=de(c,o),c=sr(c,31),c=de(c,a),t=U(t,c)}let d=B(s,0);return t=U(t,d),n=U(n,d),t=Je(t,n),n=Je(n,t),t=dd(t),n=dd(n),t=Je(t,n),n=Je(n,t),new Uint8Array([t.hi>>>24&255,t.hi>>>16&255,t.hi>>>8&255,t.hi&255,t.lo>>>24&255,t.lo>>>16&255,t.lo>>>8&255,t.lo&255,n.hi>>>24&255,n.hi>>>16&255,n.hi>>>8&255,n.hi&255,n.lo>>>24&255,n.lo>>>16&255,n.lo>>>8&255,n.lo&255])}function hd(r,e=0){let t=e>>>0,n=r.length,s=Math.floor(n/4),i=3432918353,o=461845907;for(let l=0;l<s;l++){let u=zm(r,l);u=gt(u,i),u=Qo(u,15),u=gt(u,o),t^=u,t=Qo(t,13),t=Om(gt(t,5),3864292196)}let a=r.slice(s*4),c=0;switch(a.length){case 3:c^=a[2]<<16;case 2:c^=a[1]<<8;case 1:c^=a[0],c=gt(c,i),c=Qo(c,15),c=gt(c,o),t^=c}return t^=n,t=Wm(t),t}var fd=m(()=>{"use strict"});function Hm(r){let e=new Array(4);for(let t=0;t<4;t++)e[t]=r&255,r=r>>8;return new Uint8Array(e)}var dS,pd,hS,md=m(()=>{"use strict";xs();fd();dS=ft({name:"murmur3-32",code:35,encode:r=>Hm(hd(r))}),pd=ft({name:"murmur3-128",code:34,encode:r=>Xo(r)}),hS=ft({name:"murmur3-x64-64",code:34,encode:r=>Xo(r).subarray(0,8)})});var ir,Qe,gd=m(()=>{"use strict";ir=class ir extends Error{constructor(t="Not Found"){super(t);f(this,"name",ir.name);f(this,"code",ir.code)}};f(ir,"name","NotFoundError"),f(ir,"code","ERR_NOT_FOUND");Qe=ir});var Ts=m(()=>{"use strict";gd()});var Ce,on=m(()=>{"use strict";Ce=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,bytes:s}of e)await this.put(n,s,t),yield n}get(e,t){throw new Error(".get is not implemented")}async*getMany(e,t){for await(let n of e)yield{cid:n,bytes:this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}}});var or,Zo=m(()=>{"use strict";Ts();on();or=class extends Ce{put(e,t,n){return n?.signal?.throwIfAborted(),e}get(e,t){throw t?.signal?.throwIfAborted(),new Qe}has(e,t){return t?.signal?.throwIfAborted(),!1}async delete(e,t){t?.signal?.throwIfAborted()}async*getAll(e){e?.signal?.throwIfAborted()}}});var bd=E((vS,wd)=>{"use strict";wd.exports=class{constructor(){this._bitArrays=[],this._data=[],this._length=0,this._changedLength=!1,this._changedData=!1}set(e,t){let n=this._internalPositionFor(e,!1);if(t===void 0)n!==-1&&(this._unsetInternalPos(n),this._unsetBit(e),this._changedLength=!0,this._changedData=!0);else{let s=!1;n===-1?(n=this._data.length,this._setBit(e),this._changedData=!0):s=!0,this._setInternalPos(n,e,t,s),this._changedLength=!0}}unset(e){this.set(e,void 0)}get(e){this._sortData();let t=this._internalPositionFor(e,!0);if(t!==-1)return this._data[t][1]}push(e){return this.set(this.length,e),this.length}get length(){if(this._sortData(),this._changedLength){let e=this._data[this._data.length-1];this._length=e?e[0]+1:0,this._changedLength=!1}return this._length}forEach(e){let t=0;for(;t<this.length;)e(this.get(t),t,this),t++}map(e){let t=0,n=new Array(this.length);for(;t<this.length;)n[t]=e(this.get(t),t,this),t++;return n}reduce(e,t){let n=0,s=t;for(;n<this.length;){let i=this.get(n);s=e(s,i,n),n++}return s}find(e){let t=0,n,s;for(;t<this.length&&!n;)s=this.get(t),n=e(s),t++;return n?s:void 0}_internalPositionFor(e,t){let n=this._bytePosFor(e,t);if(n>=this._bitArrays.length)return-1;let s=this._bitArrays[n],i=e-n*7;if(!((s&1<<i)>0))return-1;let a=this._bitArrays.slice(0,n).reduce(qm,0),c=~(4294967295<<i+1),l=yd(s&c);return a+l-1}_bytePosFor(e,t){let n=Math.floor(e/7),s=n+1;for(;!t&&this._bitArrays.length<s;)this._bitArrays.push(0);return n}_setBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]|=1<<e-t*7}_unsetBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]&=~(1<<e-t*7)}_setInternalPos(e,t,n,s){let i=this._data,o=[t,n];if(s)this._sortData(),i[e]=o;else{if(i.length)if(i[i.length-1][0]>=t)i.push(o);else if(i[0][0]<=t)i.unshift(o);else{let a=Math.round(i.length/2);this._data=i.slice(0,a).concat(o).concat(i.slice(a))}else this._data.push(o);this._changedData=!0,this._changedLength=!0}}_unsetInternalPos(e){this._data.splice(e,1)}_sortData(){this._changedData&&this._data.sort(Vm),this._changedData=!1}bitField(){let e=[],t=8,n=0,s=0,i,o=this._bitArrays.slice();for(;o.length||n;){n===0&&(i=o.shift(),n=7);let c=Math.min(n,t),l=~(255<<c),u=i&l;s|=u<<8-t,i=i>>>c,n-=c,t-=c,(!t||!n&&!o.length)&&(e.push(s),s=0,t=8)}for(var a=e.length-1;a>0&&e[a]===0;a--)e.pop();return e}compactArray(){return this._sortData(),this._data.map(Gm)}};function qm(r,e){return r+yd(e)}function yd(r){let e=r;return e=e-(e>>1&1431655765),e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>24}function Vm(r,e){return r[0]-e[0]}function Gm(r){return r[1]}});function Ym(r){return!!r}function jm(r,e){return r.key}function Jm(r){return r}async function Ad(r,e,t){let n=[];for(let s of r._children.compactArray())if(s instanceof Xe)await Ad(s,e,t);else{let i=await e(s);n.push({bitField:r._children.bitField(),children:i})}return t(n)}var Sd,Xe,xd=m(()=>{"use strict";Sd=W(bd(),1);vs();Xe=class r{constructor(e,t,n=0){f(this,"_options");f(this,"_popCount");f(this,"_parent");f(this,"_posAtParent");f(this,"_children");f(this,"key");this._options=e,this._popCount=0,this._parent=t,this._posAtParent=n,this._children=new Sd.default,this.key=null}async put(e,t){let n=await this._findNewBucketAndPos(e);n.bucket._putAt(n,e,t)}async get(e){let t=await this._findChild(e);if(t!=null)return t.value}async del(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);n!=null&&n.key===e&&t.bucket._delAt(t.pos)}leafCount(){return this._children.compactArray().reduce((t,n)=>n instanceof r?t+n.leafCount():t+1,0)}childrenCount(){return this._children.length}onlyChild(){return this._children.get(0)}*eachLeafSeries(){let e=this._children.compactArray();for(let t of e)t instanceof r?yield*t.eachLeafSeries():yield t}serialize(e,t){let n=[];return t(this._children.reduce((s,i,o)=>(i!=null&&(i instanceof r?s.push(i.serialize(e,t)):s.push(e(i,o))),s),n))}async asyncTransform(e,t){return Ad(this,e,t)}toJSON(){return this.serialize(jm,Jm)}prettyPrint(){return JSON.stringify(this.toJSON(),null," ")}tableSize(){return Math.pow(2,this._options.bits)}async _findChild(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);if(!(n instanceof r)&&n!=null&&n.key===e)return n}async _findPlace(e){let t=this._options.hash(typeof e=="string"?jt(e):e),n=await t.take(this._options.bits),s=this._children.get(n);return s instanceof r?s._findPlace(t):{bucket:this,pos:n,hash:t,existingChild:s}}async _findNewBucketAndPos(e){let t=await this._findPlace(e);if(t.existingChild!=null&&t.existingChild.key!==e){let n=new r(this._options,t.bucket,t.pos);t.bucket._putObjectAt(t.pos,n);let s=await n._findPlace(t.existingChild.hash);return s.bucket._putAt(s,t.existingChild.key,t.existingChild.value),n._findNewBucketAndPos(t.hash)}return t}_putAt(e,t,n){this._putObjectAt(e.pos,{key:t,value:n,hash:e.hash})}_putObjectAt(e,t){this._children.get(e)==null&&this._popCount++,this._children.set(e,t)}_delAt(e){if(e===-1)throw new Error("Invalid position");this._children.get(e)!=null&&this._popCount--,this._children.unset(e),this._level()}_level(){if(this._parent!=null&&this._popCount<=1)if(this._popCount===1){let e=this._children.find(Ym);if(e!=null&&!(e instanceof r)){let t=e.hash;t.untake(this._options.bits);let n={pos:this._posAtParent,hash:t,bucket:this._parent};this._parent._putAt(n,e.key,e.value)}}else this._parent._delAt(this._posAtParent)}_at(e){return this._children.get(e)}}});function Zm(r,e,t){let n=eg(e,t);return(r&n)>>>e}function eg(r,e){return Qm[r]&Xm[Math.min(e+r-1,7)]}var Qm,Xm,Rs,vd=m(()=>{"use strict";Qm=[255,254,252,248,240,224,192,128],Xm=[1,3,7,15,31,63,127,255],Rs=class{constructor(e){f(this,"_value");f(this,"_currentBytePos");f(this,"_currentBitPos");this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+this._currentBytePos*8}totalBits(){return this._value.length*8}take(e){let t=e,n=0;for(;t>0&&this._haveBits();){let s=this._value[this._currentBytePos],i=this._currentBitPos+1,o=Math.min(i,t),a=Zm(s,i-o,o);n=(n<<o)+a,t-=o,this._currentBitPos-=o,this._currentBitPos<0&&(this._currentBitPos=7,this._currentBytePos--)}return n}untake(e){for(this._currentBitPos+=e;this._currentBitPos>7;)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}}});function kd(r){function e(t){return t instanceof Ds?t:new Ds(t,r)}return e}var Ds,Ed=m(()=>{"use strict";qi();vd();Ds=class{constructor(e,t){f(this,"_value");f(this,"_hashFn");f(this,"_depth");f(this,"_availableBits");f(this,"_currentBufferIndex");f(this,"_buffers");if(!(e instanceof Uint8Array))throw new Error("can only hash Uint8Arrays");this._value=e,this._hashFn=t,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;for(;this._availableBits<t;)await this._produceMoreBits();let n=0;for(;t>0;){let s=this._buffers[this._currentBufferIndex],i=Math.min(s.availableBits(),t),o=s.take(i);n=(n<<i)+o,t-=i,this._availableBits-=i,s.availableBits()===0&&this._currentBufferIndex++}return n}untake(e){let t=e;for(;t>0;){let n=this._buffers[this._currentBufferIndex],s=Math.min(n.totalBits()-n.availableBits(),t);n.untake(s),t-=s,this._availableBits+=s,this._currentBufferIndex>0&&n.totalBits()===n.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;let e=this._depth>0?Lr([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new Rs(t);this._buffers.push(n),this._availableBits+=n.availableBits()}}});function Cd(r){if(r==null||r.hashFn==null)throw new Error("please define an options.hashFn");let e={bits:r.bits??8,hash:kd(r.hashFn)};return new Xe(e)}var Pd=m(()=>{"use strict";xd();Ed()});async function tg(r){return(await pd.encode(r)).slice(0,8).reverse()}async function*Bd(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0n;for(let g=0;g<s.length;g++){let w=s.get(g);if(w==null)continue;let b=g.toString(16).toUpperCase().padStart(i,"0");if(w instanceof Xe){let S;for await(let A of Bd(w,e,null,n))S=A;if(S==null)throw new Error("Could not flush sharded directory, no sub-shard found");o.push({Name:b,Tsize:Number(S.size),Hash:S.cid}),a+=S.size}else if(Td(w.value)){let S=w.value,A;for await(let I of S.flush(e))A=I,yield A;if(A==null)throw new Error("Did not flush dir");let v=b+w.key;o.push({Name:v,Tsize:Number(A.size),Hash:A.cid}),a+=A.size}else{let S=w.value;if(S.cid==null)continue;let A=b+w.key,v=S.size;o.push({Name:A,Tsize:Number(v),Hash:S.cid}),a+=BigInt(v??0)}}let c=Uint8Array.from(s.bitField().reverse()),l=new Y({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:Vi,mtime:t?.mtime,mode:t?.mode}),u={Data:l.marshal(),Links:o},d=Z(X(u)),h=await ue(d,e,n),p=BigInt(d.byteLength)+a;yield{cid:h,unixfs:l,size:p}}function Td(r){return typeof r.flush=="function"}async function Rd(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0;for(let h=0;h<s.length;h++){let p=s.get(h);if(p==null)continue;let g=h.toString(16).toUpperCase().padStart(i,"0");if(p instanceof Xe){let{size:w,cid:b}=await Rd(p,null,t,n);o.push({Name:g,Tsize:Number(w),Hash:b}),a+=g.length+b.byteLength}else if(Td(p.value)){let w=p.value,b=w.nodeSize;if(w.cid==null)throw new Error("Child directory has not been persisted");o.push({Name:g+p.key,Tsize:Number(b),Hash:w.cid}),a+=g.length+w.cid.byteLength}else{let w=p.value,b=g+p.key,S=w.size;o.push({Name:b,Tsize:Number(S),Hash:w.cid}),a+=g.length+w.cid.byteLength}}let c=Uint8Array.from(s.bitField().reverse()),l=new Y({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:Vi,mtime:e?.mtime,mode:e?.mode}),u=Z(X({Data:l.marshal(),Links:o}));return{cid:await ue(u,t,n),size:n.shardSplitStrategy==="links-bytes"?a:u.length}}var ea,Id,Dd=m(()=>{"use strict";dt();md();Zo();Pd();Jt();_r();Is();Qt();ea=class extends Ee{constructor(t,n){super(t,n);f(this,"bucket");this.bucket=Cd({hashFn:tg,bits:n.shardFanoutBits??hs})}async put(t,n){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,await this.bucket.put(t,n)}async get(t){return this.bucket.get(t)}childCount(){return this.bucket.leafCount()}directChildrenCount(){return this.bucket.childrenCount()}onlyChild(){return this.bucket.onlyChild()}*eachChildSeries(){for(let{key:t,value:n}of this.bucket.eachLeafSeries())yield{key:t,child:n}}async estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;let t=new or,n=await Rd(this.bucket,this,t,this.options);return this.nodeSize=n.size,this.nodeSize}async*flush(t){for await(let n of Bd(this.bucket,t,this,this.options))yield{...n,path:this.path}}},Id=ea});async function ta(r,e){let t=e,n=e.options.shardSplitThresholdBytes??fs;e instanceof mt&&await e.estimateNodeSize()>n&&(t=await rg(e));let s=t.parent;if(s!=null){if(t!==e){if(r!=null&&(r.parent=t),t.parentKey==null)throw new Error("No parent key found");await s.put(t.parentKey,t)}return ta(t,s)}return t}async function rg(r){let e=new Id({root:r.root,dir:!0,parent:r.parent,parentKey:r.parentKey,path:r.path,dirty:r.dirty,flat:!1,mtime:r.mtime,mode:r.mode},r.options);for(let{key:t,child:n}of r.eachChildSeries())await e.put(t,n);return e}var Fd=m(()=>{"use strict";_r();Yo();Dd()});var Md,Ud=m(()=>{"use strict";Md=(r="")=>r.split(/(?<!\\)\//).filter(Boolean)});async function ng(r,e,t){let n=Md(r.path??""),s=n.length-1,i=e,o="";for(let a=0;a<n.length;a++){let c=n[a];o+=`${o!==""?"/":""}${c}`;let l=a===s;if(i.dirty=!0,i.cid=void 0,i.size=void 0,l)await i.put(c,r),e=await ta(null,i);else{let u=await i.get(c);(u==null||!(u instanceof Ee))&&(u=new mt({root:!1,dir:!0,parent:i,parentKey:c,path:o,dirty:!0,flat:!0,mtime:u?.unixfs?.mtime,mode:u?.unixfs?.mode},t)),await i.put(c,u),i=u}}return e}async function*Nd(r,e){if(!(r instanceof Ee)){r.unixfs?.isDirectory()===!0&&(yield r);return}yield*r.flush(e)}function Ld(r){return async function*(t,n){let s=new mt({root:!0,dir:!0,path:"",dirty:!0,flat:!0},r),i,o=!1;for await(let a of t){if(a==null)continue;let c=`${a.originalPath??""}`.split("/")[0];c!=null&&c!==""&&(i==null?(i=c,o=!0):i!==c&&(o=!1)),s=await ng(a,s,r),a.unixfs?.isDirectory()!==!0&&(yield a)}if(r.wrapWithDirectory||o&&s.childCount()>1)yield*Nd(s,n);else for(let a of s.eachChildSeries())a!=null&&(yield*Nd(a.child,n))}}var _d=m(()=>{"use strict";Yo();Is();Fd();Ud()});var Kd={};x(Kd,{InvalidAvgChunkSizeError:()=>Wo,InvalidChunkSizeError:()=>$o,InvalidContentError:()=>xe,InvalidMinChunkSizeError:()=>Ho,InvalidParametersError:()=>nr,InvalidShardingStrategyError:()=>Ye,importByteStream:()=>og,importBytes:()=>ig,importDirectory:()=>sg,importFile:()=>na,importer:()=>ra});async function*ra(r,e,t={}){let n;Symbol.asyncIterator in r||Symbol.iterator in r?n=r:n=[r];let s,i;t.profile==="unixfs-v0-2015"?(t.shardSplitStrategy=t.shardSplitStrategy??"links-bytes",t.cidVersion=t.cidVersion??0,t.rawLeaves=t.rawLeaves??!1,s=ps,i=174):t.profile==="unixfs-v1-2025"&&(t.shardSplitStrategy=t.shardSplitStrategy??"block-bytes",t.cidVersion=t.cidVersion??1,t.rawLeaves=t.rawLeaves??!0,s=al,i=1024);let o=t.wrapWithDirectory??hl,a=t.shardSplitThresholdBytes??fs,c=t.shardSplitStrategy??ol,l=t.shardFanoutBits??hs,u=t.cidVersion??1,d=t.rawLeaves??dl,h=t.leafType??fl,p=t.fileImportConcurrency??cl,g=t.blockWriteConcurrency??ll,w=t.reduceSingleLeafToSelf??ul,b=t.chunker??pl({chunkSize:s}),S=t.chunkValidator??td(),A=t.dagBuilder??Zu({chunker:b,chunkValidator:S,wrapWithDirectory:o,layout:t.layout??qo({maxChildrenPerNode:i}),bufferImporter:t.bufferImporter??Vu({cidVersion:u,rawLeaves:d,leafType:h,onProgress:t.onProgress}),blockWriteConcurrency:g,reduceSingleLeafToSelf:w,cidVersion:u,onProgress:t.onProgress,dirBuilder:t.dirBuilder,fileBuilder:t.fileBuilder}),v=t.treeBuilder??Ld({wrapWithDirectory:o,shardSplitThresholdBytes:a,shardSplitStrategy:c,shardFanoutBits:l,cidVersion:u,onProgress:t.onProgress});for await(let I of v(Nr(A(n,e),p),e))yield{cid:I.cid,path:I.path,unixfs:I.unixfs,size:I.size}}async function na(r,e,t={}){let n=await Wi(ra([r],e,t));if(n==null)throw new nr("Nothing imported");return n}async function sg(r,e,t={}){let n=await Wi(ra([r],e,t));if(n==null)throw new nr("Nothing imported");return n}async function ig(r,e,t={}){return na({content:r},e,t)}async function og(r,e,t={}){return na({content:r},e,t)}var jo=m(()=>{"use strict";Qc();Hi();ml();_r();Gu();ed();rd();sn();od();_d();sn()});function ag(r){return typeof r?.then=="function"}var Fs,Od=m(()=>{"use strict";Ts();id();Kr();ut();Jr();Ht();on();Fs=class extends Ce{constructor(){super();f(this,"data");this.data=new Map}put(t,n,s){s?.signal?.throwIfAborted();let i;if(n instanceof Uint8Array)i=[n];else{let o=sd(n);if(ag(o))return o.then(a=>this._put(t,a,s));i=o}return this._put(t,i,s)}_put(t,n,s){return s?.signal?.throwIfAborted(),this.data.set(Q.encode(t.multihash.bytes),n),t}*get(t,n){n?.signal?.throwIfAborted();let s=this.data.get(Q.encode(t.multihash.bytes));if(s==null)throw new Qe;yield*s}has(t,n){return n?.signal?.throwIfAborted(),this.data.has(Q.encode(t.multihash.bytes))}async delete(t,n){n?.signal?.throwIfAborted(),this.data.delete(Q.encode(t.multihash.bytes))}*getAll(t){t?.signal?.throwIfAborted();for(let[n,s]of this.data.entries())yield{cid:V.createV1(Gt,ws(Q.decode(n))),bytes:(async function*(){yield*s})()},t?.signal?.throwIfAborted()}}});function Ms(r,e){if(typeof r=="string")return cg(r);if(typeof r=="number")return dg(r,e);throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}function cg(r){if(typeof r!="string"||r.length===0||r.length>100)throw new Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,s=parseFloat(t),i=n.toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return s*315576e5;case"months":case"month":case"mo":return s*26298e5;case"weeks":case"week":case"w":return s*6048e5;case"days":case"day":case"d":return s*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return s*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return s*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return s*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:throw new Error(`Unknown unit "${i}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function lg(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function ug(r){let e=Math.abs(r);return e>=315576e5?yt(r,e,315576e5,"year"):e>=26298e5?yt(r,e,26298e5,"month"):e>=6048e5?yt(r,e,6048e5,"week"):e>=864e5?yt(r,e,864e5,"day"):e>=36e5?yt(r,e,36e5,"hour"):e>=6e4?yt(r,e,6e4,"minute"):e>=1e3?yt(r,e,1e3,"second"):`${r} ms`}function dg(r,e){if(typeof r!="number"||!Number.isFinite(r))throw new Error("Value provided to ms.format() must be of type number.");return e?.long?ug(r):lg(r)}function yt(r,e,t,n){let s=e>=t*1.5;return`${Math.round(r/t)} ${n}${s?"s":""}`}var sa=m(()=>{"use strict"});function ia(r){t.debug=t,t.default=t,t.coerce=c,t.disable=i,t.enable=s,t.enabled=o,t.humanize=Ms,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let d=0;for(let h=0;h<u.length;h++)d=(d<<5)-d+u.charCodeAt(h),d|=0;return t.colors[Math.abs(d)%t.colors.length]}t.selectColor=e;function t(u,d){let h,p=null,g,w;function b(...S){if(!b.enabled)return;let A=b,v=Number(new Date),I=v-(h||v);A.diff=I,A.prev=h,A.curr=v,h=v,S[0]=t.coerce(S[0]),typeof S[0]!="string"&&S.unshift("%O");let k=0;S[0]=S[0].replace(/%([a-zA-Z%])/g,(T,z)=>{if(T==="%%")return"%";k++;let Pe=t.formatters[z];if(typeof Pe=="function"){let wt=S[k];T=Pe.call(A,wt),S.splice(k,1),k--}return T}),t.formatArgs.call(A,S),d?.onLog!=null&&d.onLog(...S),(A.log||t.log).apply(A,S)}return b.namespace=u,b.useColors=t.useColors(),b.color=t.selectColor(u),b.extend=n,b.destroy=t.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(g!==t.namespaces&&(g=t.namespaces,w=t.enabled(u)),w),set:S=>{p=S}}),typeof t.init=="function"&&t.init(b),b}function n(u,d){let h=t(this.namespace+(typeof d>"u"?":":d)+u);return h.log=this.log,h}function s(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let d,h=(typeof u=="string"?u:"").split(/[\s,]+/),p=h.length;for(d=0;d<p;d++)h[d]&&(u=h[d].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function i(){let u=[...t.names.map(a),...t.skips.map(a).map(d=>"-"+d)].join(",");return t.enable(""),u}function o(u){if(u[u.length-1]==="*")return!0;let d,h;for(d=0,h=t.skips.length;d<h;d++)if(t.skips[d].test(u))return!1;for(d=0,h=t.names.length;d<h;d++)if(t.names[d].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var zd=m(()=>{"use strict";sa()});function fg(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function pg(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Ms(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(t++,s==="%c"&&(n=t))}),r.splice(n,0,e)}function gg(r){try{r?Us?.setItem("debug",r):Us?.removeItem("debug")}catch{}}function yg(){let r;try{r=Us?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function wg(){try{return localStorage}catch{}}function bg(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Us,hg,mg,Wd,$d=m(()=>{"use strict";sa();zd();Us=wg(),hg=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];mg=console.debug??console.log??(()=>{});Wd=ia({formatArgs:pg,save:gg,load:yg,useColors:fg,setupFormatters:bg,colors:hg,storage:Us,log:mg})});var ee,Hd=m(()=>{"use strict";$d();ee=Wd});function qd(r,e=""){let t=Vd(r.message),n=Vd(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
950
+ `}}});var ds={};x(ds,{RecoverySimulator:()=>Nt,educationalModules:()=>us,getAllTopics:()=>Gi,getExplainer:()=>Vi,searchExplainers:()=>Yi});var Lr=p(()=>{"use strict";ol();al()});var ms={};x(ms,{deriveMLKemKeypair:()=>_r,mlkemDecrypt:()=>ps,mlkemDecryptWithKey:()=>Zi,mlkemEncrypt:()=>fs,mlkemEncryptWithKey:()=>Xi});function Me(r){r.fill(0)}function Lt(r){if(typeof btoa<"u"){let e=Array.from(r).map(t=>String.fromCharCode(t)).join("");return btoa(e)}return Buffer.from(r).toString("base64")}function ht(r){if(typeof atob<"u"){let e=atob(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}return new Uint8Array(Buffer.from(r,"base64"))}async function ul(r,e){let t=(0,Ji.hkdf)(Qi.sha256,r,new Uint8Array(0),new TextEncoder().encode(cp),32);try{return await crypto.subtle.importKey("raw",t,"AES-KW",!1,[e])}finally{Me(t)}}async function lp(r,e,t){if(r===2){let s=await ul(e,"unwrapKey");return crypto.subtle.unwrapKey("raw",t,s,"AES-KW",{name:"AES-GCM"},!1,["decrypt"])}let n=new Uint8Array(32);try{for(let s=0;s<32;s++)n[s]=t[s]^e[s];return await crypto.subtle.importKey("raw",n,{name:"AES-GCM"},!1,["decrypt"])}finally{Me(n)}}async function _r(r,e="mlkem-v1"){let t=await(0,hs.createMlKem1024)(),n;if(typeof r=="string"){let i=r.startsWith("0x")?r.slice(2):r;if(typeof Buffer<"u")n=new Uint8Array(Buffer.from(i,"hex"));else{let o=new Uint8Array(i.length/2);for(let a=0;a<i.length;a+=2)o[a/2]=parseInt(i.substring(a,a+2),16);n=o}}else n=r;let s=(0,Ji.hkdf)(Qi.sha256,n,new Uint8Array(Buffer.from("mlkem-keypair-v1","utf-8")),new Uint8Array(Buffer.from(e,"utf-8")),64);try{let[i,o]=t.deriveKeyPair(s);return{publicKey:i,privateKey:o}}finally{Me(s),Me(n)}}async function fs(r,e){let t=await(0,hs.createMlKem1024)(),n=Array.isArray(e)?e:[e];if(n.length===0)throw new Error("At least one public key is required");let s=new Uint8Array(32);crypto.getRandomValues(s);try{let i=new Uint8Array(12);crypto.getRandomValues(i);let a=new TextEncoder().encode(r),c=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!0,["encrypt"]),u=await crypto.subtle.encrypt({name:"AES-GCM",iv:i,tagLength:128},c,a),l=new Uint8Array(u),d=16;if(l.length<d)throw new Error("Encrypted data too short to contain auth tag");let h=l.slice(0,-d),m=l.slice(-d),y=[];for(let w of n){let S=typeof w=="string"?ht(w):w;if(S.length!==1568)throw new Error(`Invalid ML-KEM public key size: ${S.length} (expected 1568)`);let[b,A]=t.encap(S);try{let v=await ul(A,"wrapKey"),B=new Uint8Array(await crypto.subtle.wrapKey("raw",c,v,"AES-KW")),E=new Uint8Array(b.length+B.length);E.set(b,0),E.set(B,b.length),y.push({publicKey:Lt(S),ciphertext:Lt(E)})}finally{Me(A)}}return{version:2,recipients:y,encryptedData:Lt(h),iv:Lt(i),authTag:Lt(m)}}finally{Me(s)}}async function ps(r,e,t){let n=await(0,hs.createMlKem1024)(),s=typeof e=="string"?ht(e):e;if(s.length!==3168)throw new Error(`Invalid ML-KEM private key size: ${s.length} (expected 3168)`);let i=r.version??1;if(i!==1&&i!==2)throw new Error(`Unsupported payload version: ${String(i)}`);let o=ht(r.encryptedData),a=ht(r.iv),c=ht(r.authTag);if(a.length!==cl)throw new Error(`Invalid IV size: ${a.length} (expected ${cl})`);if(c.length!==ll)throw new Error(`Invalid auth tag size: ${c.length} (expected ${ll})`);let u=ji+ap[i],l=async m=>{let y=ht(m);if(y.length!==u)throw new Error(`Invalid combined ciphertext size: ${y.length} (expected ${u})`);let w=y.slice(0,ji),S=y.slice(ji),b=n.decap(w,s);try{return await lp(i,b,S)}finally{Me(b)}},d=new Uint8Array(o.length+c.length);d.set(o,0),d.set(c,o.length);let h=async m=>{let y=await l(m),w=await crypto.subtle.decrypt({name:"AES-GCM",iv:a,tagLength:128},y,d);return new TextDecoder().decode(w)};if(t){let m=typeof t=="string"?ht(t):t,y=Lt(m),w=r.recipients.find(S=>S.publicKey===y);if(!w)throw new Error("Public key not found in recipients list");return h(w.ciphertext)}for(let m of r.recipients)try{return await h(m.ciphertext)}catch{continue}throw new Error("No matching recipient found for this private key")}async function Xi(r,e,t,n="mlkem-v1"){let s=await _r(e,n);try{let i=[s.publicKey,...t];return await fs(r,i)}finally{Me(s.privateKey)}}async function Zi(r,e,t="mlkem-v1"){let n=await _r(e,t);try{return await ps(r,n.privateKey,n.publicKey)}finally{Me(n.privateKey)}}var hs,Ji,Qi,ji,ap,cl,ll,cp,Kr=p(()=>{"use strict";hs=require("mlkem"),Ji=require("@noble/hashes/hkdf.js"),Qi=require("@noble/hashes/sha2.js"),ji=1568,ap={1:32,2:40},cl=12,ll=16,cp="w3pk-mlkem-kek-v2"});function up(r){return r[Symbol.asyncIterator]!=null}function dp(r){if(up(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var eo,fl=p(()=>{"use strict";eo=dp});function hp(r){return r[Symbol.asyncIterator]!=null}function fp(r,e=1){return e=Number(e),hp(r)?(async function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for await(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)})():(function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)})()}var ys,to=p(()=>{"use strict";ys=fp});async function*Or(r,e=1){for await(let t of ys(r,e)){let n=t.map(async s=>s().then(i=>({ok:!0,value:i}),i=>({ok:!1,err:i})));for(let s=0;s<n.length;s++){let i=await n[s];if(i.ok)yield i.value;else throw i.err}}}var ro=p(()=>{"use strict";to()});function Ue(r=0){return new Uint8Array(r)}function oe(r=0){return new Uint8Array(r)}var ft=p(()=>{"use strict"});function pp(r){return r?.buffer instanceof ArrayBuffer}function pl(r){if(pp(r))return r;let e=r.slice();return new Uint8Array(e.buffer,0,e.byteLength)}var ml=p(()=>{"use strict"});function zr(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=oe(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return pl(t)}var no=p(()=>{"use strict";ft();ml()});function yl(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var gl=p(()=>{"use strict"});function wl(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function gs(r){return!!r?.[Sl]}var Sl,bl,Kt,Al=p(()=>{"use strict";ft();no();gl();Sl=Symbol.for("@achingbrain/uint8arraylist");Kt=class r{constructor(...e){f(this,"bufs");f(this,"length");f(this,bl,!0);this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[(bl=Sl,Symbol.iterator)](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(gs(n)){t+=n.byteLength;for(let s of n.bufs)this.bufs.push(s)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(gs(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=wl(this.bufs,e);return t.buf[t.index]}set(e,t){let n=wl(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(gs(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return zr(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:zr(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=n,i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let u=e>=a&&e<c,l=t>a&&t<=c;if(u&&l){if(e===a&&t===c){n.push(o);break}let d=e-a;n.push(o.subarray(d,d+(t-e)));break}if(u){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(l){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!gs(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let d=0;d<i;d++)o[d]=-1;for(let d=0;d<s;d++)o[n[d]]=d;let a=o,c=this.byteLength-n.byteLength,u=n.byteLength-1,l;for(let d=t;d<=c;d+=l){l=0;for(let h=u;h>=0;h--){let m=this.get(d+h);if(n[h]!==m){l=Math.max(1,h-a[m]);break}}if(l===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=oe(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=Ue(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=Ue(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=Ue(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=oe(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=Ue(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=Ue(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=Ue(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=Ue(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=Ue(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!yl(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}}});var so,ws,bs,xl,Ss,vl,kl,El,Cl,Pl,Il,Bl,Wr=p(()=>{"use strict";so=BigInt(34),ws=8,bs=262144,xl="links-bytes",Ss=262144,vl=1048576,kl=50,El=10,Cl=!0,Pl=!0,Il=!1,Bl="file"});var Tl,Rl=p(()=>{"use strict";Al();Wr();Tl=(r={})=>{let e=r.chunkSize??Ss;return async function*(n){let s=new Kt,i=0,o=!1;for await(let a of n)for(s.append(a),i+=a.length;i>=e;)if(yield s.subarray(0,e),o=!0,e===s.length)s=new Kt,i=0;else{let u=new Kt;u.append(s.sublist(e)),s=u,i-=e}(!o||i>0)&&(yield s.subarray(0,i))}}});function Dl(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Se(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return pt(r);if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return pt(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));throw new Error("Unknown type, must be binary type")}function Fl(r){return new TextEncoder().encode(r)}function Ml(r){return new TextDecoder().decode(r)}function mp(r){return r?.buffer instanceof ArrayBuffer}function pt(r){return mp(r)?r:r.slice()}var G0,qe=p(()=>{"use strict";G0=new Uint8Array(0)});function yp(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),o=i.charCodeAt(0);if(t[o]!==255)throw new TypeError(i+" is ambiguous");t[o]=s}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function d(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var w=0,S=0,b=0,A=y.length;b!==A&&y[b]===0;)b++,w++;for(var v=(A-b)*l+1>>>0,B=new Uint8Array(v);b!==A;){for(var E=y[b],U=0,F=v-1;(E!==0||U<S)&&F!==-1;F--,U++)E+=256*B[F]>>>0,B[F]=E%a>>>0,E=E/a>>>0;if(E!==0)throw new Error("Non-zero carry");S=U,b++}for(var H=v-S;H!==v&&B[H]===0;)H++;for(var Be=c.repeat(w);H<v;++H)Be+=r.charAt(B[H]);return Be}function h(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;var w=0;if(y[w]!==" "){for(var S=0,b=0;y[w]===c;)S++,w++;for(var A=(y.length-w)*u+1>>>0,v=new Uint8Array(A);y[w];){var B=t[y.charCodeAt(w)];if(B===255)return;for(var E=0,U=A-1;(B!==0||E<b)&&U!==-1;U--,E++)B+=a*v[U]>>>0,v[U]=B%256>>>0,B=B/256>>>0;if(B!==0)throw new Error("Non-zero carry");b=E,w++}if(y[w]!==" "){for(var F=A-b;F!==A&&v[F]===0;)F++;for(var H=new Uint8Array(S+(A-F)),Be=S;F!==A;)H[Be++]=v[F++];return H}}}function m(y){var w=h(y);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:m}}var gp,wp,Nl,Ll=p(()=>{"use strict";gp=yp,wp=gp,Nl=wp});function _l(r,e){return new ao({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}function Ot({name:r,prefix:e,encode:t,decode:n}){return new co(r,e,t,n)}function Ve({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=Nl(t,r);return Ot({prefix:e,name:r,encode:n,decode:i=>Se(s(i))})}function bp(r,e,t,n){let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),o=0,a=0,c=0;for(let u=0;u<s;++u){let l=e[r[u]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|l,o+=t,o>=8&&(o-=8,i[c++]=255&a>>o)}if(o>=t||(255&a<<8-o)!==0)throw new SyntaxError("Unexpected end of data");return i}function Sp(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,i+=e[s&a>>o];if(o!==0&&(i+=e[s&a<<t-o]),n)for(;(i.length*t&7)!==0;)i+="=";return i}function Ap(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function K({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let s=Ap(n);return Ot({prefix:e,name:r,encode(i){return Sp(i,n,t)},decode(i){return bp(i,s,t,r)}})}var io,oo,ao,co,Ae=p(()=>{"use strict";qe();Ll();io=class{constructor(e,t,n){f(this,"name");f(this,"prefix");f(this,"baseEncode");this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},oo=class{constructor(e,t,n){f(this,"name");f(this,"prefix");f(this,"baseDecode");f(this,"prefixCodePoint");this.name=e,this.prefix=t;let s=t.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return _l(this,e)}},ao=class{constructor(e){f(this,"decoders");this.decoders=e}or(e){return _l(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};co=class{constructor(e,t,n,s){f(this,"name");f(this,"prefix");f(this,"baseEncode");f(this,"baseDecode");f(this,"encoder");f(this,"decoder");this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new io(e,t,n),this.decoder=new oo(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}});var lo={};x(lo,{base32:()=>Z,base32hex:()=>Ep,base32hexpad:()=>Pp,base32hexpadupper:()=>Ip,base32hexupper:()=>Cp,base32pad:()=>vp,base32padupper:()=>kp,base32upper:()=>xp,base32z:()=>Bp});var Z,xp,vp,kp,Ep,Cp,Pp,Ip,Bp,Hr=p(()=>{"use strict";Ae();Z=K({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),xp=K({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),vp=K({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),kp=K({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ep=K({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Cp=K({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Pp=K({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Ip=K({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Bp=K({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var uo={};x(uo,{base36:()=>$r,base36upper:()=>Tp});var $r,Tp,ho=p(()=>{"use strict";Ae();$r=Ve({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Tp=Ve({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var fo={};x(fo,{base58btc:()=>fe,base58flickr:()=>Rp});var fe,Rp,As=p(()=>{"use strict";Ae();fe=Ve({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Rp=Ve({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});function zl(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Up;)e[t++]=r&255|Kl,r/=128;for(;r&Mp;)e[t++]=r&255|Kl,r>>>=7;return e[t]=r|0,zl.bytes=t-n+1,e}function po(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw po.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&Ol)<<s:(o&Ol)*Math.pow(2,s),s+=7}while(o>=Lp);return po.bytes=i-n,t}var Dp,Kl,Fp,Mp,Up,Np,Lp,Ol,_p,Kp,Op,zp,Wp,Hp,$p,qp,Vp,Gp,Yp,jp,qr,Wl=p(()=>{"use strict";Dp=zl,Kl=128,Fp=127,Mp=~Fp,Up=Math.pow(2,31);Np=po,Lp=128,Ol=127;_p=Math.pow(2,7),Kp=Math.pow(2,14),Op=Math.pow(2,21),zp=Math.pow(2,28),Wp=Math.pow(2,35),Hp=Math.pow(2,42),$p=Math.pow(2,49),qp=Math.pow(2,56),Vp=Math.pow(2,63),Gp=function(r){return r<_p?1:r<Kp?2:r<Op?3:r<zp?4:r<Wp?5:r<Hp?6:r<$p?7:r<qp?8:r<Vp?9:10},Yp={encode:Dp,decode:Np,encodingLength:Gp},jp=Yp,qr=jp});function Vr(r,e=0){return[qr.decode(r,e),qr.decode.bytes]}function zt(r,e,t=0){return qr.encode(r,e,t),e}function Wt(r){return qr.encodingLength(r)}var vs=p(()=>{"use strict";Wl()});function $t(r,e){let t=e.byteLength,n=Wt(r),s=n+Wt(t),i=new Uint8Array(s+t);return zt(r,i,0),zt(t,i,n),i.set(e,s),new Ht(r,t,e,i)}function ks(r){let e=Se(r),[t,n]=Vr(e),[s,i]=Vr(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new Ht(t,s,o,e)}function Hl(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Dl(r.bytes,t.bytes)}}var Ht,Vt=p(()=>{"use strict";qe();vs();Ht=class{constructor(e,t,n,s){f(this,"code");f(this,"size");f(this,"digest");f(this,"bytes");this.code=e,this.size=t,this.digest=pt(n),this.bytes=pt(s)}}});var mo=p(()=>{"use strict"});function $l(r,e){let{bytes:t,version:n}=r;return n===0?Qp(t,yo(r),e??fe.encoder):Xp(t,yo(r),e??Z.encoder)}function yo(r){let e=ql.get(r);if(e==null){let t=new Map;return ql.set(r,t),t}return e}function Jp(r,e){switch(r[0]){case"Q":{let t=e??fe;return[fe.prefix,t.decode(`${fe.prefix}${r}`)]}case fe.prefix:{let t=e??fe;return[fe.prefix,t.decode(r)]}case Z.prefix:{let t=e??Z;return[Z.prefix,t.decode(r)]}case $r.prefix:{let t=e??$r;return[$r.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Qp(r,e,t){let{prefix:n}=t;if(n!==fe.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return s}function Xp(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let i=t.encode(r);return e.set(n,i),i}else return s}function Vl(r,e,t){let n=Wt(r),s=n+Wt(e),i=new Uint8Array(s+t.byteLength);return zt(r,i,0),zt(e,i,n),i.set(t,s),i}var ql,Gl,G,Gr,Zp,em,mt=p(()=>{"use strict";Hr();ho();As();qe();Vt();vs();mo();ql=new WeakMap;G=class r{constructor(e,t,n,s){f(this,"code");f(this,"version");f(this,"multihash");f(this,"bytes");f(this,"/");f(this,Gl,"CID");this.code=t,this.version=e,this.multihash=n,this.bytes=pt(s),this["/"]=this.bytes}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Gr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Zp)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=$t(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&Hl(e.multihash,n.multihash)}toString(e){return $l(this,e)}toJSON(){return{"/":$l(this)}}link(){return this}[(Gl=Symbol.toStringTag,Symbol.for("nodejs.util.inspect.custom"))](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:i,bytes:o}=t;return new r(n,s,i,o??Vl(n,s,i.bytes))}else if(t[em]===!0){let{version:n,multihash:s,code:i}=t,o=ks(s);return r.create(n,i,o)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Gr)throw new Error(`Version 0 CID must use dag-pb (code: ${Gr}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Vl(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Gr,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=Se(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=s.subarray(t.multihashSize-t.digestSize),o=new Ht(t.multihashCode,t.digestSize,i,s);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,h]=Vr(e.subarray(t));return t+=h,d},s=n(),i=Gr;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,a=n(),c=n(),u=t+c,l=u-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:l,size:u}}static parse(e,t){let[n,s]=Jp(e,t),i=r.decode(s);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return yo(i).set(n,e),i}};Gr=112,Zp=18;em=Symbol.for("@ipld/js-cid/CID")});function go(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let s=r[e++];if(t+=n<28?(s&127)<<n:(s&127)*2**n,s<128)break}return[t,e]}function Es(r,e){let t;[t,e]=go(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function Yl(r,e){let t;return[t,e]=go(r,e),[t&7,t>>3,e]}function rm(r){let e={},t=r.length,n=0;for(;n<t;){let s,i;if([s,i,n]=Yl(r,n),i===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(s!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=Es(r,n)}else if(i===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(s!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let o;[o,n]=Es(r,n),e.Name=tm.decode(o)}else if(i===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(s!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Tsize`);[e.Tsize,n]=go(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${i}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function jl(r){let e=r.length,t=0,n,s=!1,i;for(;t<e;){let a,c;if([a,c,t]=Yl(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(i)throw new Error("protobuf: (PBNode) duplicate Data section");[i,t]=Es(r,t),n&&(s=!0)}else if(c===2){if(s)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let u;[u,t]=Es(r,t),n.push(rm(u))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let o={};return i&&(o.Data=i),o.Links=n||[],o}var tm,Jl=p(()=>{"use strict";tm=new TextDecoder});function sm(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=Yr(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=Xl.encode(r.Name);t-=n.length,e.set(n,t),t=Yr(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=Yr(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function Zl(r){let e=om(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=Yr(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let s=r.Links.length-1;s>=0;s--){let i=sm(r.Links[s],t.subarray(0,n));n-=i,n=Yr(t,n,i)-1,t[n]=18}return t}function im(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+Gt(t)}if(typeof r.Name=="string"){let t=Xl.encode(r.Name).length;e+=1+t+Gt(t)}return typeof r.Tsize=="number"&&(e+=1+Gt(r.Tsize)),e}function om(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+Gt(t)}if(r.Links)for(let t of r.Links){let n=im(t);e+=1+n+Gt(n)}return e}function Yr(r,e,t){e-=Gt(t);let n=e;for(;t>=nm;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function Gt(r){return r%2===0&&r++,Math.floor((am(r)+6)/7)}function am(r){let e=0;return r>=Ql&&(r=Math.floor(r/Ql),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+cm[r]}var Xl,Ql,nm,cm,eu=p(()=>{"use strict";Xl=new TextEncoder,Ql=2**32,nm=2**31;cm=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]});function ru(r,e){if(r===e)return 0;let t=r.Name?wo.encode(r.Name):[],n=e.Name?wo.encode(e.Name):[],s=t.length,i=n.length;for(let o=0,a=Math.min(s,i);o<a;++o)if(t[o]!==n[o]){s=t[o],i=n[o];break}return s<i?-1:i<s?1:0}function tu(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function nu(r){if(typeof r.asCID=="object"){let t=G.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=G.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=G.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=G.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function ee(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=wo.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(nu),e.Links.sort(ru);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function bo(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!tu(r,lm))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!tu(t,um))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&ru(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function su(r,e=[]){return ee({Data:r,Links:e})}function iu(r,e,t){return nu({Hash:t,Name:r,Tsize:e})}function ou(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var lm,um,wo,au=p(()=>{"use strict";mt();lm=["Data","Links"],um=["Hash","Name","Tsize"],wo=new TextEncoder});var jr={};x(jr,{code:()=>hm,createLink:()=>iu,createNode:()=>su,decode:()=>fm,encode:()=>te,name:()=>dm,prepare:()=>ee,validate:()=>bo});function te(r){bo(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),Zl(e)}function fm(r){let e=ou(r),t=jl(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(s=>{let i={};try{i.Hash=G.decode(s.Hash)}catch{}if(!i.Hash)throw new Error("Invalid Hash field found in link, expected CID");return s.Name!==void 0&&(i.Name=s.Name),s.Tsize!==void 0&&(i.Tsize=s.Tsize),i})),n}var dm,hm,yt=p(()=>{"use strict";mt();Jl();eu();au();dm="dag-pb",hm=112});var Yt,Jr,So=p(()=>{"use strict";Yt=class Yt extends Error{constructor(t="Invalid type"){super(t);f(this,"name",Yt.name);f(this,"code",Yt.code)}};f(Yt,"name","InvalidTypeError"),f(Yt,"code","ERR_INVALID_TYPE");Jr=Yt});function Qr(r){if(r<pm)return 1;if(r<mm)return 2;if(r<ym)return 3;if(r<cu)return 4;if(r<lu)return 5;if(r<uu)return 6;if(r<du)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function hu(r,e,t=0){switch(Qr(r)){case 8:e[t++]=r&255|Y,r/=128;case 7:e[t++]=r&255|Y,r/=128;case 6:e[t++]=r&255|Y,r/=128;case 5:e[t++]=r&255|Y,r/=128;case 4:e[t++]=r&255|Y,r>>>=7;case 3:e[t++]=r&255|Y,r>>>=7;case 2:e[t++]=r&255|Y,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function fu(r,e){let t=r[e],n=0;if(n+=t&Ge,t<Y||(t=r[e+1],n+=(t&Ge)<<7,t<Y)||(t=r[e+2],n+=(t&Ge)<<14,t<Y)||(t=r[e+3],n+=(t&Ge)<<21,t<Y)||(t=r[e+4],n+=(t&Ge)*cu,t<Y)||(t=r[e+5],n+=(t&Ge)*lu,t<Y)||(t=r[e+6],n+=(t&Ge)*uu,t<Y)||(t=r[e+7],n+=(t&Ge)*du,t<Y))return n;throw new RangeError("Could not decode varint")}var pm,mm,ym,cu,lu,uu,du,Y,Ge,Ao=p(()=>{"use strict";ft();pm=Math.pow(2,7),mm=Math.pow(2,14),ym=Math.pow(2,21),cu=Math.pow(2,28),lu=Math.pow(2,35),uu=Math.pow(2,42),du=Math.pow(2,49),Y=128,Ge=127});function gm(r){return r.buffer instanceof ArrayBuffer}function pu(r){return gm(r)?r:r.slice()}var mu=p(()=>{"use strict"});function yu(r,e,t){xo[0]=r,e[t]=Ye[0],e[t+1]=Ye[1],e[t+2]=Ye[2],e[t+3]=Ye[3]}function gu(r,e){return Ye[0]=r[e],Ye[1]=r[e+1],Ye[2]=r[e+2],Ye[3]=r[e+3],xo[0]}function wu(r,e,t){vo[0]=r,e[t]=$[0],e[t+1]=$[1],e[t+2]=$[2],e[t+3]=$[3],e[t+4]=$[4],e[t+5]=$[5],e[t+6]=$[6],e[t+7]=$[7]}function bu(r,e){return $[0]=r[e],$[1]=r[e+1],$[2]=r[e+2],$[3]=r[e+3],$[4]=r[e+4],$[5]=r[e+5],$[6]=r[e+6],$[7]=r[e+7],vo[0]}var xo,Ye,vo,$,ko=p(()=>{"use strict";xo=new Float32Array([-0]),Ye=new Uint8Array(xo.buffer);vo=new Float64Array([-0]),$=new Uint8Array(vo.buffer)});var wm,bm,ae,gt,Su,Eo=p(()=>{"use strict";wm=BigInt(Number.MAX_SAFE_INTEGER),bm=BigInt(Number.MIN_SAFE_INTEGER),ae=class r{constructor(e,t){f(this,"lo");f(this,"hi");this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return gt;if(e<wm&&e>bm)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>Su&&(s=0n,++n>Su&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return gt;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):gt}},gt=new ae(0,0);gt.toBigInt=function(){return 0n};gt.zzEncode=gt.zzDecode=function(){return this};gt.length=function(){return 1};Su=4294967296n});function Au(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function xu(r,e,t){if(t-e<1)return"";let s,i=[],o=0,a;for(;e<t;)a=r[e++],a<128?i[o++]=a:a>191&&a<224?i[o++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[o++]=55296+(a>>10),i[o++]=56320+(a&1023)):i[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,i)),o=0);return s!=null?(o>0&&s.push(String.fromCharCode.apply(String,i.slice(0,o))),s.join("")):String.fromCharCode.apply(String,i.slice(0,o))}function Co(r,e,t){let n=t,s,i;for(let o=0;o<r.length;++o)s=r.charCodeAt(o),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((i=r.charCodeAt(o+1))&64512)===56320?(s=65536+((s&1023)<<10)+(i&1023),++o,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}var Po=p(()=>{"use strict"});function xe(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Cs(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}function Xr(r){return new Io(r instanceof Uint8Array?r:r.subarray())}var Io,Ps=p(()=>{"use strict";Ao();mu();ko();Eo();Po();Io=class{constructor(e){f(this,"buf");f(this,"pos");f(this,"len");f(this,"_slice",Uint8Array.prototype.subarray);this.buf=pu(e),this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,xe(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw xe(this,4);return Cs(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw xe(this,4);return Cs(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw xe(this,4);let e=gu(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw xe(this,4);let e=bu(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw xe(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return xu(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw xe(this,e);this.pos+=e}else do if(this.pos>=this.len)throw xe(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new ae(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw xe(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw xe(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw xe(this,8);let e=Cs(this.buf,this.pos+=4),t=Cs(this.buf,this.pos+=4);return new ae(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=fu(this.buf,this.pos);return this.pos+=Qr(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}});function Zr(r,e,t){let n=Xr(r);return e.decode(n,void 0,t)}var ku=p(()=>{"use strict";Ps()});var Bo={};x(Bo,{base10:()=>Sm});var Sm,Eu=p(()=>{"use strict";Ae();Sm=Ve({prefix:"9",name:"base10",alphabet:"0123456789"})});var To={};x(To,{base16:()=>Am,base16upper:()=>xm});var Am,xm,Cu=p(()=>{"use strict";Ae();Am=K({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),xm=K({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var Ro={};x(Ro,{base2:()=>vm});var vm,Pu=p(()=>{"use strict";Ae();vm=K({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var Do={};x(Do,{base256emoji:()=>Im});function Cm(r){return r.reduce((e,t)=>(e+=km[t],e),"")}function Pm(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=Em[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var Iu,km,Em,Im,Bu=p(()=>{"use strict";Ae();Iu=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),km=Iu.reduce((r,e,t)=>(r[t]=e,r),[]),Em=Iu.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);Im=Ot({prefix:"\u{1F680}",name:"base256emoji",encode:Cm,decode:Pm})});var Mo={};x(Mo,{base64:()=>Fo,base64pad:()=>Bm,base64url:()=>Tm,base64urlpad:()=>Rm});var Fo,Bm,Tm,Rm,Uo=p(()=>{"use strict";Ae();Fo=K({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Bm=K({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Tm=K({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Rm=K({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var No={};x(No,{base8:()=>Dm});var Dm,Tu=p(()=>{"use strict";Ae();Dm=K({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var Lo={};x(Lo,{identity:()=>Fm});var Fm,Ru=p(()=>{"use strict";qe();Ae();Fm=Ot({prefix:"\0",name:"identity",encode:r=>Ml(r),decode:r=>Fl(r)})});var qb,Vb,Du=p(()=>{"use strict";qb=new TextEncoder,Vb=new TextDecoder});var Jt={};x(Jt,{code:()=>jt,decode:()=>Lm,encode:()=>Nm,name:()=>Um});function Nm(r){return Se(r)}function Lm(r){return Se(r)}var Um,jt,en=p(()=>{"use strict";qe();Um="raw",jt=85});var _o={};x(_o,{identity:()=>Om});function Km(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return $t(Fu,Mu(r))}var Fu,_m,Mu,Om,Uu=p(()=>{"use strict";qe();Vt();Fu=0,_m="identity",Mu=Se;Om={code:Fu,name:_m,encode:Mu,digest:Km}});function wt({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:s}){return new Ko(r,e,t,n,s)}function Nu(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return $t(e,r)}var zm,Ko,Is=p(()=>{"use strict";Vt();zm=20;Ko=class{constructor(e,t,n,s,i){f(this,"name");f(this,"code");f(this,"encode");f(this,"minDigestLength");f(this,"maxDigestLength");this.name=e,this.code=t,this.encode=n,this.minDigestLength=s??zm,this.maxDigestLength=i}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?Nu(n,this.code,t?.truncate):n.then(s=>Nu(s,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}}});var zo={};x(zo,{sha256:()=>Oo,sha512:()=>Wm});function _u(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Oo,Wm,Wo=p(()=>{"use strict";Is();Oo=wt({name:"sha2-256",code:18,encode:_u("SHA-256")}),Wm=wt({name:"sha2-512",code:19,encode:_u("SHA-512")})});var Ku=p(()=>{"use strict"});var Ou=p(()=>{"use strict"});var zu=p(()=>{"use strict"});var Wu=p(()=>{"use strict"});var Hu=p(()=>{"use strict";Ku();Ou();zu();mo();Wu()});var $u=p(()=>{"use strict";qe();mt();Vt();Is();vs();Hu()});var Ho,oS,qu=p(()=>{"use strict";Eu();Cu();Pu();Bu();Hr();ho();As();Uo();Tu();Ru();Du();en();Uu();Wo();$u();Ho={...Lo,...Ro,...No,...Bo,...To,...lo,...uo,...fo,...Mo,...Do},oS={...zo,..._o}});function Gu(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Vu,$o,Hm,Yu,ju=p(()=>{"use strict";qu();ft();Vu=Gu("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),$o=Gu("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=oe(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Hm={utf8:Vu,"utf-8":Vu,hex:Ho.base16,latin1:$o,ascii:$o,binary:$o,...Ho},Yu=Hm});function Qt(r,e="utf8"){let t=Yu[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var Bs=p(()=>{"use strict";ju()});function qo(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return oe(o);s+o>e&&(n=oe(e),s=0);let a=n.subarray(s,s+=o);return(s&7)!==0&&(s=(s|7)+1),a}}var Ju=p(()=>{"use strict";ft()});function Vo(){}function qm(r){return globalThis.Buffer!=null?oe(r):$m(r)}function Go(r,e,t){e[t]=r&255}function Vm(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}function Ts(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function tn(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function Gm(r,e,t){e.set(r,t)}function Ym(r,e,t){e.set(r,t)}function jm(r,e,t){r.length<40?Co(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(Qt(r),t)}function Jo(){return new rn}var bt,Yo,$m,rn,jo,Qo=p(()=>{"use strict";Ao();ft();Bs();ko();Eo();Ju();Po();bt=class{constructor(e,t,n){f(this,"fn");f(this,"len");f(this,"next");f(this,"val");this.fn=e,this.len=t,this.next=void 0,this.val=n}};Yo=class{constructor(e){f(this,"head");f(this,"tail");f(this,"len");f(this,"next");this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},$m=qo();rn=class{constructor(){f(this,"len");f(this,"head");f(this,"tail");f(this,"states");this.len=0,this.head=new bt(Vo,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new bt(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new jo((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Ts,10,ae.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=ae.fromBigInt(e);return this._push(Ts,t.length(),t)}uint64Number(e){return this._push(hu,Qr(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=ae.fromBigInt(e).zzEncode();return this._push(Ts,t.length(),t)}sint64Number(e){let t=ae.fromNumber(e).zzEncode();return this._push(Ts,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Go,1,e?1:0)}fixed32(e){return this._push(tn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=ae.fromBigInt(e);return this._push(tn,4,t.lo)._push(tn,4,t.hi)}fixed64Number(e){let t=ae.fromNumber(e);return this._push(tn,4,t.lo)._push(tn,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(yu,4,e)}double(e){return this._push(wu,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Go,1,0):this.uint32(t)._push(Gm,t,e)}string(e){let t=Au(e);return t!==0?this.uint32(t)._push(Co,t,e):this._push(Go,1,0)}fork(){return this.states=new Yo(this),this.head=this.tail=new bt(Vo,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new bt(Vo,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=qm(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};jo=class extends bt{constructor(t,n){super(Vm,t,n);f(this,"next");this.next=void 0}};globalThis.Buffer!=null&&(rn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(Ym,e,r),this},rn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(jm,e,r),this})});function nn(r,e){let t=Jo();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Qu=p(()=>{"use strict";Qo()});function*sn(r,e,t){let n=Xr(r);yield*e.stream(n,void 0,"$",t)}var Xu=p(()=>{"use strict";Ps()});function Ds(r,e,t,n,s){return{name:r,type:e,encode:t,decode:n,stream:s}}var Rs,Xo=p(()=>{"use strict";Rs={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5}});function Zo(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(o,a){let c=e(o);a.int32(c)},n=function(o){let a=o.int32();return e(a)},s=function*(o){let a=o.int32();yield e(a)};return Ds("enum",Rs.VARINT,t,n,s)}var Zu=p(()=>{"use strict";Xo()});function on(r,e,t){return Ds("message",Rs.LENGTH_DELIMITED,r,e,t)}var ed=p(()=>{"use strict";Xo()});var an,td=p(()=>{"use strict";ku();Qu();Xu();Zu();ed();Ps();Qo();an=class extends Error{constructor(){super(...arguments);f(this,"code","ERR_MAX_LENGTH");f(this,"name","MaxLengthError")}}});var ve,cn,rd,nd=p(()=>{"use strict";td();(function(r){let e;(function(a){a.Raw="Raw",a.Directory="Directory",a.File="File",a.Metadata="Metadata",a.Symlink="Symlink",a.HAMTShard="HAMTShard"})(e=r.DataType||(r.DataType={}));let t;(function(a){a[a.Raw=0]="Raw",a[a.Directory=1]="Directory",a[a.File=2]="File",a[a.Metadata=3]="Metadata",a[a.Symlink=4]="Symlink",a[a.HAMTShard=5]="HAMTShard"})(t||(t={})),(function(a){a.codec=()=>Zo(t)})(e=r.DataType||(r.DataType={}));let n;r.codec=()=>(n==null&&(n=on((a,c,u={})=>{if(u.lengthDelimited!==!1&&c.fork(),a.Type!=null&&(c.uint32(8),r.DataType.codec().encode(a.Type,c)),a.Data!=null&&(c.uint32(18),c.bytes(a.Data)),a.filesize!=null&&(c.uint32(24),c.uint64(a.filesize)),a.blocksizes!=null&&a.blocksizes.length>0)for(let l of a.blocksizes)c.uint32(32),c.uint64(l);a.hashType!=null&&(c.uint32(40),c.uint64(a.hashType)),a.fanout!=null&&(c.uint32(48),c.uint64(a.fanout)),a.mode!=null&&(c.uint32(56),c.uint32(a.mode)),a.mtime!=null&&(c.uint32(66),cn.codec().encode(a.mtime,c)),u.lengthDelimited!==!1&&c.ldelim()},(a,c,u={})=>{let l={blocksizes:[]},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let h=a.uint32();switch(h>>>3){case 1:{l.Type=r.DataType.codec().decode(a);break}case 2:{l.Data=a.bytes();break}case 3:{l.filesize=a.uint64();break}case 4:{if(u.limits?.blocksizes!=null&&l.blocksizes.length===u.limits.blocksizes)throw new an('Decode error - repeated field "blocksizes" had too many elements');l.blocksizes.push(a.uint64());break}case 5:{l.hashType=a.uint64();break}case 6:{l.fanout=a.uint64();break}case 7:{l.mode=a.uint32();break}case 8:{l.mtime=cn.codec().decode(a,a.uint32(),{limits:u.limits?.mtime});break}default:{a.skipType(h&7);break}}}return l},function*(a,c,u,l={}){let d={blocksizes:0},h=c==null?a.len:a.pos+c;for(;a.pos<h;){let m=a.uint32();switch(m>>>3){case 1:{yield{field:`${u}.Type`,value:r.DataType.codec().decode(a)};break}case 2:{yield{field:`${u}.Data`,value:a.bytes()};break}case 3:{yield{field:`${u}.filesize`,value:a.uint64()};break}case 4:{if(l.limits?.blocksizes!=null&&d.blocksizes===l.limits.blocksizes)throw new an('Streaming decode error - repeated field "blocksizes" had too many elements');yield{field:`${u}.blocksizes[]`,index:d.blocksizes,value:a.uint64()},d.blocksizes++;break}case 5:{yield{field:`${u}.hashType`,value:a.uint64()};break}case 6:{yield{field:`${u}.fanout`,value:a.uint64()};break}case 7:{yield{field:`${u}.mode`,value:a.uint32()};break}case 8:{yield*cn.codec().stream(a,a.uint32(),`${u}.mtime`,{limits:l.limits?.mtime});break}default:{a.skipType(m&7);break}}}})),n);function s(a){return nn(a,r.codec())}r.encode=s;function i(a,c){return Zr(a,r.codec(),c)}r.decode=i;function o(a,c){return sn(a,r.codec(),c)}r.stream=o})(ve||(ve={}));(function(r){let e;r.codec=()=>(e==null&&(e=on((i,o,a={})=>{a.lengthDelimited!==!1&&o.fork(),i.Seconds!=null&&(o.uint32(8),o.int64(i.Seconds)),i.FractionalNanoseconds!=null&&(o.uint32(21),o.fixed32(i.FractionalNanoseconds)),a.lengthDelimited!==!1&&o.ldelim()},(i,o,a={})=>{let c={},u=o==null?i.len:i.pos+o;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{c.Seconds=i.int64();break}case 2:{c.FractionalNanoseconds=i.fixed32();break}default:{i.skipType(l&7);break}}}return c},function*(i,o,a,c={}){let u=o==null?i.len:i.pos+o;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{yield{field:`${a}.Seconds`,value:i.int64()};break}case 2:{yield{field:`${a}.FractionalNanoseconds`,value:i.fixed32()};break}default:{i.skipType(l&7);break}}}})),e);function t(i){return nn(i,r.codec())}r.encode=t;function n(i,o){return Zr(i,r.codec(),o)}r.decode=n;function s(i,o){return sn(i,r.codec(),o)}r.stream=s})(cn||(cn={}));(function(r){let e;r.codec=()=>(e==null&&(e=on((i,o,a={})=>{a.lengthDelimited!==!1&&o.fork(),i.MimeType!=null&&(o.uint32(10),o.string(i.MimeType)),a.lengthDelimited!==!1&&o.ldelim()},(i,o,a={})=>{let c={},u=o==null?i.len:i.pos+o;for(;i.pos<u;){let l=i.uint32();l>>>3===1?c.MimeType=i.string():i.skipType(l&7)}return c},function*(i,o,a,c={}){let u=o==null?i.len:i.pos+o;for(;i.pos<u;){let l=i.uint32();l>>>3===1?yield{field:`${a}.MimeType`,value:i.string()}:i.skipType(l&7)}})),e);function t(i){return nn(i,r.codec())}r.encode=t;function n(i,o){return Zr(i,r.codec(),o)}r.decode=n;function s(i,o){return sn(i,r.codec(),o)}r.stream=s})(rd||(rd={}))});var sd,Jm,id,od,j,Xt=p(()=>{"use strict";So();nd();So();sd={Raw:"raw",Directory:"directory",File:"file",Metadata:"metadata",Symlink:"symlink",HAMTShard:"hamt-sharded-directory"},Jm=["directory","hamt-sharded-directory"],id=parseInt("0644",8),od=parseInt("0755",8),j=class r{constructor(e={type:"file"}){f(this,"type");f(this,"data");f(this,"blockSizes");f(this,"hashType");f(this,"fanout");f(this,"mtime");f(this,"_mode");f(this,"_originalMode");let{type:t,data:n,blockSizes:s,hashType:i,fanout:o,mtime:a,mode:c}=e;if(t!=null&&!Object.values(sd).includes(t))throw new Jr("Type: "+t+" is not valid");this.type=t??"file",this.data=n,this.hashType=i,this.fanout=o,this.blockSizes=s??[],this._originalMode=0,this.mode=c,this.mtime=a}static unmarshal(e){let t=ve.decode(e),n=new r({type:sd[t.Type!=null?t.Type.toString():"File"],data:t.Data,blockSizes:t.blocksizes,mode:t.mode,mtime:t.mtime!=null?{secs:t.mtime.Seconds??0n,nsecs:t.mtime.FractionalNanoseconds}:void 0,fanout:t.fanout});return n._originalMode=t.mode??0,n}set mode(e){e==null?this._mode=this.isDirectory()?od:id:this._mode=e&4095}get mode(){return this._mode}isDirectory(){return Jm.includes(this.type)}addBlockSize(e){this.blockSizes.push(e)}removeBlockSize(e){this.blockSizes.splice(e,1)}fileSize(){if(this.isDirectory())return 0n;let e=0n;return this.blockSizes.forEach(t=>{e+=t}),this.data!=null&&(e+=BigInt(this.data.length)),e}marshal(){let e;switch(this.type){case"raw":e=ve.DataType.Raw;break;case"directory":e=ve.DataType.Directory;break;case"file":e=ve.DataType.File;break;case"metadata":e=ve.DataType.Metadata;break;case"symlink":e=ve.DataType.Symlink;break;case"hamt-sharded-directory":e=ve.DataType.HAMTShard;break;default:throw new Jr(`Type: ${e} is not valid`)}let t=this.data;(this.data==null||this.data.length===0)&&(t=void 0);let n;this.mode!=null&&(n=this._originalMode&4294963200|(this.mode??0),n===id&&!this.isDirectory()&&(n=void 0),n===od&&this.isDirectory()&&(n=void 0));let s;return this.mtime!=null&&(s={Seconds:this.mtime.secs,FractionalNanoseconds:this.mtime.nsecs}),ve.encode({Type:e,Data:t,filesize:this.isDirectory()?void 0:this.fileSize(),blocksizes:this.blockSizes,hashType:this.hashType,fanout:this.fanout,mode:n,mtime:s})}}});var Ne,Fs=p(()=>{"use strict";Ne=class extends Event{constructor(t,n){super(t);f(this,"type");f(this,"detail");this.type=t,this.detail=n}}});var pe,Zt=p(()=>{"use strict";yt();mt();Wo();pe=async(r,e,t)=>{t.codec==null&&(t.codec=jr);let n=await Oo.digest(r),s=G.create(t.cidVersion??1,t.codec.code,n);return await e.put(s,r,t),s}});function cd(r){return async function*(t,n){let s=0n;for await(let i of t.content)yield async()=>{let o,a={codec:jr,cidVersion:r.cidVersion,onProgress:r.onProgress};r.rawLeaves?(a.codec=Jt,a.cidVersion=1):(o=new j({type:r.leafType,data:i}),i=te({Data:o.marshal(),Links:[]}));let c=await pe(i,n,a);return s+=BigInt(i.byteLength),r.onProgress?.(new Ne("unixfs:importer:progress:file:write",{bytesWritten:s,cid:c,path:t.path})),{cid:c,unixfs:o,size:BigInt(i.length),block:i}}}}var ld=p(()=>{"use strict";yt();Xt();en();Fs();Zt()});var er,ir,tr,ea,rr,ta,nr,ra,sr,ke,je,ln=p(()=>{"use strict";er=class er extends Error{constructor(t="Invalid parameters"){super(t);f(this,"name",er.name);f(this,"code",er.code)}};f(er,"name","InvalidParametersError"),f(er,"code","ERR_INVALID_PARAMS");ir=er,tr=class tr extends Error{constructor(t="Invalid avg chunk size"){super(t);f(this,"name",tr.name);f(this,"code",tr.code)}};f(tr,"name","InvalidAvgChunkSizeError"),f(tr,"code","ERR_INVALID_AVG_CHUNK_SIZE");ea=tr,rr=class rr extends Error{constructor(t="Invalid chunk size"){super(t);f(this,"name",rr.name);f(this,"code",rr.code)}};f(rr,"name","InvalidChunkSizeError"),f(rr,"code","ERR_INVALID_CHUNK_SIZE");ta=rr,nr=class nr extends Error{constructor(t="Invalid min chunk size"){super(t);f(this,"name",nr.name);f(this,"code",nr.code)}};f(nr,"name","InvalidMinChunkSizeError"),f(nr,"code","ERR_INVALID_MIN_CHUNK_SIZE");ra=nr,sr=class sr extends Error{constructor(t="Invalid content"){super(t);f(this,"name",sr.name);f(this,"code",sr.code)}};f(sr,"name","InvalidContentError"),f(sr,"code","ERR_INVALID_CONTENT");ke=sr,je=class extends Error{constructor(){super(...arguments);f(this,"name",ke.name);f(this,"code",ke.code)}};f(je,"name","InvalidShardingStrategyError"),f(je,"code","ERR_SHARDING_STRATEGY")});var ud,dd=p(()=>{"use strict";yt();Xt();Zt();ud=async(r,e,t)=>{let n=new j({type:"directory",mtime:r.mtime,mode:r.mode}),s=te(ee({Data:n.marshal()})),i=await pe(s,e,t),o=r.path;return{cid:i,path:o,unixfs:n,size:BigInt(s.length),originalPath:r.originalPath,block:s}}});async function*Qm(r,e,t){let n=-1,s;for await(let i of Or(t.bufferImporter(r,e),t.blockWriteConcurrency)){if(n++,n===0){s={...i,single:!0};continue}else n===1&&s!=null&&(yield{...s,block:void 0,single:void 0},s=void 0);yield{...i,block:void 0}}s!=null&&(yield s)}function hd(r){return r.single===!0}var Xm,fd,pd=p(()=>{"use strict";yt();Xt();ro();en();Fs();Zt();Xm=(r,e,t)=>async function(s){if(s.length===1&&hd(s[0])&&t.reduceSingleLeafToSelf){let l=s[0],d=l.block;return hd(l)&&(r.mtime!==void 0||r.mode!==void 0)&&(l.unixfs=new j({type:"file",mtime:r.mtime,mode:r.mode,data:l.block}),d={Data:l.unixfs.marshal(),Links:[]},l.block=te(ee(d)),l.cid=await pe(l.block,e,{...t,cidVersion:t.cidVersion}),l.size=BigInt(l.block.length)),t.onProgress?.(new Ne("unixfs:importer:progress:file:layout",{cid:l.cid,path:r.originalPath})),{cid:l.cid,path:r.path,unixfs:l.unixfs,size:l.size,originalPath:r.originalPath}}let i=new j({type:"file",mtime:r.mtime,mode:r.mode}),o=s.filter(l=>l.cid.code===jt&&l.size>0||l.unixfs!=null&&l.unixfs.data==null&&l.unixfs.fileSize()>0n?!0:!!l.unixfs?.data?.length).map(l=>l.cid.code===jt?(i.addBlockSize(l.size),{Name:"",Tsize:Number(l.size),Hash:l.cid}):(l.unixfs?.data==null?i.addBlockSize(l.unixfs?.fileSize()??0n):i.addBlockSize(BigInt(l.unixfs.data.length)),{Name:"",Tsize:Number(l.size),Hash:l.cid})),a={Data:i.marshal(),Links:o},c=te(ee(a)),u=await pe(c,e,t);return t.onProgress?.(new Ne("unixfs:importer:progress:file:layout",{cid:u,path:r.originalPath})),{cid:u,path:r.path,unixfs:i,size:BigInt(c.length+a.Links.reduce((l,d)=>l+(d.Tsize??0),0)),originalPath:r.originalPath,block:c}},fd=async(r,e,t)=>t.layout(Qm(r,e,t),Xm(r,e,t))});function Zm(r){return Symbol.iterator in r}function ey(r){return Symbol.asyncIterator in r}function ty(r){try{if(r instanceof Uint8Array)return(async function*(){yield r})();if(Zm(r))return(async function*(){yield*r})();if(ey(r))return r}catch{throw new ke("Content was invalid")}throw new ke("Content was invalid")}function md(r){return async function*(t,n){for await(let s of t){let i;if(s.path!=null&&(i=s.path,s.path=s.path.split("/").filter(o=>o!=null&&o!==".").join("/")),ry(s)){let o={path:s.path,mtime:s.mtime,mode:s.mode,content:(async function*(){let c=0n;for await(let u of r.chunker(r.chunkValidator(ty(s.content)))){let l=BigInt(u.byteLength);c+=l,r.onProgress?.(new Ne("unixfs:importer:progress:file:read",{bytesRead:c,chunkSize:l,path:s.path})),yield u}})(),originalPath:i},a=r.fileBuilder??fd;yield async()=>a(o,n,r)}else if(s.path!=null){let o={path:s.path,mtime:s.mtime,mode:s.mode,originalPath:i},a=r.dirBuilder??ud;yield async()=>a(o,n,r)}else throw new Error("Import candidate must have content or path or both")}}}function ry(r){return r.content!=null}var yd=p(()=>{"use strict";Fs();ln();dd();pd()});var gd,wd=p(()=>{"use strict";Bs();ln();gd=()=>async function*(e){for await(let t of e){if(t.length===void 0)throw new ke("Content was invalid");if(typeof t=="string"||t instanceof String)yield Qt(t.toString());else if(Array.isArray(t))yield Uint8Array.from(t);else if(t instanceof Uint8Array)yield t;else throw new ke("Content was invalid")}}});function na(r){let e=r?.maxChildrenPerNode??ny;return async function t(n,s){let i=[];for await(let o of ys(n,e))i.push(await s(o));return i.length>1?t(i,s):i[0]}}var ny,bd=p(()=>{"use strict";to();ny=174});function sy(r){return r[Symbol.asyncIterator]!=null}function iy(r){if(sy(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Sd,Ad=p(()=>{"use strict";Sd=iy});var xd=p(()=>{"use strict";bd()});var Pe,Ms=p(()=>{"use strict";mt();Pe=class{constructor(e,t){f(this,"options");f(this,"root");f(this,"dir");f(this,"path");f(this,"dirty");f(this,"flat");f(this,"parent");f(this,"parentKey");f(this,"unixfs");f(this,"mode");f(this,"mtime");f(this,"cid");f(this,"size");f(this,"nodeSize");this.options=t??{},this.root=e.root,this.dir=e.dir,this.path=e.path,this.dirty=e.dirty,this.flat=e.flat,this.parent=e.parent,this.parentKey=e.parentKey,this.unixfs=e.unixfs,this.mode=e.mode,this.mtime=e.mtime}}});function ay(r){let e=0;return r>=4294967296&&(r=Math.floor(r/4294967296),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+oy[r]}function Je(r){return r%2===0&&r++,Math.floor((ay(r)+6)/7)}function Us(r){let e=0;for(let t=0;t<r.length;t++){let n=r.charCodeAt(t);n<128?e++:n<2048?e+=2:n>=55296&&n<=56319&&t+1<r.length?(t++,e+=4):e+=3}return e}function vd(r,e,t){let n=1+Je(e)+e;return n+=1+Je(r)+r,n+=1+Je(t),1+Je(n)+n}function kd(r,e){let t=2;if(r!==void 0&&r!==cy&&(t+=1+Je(r)),e!=null){let n=0,s=Number(e.secs);s<0?n+=11:n+=1+Je(s),e.nsecs!=null&&(n+=5),t+=1+Je(n)+n}return 1+Je(t)+t}var oy,cy,Ed=p(()=>{"use strict";oy=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];cy=493});function sa(r,e){return e?.cid!=null&&e?.size!=null?r+e.cid.byteLength:0}function ia(r,e){return e?.cid!=null&&e?.size!=null?vd(r,e.cid.byteLength,Number(e.size)):0}var St,oa=p(()=>{"use strict";yt();Xt();Ms();aa();Ed();Zt();St=class extends Pe{constructor(t,n){super(t,n);f(this,"_children");this._children=new Map}async put(t,n){if(this.nodeSize!==void 0){let s=this._children.get(t),i=Us(t),o=this.options?.shardSplitStrategy;if(o==="links-bytes")this.nodeSize-=sa(i,s),this.nodeSize+=sa(i,n);else if(o==="block-bytes")this.nodeSize-=ia(i,s),this.nodeSize+=ia(i,n);else throw new je(`Invalid shardSplitStrategy: ${o}`);this.nodeSize<0&&(this.nodeSize=void 0)}this.cid=void 0,this.size=void 0,this._children.set(t,n)}async get(t){return Promise.resolve(this._children.get(t))}childCount(){return this._children.size}directChildrenCount(){return this.childCount()}onlyChild(){return this._children.values().next().value}*eachChildSeries(){for(let[t,n]of this._children.entries())yield{key:t,child:n}}marshal(){let t=new j({type:"directory",mtime:this.mtime,mode:this.mode}),n=[];for(let[i,o]of this._children.entries())if(!(o.size==null||o.cid==null)){if(o.cid==null)throw new Error("Directory contents must be flushed before marshaling");n.push({Hash:o.cid,Name:i,Tsize:o.size==null?void 0:Number(o.size)})}let s={Data:t.marshal(),Links:n};return te(ee(s))}async estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;let t=this.options?.shardSplitStrategy;if(t==="links-bytes"){this.nodeSize=0;for(let[n,s]of this._children.entries())this.nodeSize+=sa(Us(n),s)}else if(t==="block-bytes"){this.nodeSize=kd(this.mode,this.mtime);for(let[n,s]of this._children.entries())this.nodeSize+=ia(Us(n),s)}else throw new je(`Invalid shardSplitStrategy: ${t}`);return this.nodeSize}async*flush(t){let n=[];for(let[u,l]of this._children.entries()){let d=l;if(l instanceof Pe)for await(let h of l.flush(t))d=h,yield h;d.size!=null&&d.cid!=null&&n.push({Name:u,Tsize:Number(d.size),Hash:d.cid})}let s=new j({type:"directory",mtime:this.mtime,mode:this.mode}),i={Data:s.marshal(),Links:n},o=te(ee(i)),a=await pe(o,t,this.options),c=o.length+i.Links.reduce((u,l)=>u+(l.Tsize??0),0);this.cid=a,this.size=c,yield{cid:a,unixfs:s,path:this.path,size:BigInt(c)}}}});function Qe(r,e){let t=r.lo+e.lo>>>0,n=r.hi+e.hi+(t<r.lo?1:0)>>>0;return{lo:t,hi:n}}function ly(r,e){return r+e>>>0}function me(r,e){let t=r.lo&65535,n=r.lo>>>16,s=e.lo&65535,i=e.lo>>>16,o=t*s,a=t*i,c=n*s,u=n*i,l=(o>>>16)+(a&65535)+(c&65535)>>>0,d=(l<<16|o&65535)>>>0,h=u+(a>>>16)+(c>>>16)+(l>>>16),m=Math.imul(r.lo,e.hi),y=Math.imul(r.hi,e.lo),w=h+m+y>>>0;return{lo:d,hi:w}}function At(r,e){return Math.imul(r,e)>>>0}function or(r,e){if(e===0)return r;if(e===32)return{lo:r.hi,hi:r.lo};if(e<32){let s=(r.lo<<e|r.hi>>>32-e)>>>0,i=(r.hi<<e|r.lo>>>32-e)>>>0;return{lo:s,hi:i}}e-=32;let t=(r.hi<<e|r.lo>>>32-e)>>>0,n=(r.lo<<e|r.hi>>>32-e)>>>0;return{lo:t,hi:n}}function L(r,e){return{lo:(r.lo^e.lo)>>>0,hi:(r.hi^e.hi)>>>0}}function ca(r,e){if(e===0)return r;if(e<32){let t=(r.lo>>>e|r.hi<<32-e)>>>0,n=r.hi>>>e;return{lo:t,hi:n}}return{lo:r.hi>>>e-32,hi:0}}function R(r,e){return{lo:r>>>0,hi:e>>>0}}function la(r,e){return(r<<e|r>>>32-e)>>>0}function Cd(r,e){let t=e*8,n=r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24,s=r[t+4]|r[t+5]<<8|r[t+6]<<16|r[t+7]<<24;return{lo:n>>>0,hi:s>>>0}}function uy(r,e){let t=e*4;return(r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24)>>>0}function Pd(r){return r=L(r,ca(r,33)),r=me(r,R(3981806797,4283543511)),r=L(r,ca(r,33)),r=me(r,R(444984403,3301882366)),r=L(r,ca(r,33)),r}function dy(r){return r^=r>>>16,r=At(r,2246822507),r^=r>>>13,r=At(r,3266489909),r^=r>>>16,r}function ua(r,e=0){let t=R(e,0),n=R(e,0),s=r.length,i=Math.floor(s/16),o=R(289559509,2277735313),a=R(658871167,1291169091);for(let h=0;h<i;h++){let m=Cd(r,h*2),y=Cd(r,h*2+1);m=me(m,o),m=or(m,31),m=me(m,a),t=L(t,m),t=or(t,27),t=Qe(t,n),t=Qe(me(t,R(5,0)),R(1390208809,0)),y=me(y,a),y=or(y,33),y=me(y,o),n=L(n,y),n=or(n,31),n=Qe(n,t),n=Qe(me(n,R(5,0)),R(944331445,0))}let c=R(0,0),u=R(0,0),l=r.slice(i*16);switch(l.length){case 15:u=L(u,R(0,l[14]<<16));case 14:u=L(u,R(0,l[13]<<8));case 13:u=L(u,R(0,l[12]));case 12:u=L(u,R(l[11]<<24,0));case 11:u=L(u,R(l[10]<<16,0));case 10:u=L(u,R(l[9]<<8,0));case 9:u=L(u,R(l[8],0)),u=me(u,a),u=or(u,33),u=me(u,o),n=L(n,u);case 8:c=L(c,R(0,l[7]<<24));case 7:c=L(c,R(0,l[6]<<16));case 6:c=L(c,R(0,l[5]<<8));case 5:c=L(c,R(0,l[4]));case 4:c=L(c,R(l[3]<<24,0));case 3:c=L(c,R(l[2]<<16,0));case 2:c=L(c,R(l[1]<<8,0));case 1:c=L(c,R(l[0],0)),c=me(c,o),c=or(c,31),c=me(c,a),t=L(t,c)}let d=R(s,0);return t=L(t,d),n=L(n,d),t=Qe(t,n),n=Qe(n,t),t=Pd(t),n=Pd(n),t=Qe(t,n),n=Qe(n,t),new Uint8Array([t.hi>>>24&255,t.hi>>>16&255,t.hi>>>8&255,t.hi&255,t.lo>>>24&255,t.lo>>>16&255,t.lo>>>8&255,t.lo&255,n.hi>>>24&255,n.hi>>>16&255,n.hi>>>8&255,n.hi&255,n.lo>>>24&255,n.lo>>>16&255,n.lo>>>8&255,n.lo&255])}function Id(r,e=0){let t=e>>>0,n=r.length,s=Math.floor(n/4),i=3432918353,o=461845907;for(let u=0;u<s;u++){let l=uy(r,u);l=At(l,i),l=la(l,15),l=At(l,o),t^=l,t=la(t,13),t=ly(At(t,5),3864292196)}let a=r.slice(s*4),c=0;switch(a.length){case 3:c^=a[2]<<16;case 2:c^=a[1]<<8;case 1:c^=a[0],c=At(c,i),c=la(c,15),c=At(c,o),t^=c}return t^=n,t=dy(t),t}var Bd=p(()=>{"use strict"});function fy(r){let e=new Array(4);for(let t=0;t<4;t++)e[t]=r&255,r=r>>8;return new Uint8Array(e)}var W1,Td,H1,Rd=p(()=>{"use strict";Is();Bd();W1=wt({name:"murmur3-32",code:35,encode:r=>fy(Id(r))}),Td=wt({name:"murmur3-128",code:34,encode:r=>ua(r)}),H1=wt({name:"murmur3-x64-64",code:34,encode:r=>ua(r).subarray(0,8)})});var ar,Xe,Dd=p(()=>{"use strict";ar=class ar extends Error{constructor(t="Not Found"){super(t);f(this,"name",ar.name);f(this,"code",ar.code)}};f(ar,"name","NotFoundError"),f(ar,"code","ERR_NOT_FOUND");Xe=ar});var Ns=p(()=>{"use strict";Dd()});var Ie,un=p(()=>{"use strict";Ie=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,bytes:s}of e)await this.put(n,s,t),yield n}get(e,t){throw new Error(".get is not implemented")}async*getMany(e,t){for await(let n of e)yield{cid:n,bytes:this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}}});var cr,da=p(()=>{"use strict";Ns();un();cr=class extends Ie{put(e,t,n){return n?.signal?.throwIfAborted(),e}get(e,t){throw t?.signal?.throwIfAborted(),new Xe}has(e,t){return t?.signal?.throwIfAborted(),!1}async delete(e,t){t?.signal?.throwIfAborted()}async*getAll(e){e?.signal?.throwIfAborted()}}});var Ud=C((eA,Md)=>{"use strict";Md.exports=class{constructor(){this._bitArrays=[],this._data=[],this._length=0,this._changedLength=!1,this._changedData=!1}set(e,t){let n=this._internalPositionFor(e,!1);if(t===void 0)n!==-1&&(this._unsetInternalPos(n),this._unsetBit(e),this._changedLength=!0,this._changedData=!0);else{let s=!1;n===-1?(n=this._data.length,this._setBit(e),this._changedData=!0):s=!0,this._setInternalPos(n,e,t,s),this._changedLength=!0}}unset(e){this.set(e,void 0)}get(e){this._sortData();let t=this._internalPositionFor(e,!0);if(t!==-1)return this._data[t][1]}push(e){return this.set(this.length,e),this.length}get length(){if(this._sortData(),this._changedLength){let e=this._data[this._data.length-1];this._length=e?e[0]+1:0,this._changedLength=!1}return this._length}forEach(e){let t=0;for(;t<this.length;)e(this.get(t),t,this),t++}map(e){let t=0,n=new Array(this.length);for(;t<this.length;)n[t]=e(this.get(t),t,this),t++;return n}reduce(e,t){let n=0,s=t;for(;n<this.length;){let i=this.get(n);s=e(s,i,n),n++}return s}find(e){let t=0,n,s;for(;t<this.length&&!n;)s=this.get(t),n=e(s),t++;return n?s:void 0}_internalPositionFor(e,t){let n=this._bytePosFor(e,t);if(n>=this._bitArrays.length)return-1;let s=this._bitArrays[n],i=e-n*7;if(!((s&1<<i)>0))return-1;let a=this._bitArrays.slice(0,n).reduce(py,0),c=~(4294967295<<i+1),u=Fd(s&c);return a+u-1}_bytePosFor(e,t){let n=Math.floor(e/7),s=n+1;for(;!t&&this._bitArrays.length<s;)this._bitArrays.push(0);return n}_setBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]|=1<<e-t*7}_unsetBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]&=~(1<<e-t*7)}_setInternalPos(e,t,n,s){let i=this._data,o=[t,n];if(s)this._sortData(),i[e]=o;else{if(i.length)if(i[i.length-1][0]>=t)i.push(o);else if(i[0][0]<=t)i.unshift(o);else{let a=Math.round(i.length/2);this._data=i.slice(0,a).concat(o).concat(i.slice(a))}else this._data.push(o);this._changedData=!0,this._changedLength=!0}}_unsetInternalPos(e){this._data.splice(e,1)}_sortData(){this._changedData&&this._data.sort(my),this._changedData=!1}bitField(){let e=[],t=8,n=0,s=0,i,o=this._bitArrays.slice();for(;o.length||n;){n===0&&(i=o.shift(),n=7);let c=Math.min(n,t),u=~(255<<c),l=i&u;s|=l<<8-t,i=i>>>c,n-=c,t-=c,(!t||!n&&!o.length)&&(e.push(s),s=0,t=8)}for(var a=e.length-1;a>0&&e[a]===0;a--)e.pop();return e}compactArray(){return this._sortData(),this._data.map(yy)}};function py(r,e){return r+Fd(e)}function Fd(r){let e=r;return e=e-(e>>1&1431655765),e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>24}function my(r,e){return r[0]-e[0]}function yy(r){return r[1]}});function gy(r){return!!r}function wy(r,e){return r.key}function by(r){return r}async function Ld(r,e,t){let n=[];for(let s of r._children.compactArray())if(s instanceof Ze)await Ld(s,e,t);else{let i=await e(s);n.push({bitField:r._children.bitField(),children:i})}return t(n)}var Nd,Ze,_d=p(()=>{"use strict";Nd=z(Ud(),1);Bs();Ze=class r{constructor(e,t,n=0){f(this,"_options");f(this,"_popCount");f(this,"_parent");f(this,"_posAtParent");f(this,"_children");f(this,"key");this._options=e,this._popCount=0,this._parent=t,this._posAtParent=n,this._children=new Nd.default,this.key=null}async put(e,t){let n=await this._findNewBucketAndPos(e);n.bucket._putAt(n,e,t)}async get(e){let t=await this._findChild(e);if(t!=null)return t.value}async del(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);n!=null&&n.key===e&&t.bucket._delAt(t.pos)}leafCount(){return this._children.compactArray().reduce((t,n)=>n instanceof r?t+n.leafCount():t+1,0)}childrenCount(){return this._children.length}onlyChild(){return this._children.get(0)}*eachLeafSeries(){let e=this._children.compactArray();for(let t of e)t instanceof r?yield*t.eachLeafSeries():yield t}serialize(e,t){let n=[];return t(this._children.reduce((s,i,o)=>(i!=null&&(i instanceof r?s.push(i.serialize(e,t)):s.push(e(i,o))),s),n))}async asyncTransform(e,t){return Ld(this,e,t)}toJSON(){return this.serialize(wy,by)}prettyPrint(){return JSON.stringify(this.toJSON(),null," ")}tableSize(){return Math.pow(2,this._options.bits)}async _findChild(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);if(!(n instanceof r)&&n!=null&&n.key===e)return n}async _findPlace(e){let t=this._options.hash(typeof e=="string"?Qt(e):e),n=await t.take(this._options.bits),s=this._children.get(n);return s instanceof r?s._findPlace(t):{bucket:this,pos:n,hash:t,existingChild:s}}async _findNewBucketAndPos(e){let t=await this._findPlace(e);if(t.existingChild!=null&&t.existingChild.key!==e){let n=new r(this._options,t.bucket,t.pos);t.bucket._putObjectAt(t.pos,n);let s=await n._findPlace(t.existingChild.hash);return s.bucket._putAt(s,t.existingChild.key,t.existingChild.value),n._findNewBucketAndPos(t.hash)}return t}_putAt(e,t,n){this._putObjectAt(e.pos,{key:t,value:n,hash:e.hash})}_putObjectAt(e,t){this._children.get(e)==null&&this._popCount++,this._children.set(e,t)}_delAt(e){if(e===-1)throw new Error("Invalid position");this._children.get(e)!=null&&this._popCount--,this._children.unset(e),this._level()}_level(){if(this._parent!=null&&this._popCount<=1)if(this._popCount===1){let e=this._children.find(gy);if(e!=null&&!(e instanceof r)){let t=e.hash;t.untake(this._options.bits);let n={pos:this._posAtParent,hash:t,bucket:this._parent};this._parent._putAt(n,e.key,e.value)}}else this._parent._delAt(this._posAtParent)}_at(e){return this._children.get(e)}}});function xy(r,e,t){let n=vy(e,t);return(r&n)>>>e}function vy(r,e){return Sy[r]&Ay[Math.min(e+r-1,7)]}var Sy,Ay,Ls,Kd=p(()=>{"use strict";Sy=[255,254,252,248,240,224,192,128],Ay=[1,3,7,15,31,63,127,255],Ls=class{constructor(e){f(this,"_value");f(this,"_currentBytePos");f(this,"_currentBitPos");this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+this._currentBytePos*8}totalBits(){return this._value.length*8}take(e){let t=e,n=0;for(;t>0&&this._haveBits();){let s=this._value[this._currentBytePos],i=this._currentBitPos+1,o=Math.min(i,t),a=xy(s,i-o,o);n=(n<<o)+a,t-=o,this._currentBitPos-=o,this._currentBitPos<0&&(this._currentBitPos=7,this._currentBytePos--)}return n}untake(e){for(this._currentBitPos+=e;this._currentBitPos>7;)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}}});function Od(r){function e(t){return t instanceof _s?t:new _s(t,r)}return e}var _s,zd=p(()=>{"use strict";no();Kd();_s=class{constructor(e,t){f(this,"_value");f(this,"_hashFn");f(this,"_depth");f(this,"_availableBits");f(this,"_currentBufferIndex");f(this,"_buffers");if(!(e instanceof Uint8Array))throw new Error("can only hash Uint8Arrays");this._value=e,this._hashFn=t,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;for(;this._availableBits<t;)await this._produceMoreBits();let n=0;for(;t>0;){let s=this._buffers[this._currentBufferIndex],i=Math.min(s.availableBits(),t),o=s.take(i);n=(n<<i)+o,t-=i,this._availableBits-=i,s.availableBits()===0&&this._currentBufferIndex++}return n}untake(e){let t=e;for(;t>0;){let n=this._buffers[this._currentBufferIndex],s=Math.min(n.totalBits()-n.availableBits(),t);n.untake(s),t-=s,this._availableBits+=s,this._currentBufferIndex>0&&n.totalBits()===n.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;let e=this._depth>0?zr([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new Ls(t);this._buffers.push(n),this._availableBits+=n.availableBits()}}});function Wd(r){if(r==null||r.hashFn==null)throw new Error("please define an options.hashFn");let e={bits:r.bits??8,hash:Od(r.hashFn)};return new Ze(e)}var Hd=p(()=>{"use strict";_d();zd()});async function ky(r){return(await Td.encode(r)).slice(0,8).reverse()}async function*qd(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0n;for(let y=0;y<s.length;y++){let w=s.get(y);if(w==null)continue;let S=y.toString(16).toUpperCase().padStart(i,"0");if(w instanceof Ze){let b;for await(let A of qd(w,e,null,n))b=A;if(b==null)throw new Error("Could not flush sharded directory, no sub-shard found");o.push({Name:S,Tsize:Number(b.size),Hash:b.cid}),a+=b.size}else if(Vd(w.value)){let b=w.value,A;for await(let B of b.flush(e))A=B,yield A;if(A==null)throw new Error("Did not flush dir");let v=S+w.key;o.push({Name:v,Tsize:Number(A.size),Hash:A.cid}),a+=A.size}else{let b=w.value;if(b.cid==null)continue;let A=S+w.key,v=b.size;o.push({Name:A,Tsize:Number(v),Hash:b.cid}),a+=BigInt(v??0)}}let c=Uint8Array.from(s.bitField().reverse()),u=new j({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:so,mtime:t?.mtime,mode:t?.mode}),l={Data:u.marshal(),Links:o},d=te(ee(l)),h=await pe(d,e,n),m=BigInt(d.byteLength)+a;yield{cid:h,unixfs:u,size:m}}function Vd(r){return typeof r.flush=="function"}async function Gd(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0;for(let h=0;h<s.length;h++){let m=s.get(h);if(m==null)continue;let y=h.toString(16).toUpperCase().padStart(i,"0");if(m instanceof Ze){let{size:w,cid:S}=await Gd(m,null,t,n);o.push({Name:y,Tsize:Number(w),Hash:S}),a+=y.length+S.byteLength}else if(Vd(m.value)){let w=m.value,S=w.nodeSize;if(w.cid==null)throw new Error("Child directory has not been persisted");o.push({Name:y+m.key,Tsize:Number(S),Hash:w.cid}),a+=y.length+w.cid.byteLength}else{let w=m.value,S=y+m.key,b=w.size;o.push({Name:S,Tsize:Number(b),Hash:w.cid}),a+=y.length+w.cid.byteLength}}let c=Uint8Array.from(s.bitField().reverse()),u=new j({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:so,mtime:e?.mtime,mode:e?.mode}),l=te(ee({Data:u.marshal(),Links:o}));return{cid:await pe(l,t,n),size:n.shardSplitStrategy==="links-bytes"?a:l.length}}var ha,$d,Yd=p(()=>{"use strict";yt();Rd();da();Hd();Xt();Wr();Ms();Zt();ha=class extends Pe{constructor(t,n){super(t,n);f(this,"bucket");this.bucket=Wd({hashFn:ky,bits:n.shardFanoutBits??ws})}async put(t,n){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,await this.bucket.put(t,n)}async get(t){return this.bucket.get(t)}childCount(){return this.bucket.leafCount()}directChildrenCount(){return this.bucket.childrenCount()}onlyChild(){return this.bucket.onlyChild()}*eachChildSeries(){for(let{key:t,value:n}of this.bucket.eachLeafSeries())yield{key:t,child:n}}async estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;let t=new cr,n=await Gd(this.bucket,this,t,this.options);return this.nodeSize=n.size,this.nodeSize}async*flush(t){for await(let n of qd(this.bucket,t,this,this.options))yield{...n,path:this.path}}},$d=ha});async function fa(r,e){let t=e,n=e.options.shardSplitThresholdBytes??bs;e instanceof St&&await e.estimateNodeSize()>n&&(t=await Ey(e));let s=t.parent;if(s!=null){if(t!==e){if(r!=null&&(r.parent=t),t.parentKey==null)throw new Error("No parent key found");await s.put(t.parentKey,t)}return fa(t,s)}return t}async function Ey(r){let e=new $d({root:r.root,dir:!0,parent:r.parent,parentKey:r.parentKey,path:r.path,dirty:r.dirty,flat:!1,mtime:r.mtime,mode:r.mode},r.options);for(let{key:t,child:n}of r.eachChildSeries())await e.put(t,n);return e}var jd=p(()=>{"use strict";Wr();oa();Yd()});var Jd,Qd=p(()=>{"use strict";Jd=(r="")=>r.split(/(?<!\\)\//).filter(Boolean)});async function Cy(r,e,t){let n=Jd(r.path??""),s=n.length-1,i=e,o="";for(let a=0;a<n.length;a++){let c=n[a];o+=`${o!==""?"/":""}${c}`;let u=a===s;if(i.dirty=!0,i.cid=void 0,i.size=void 0,u)await i.put(c,r),e=await fa(null,i);else{let l=await i.get(c);(l==null||!(l instanceof Pe))&&(l=new St({root:!1,dir:!0,parent:i,parentKey:c,path:o,dirty:!0,flat:!0,mtime:l?.unixfs?.mtime,mode:l?.unixfs?.mode},t)),await i.put(c,l),i=l}}return e}async function*Xd(r,e){if(!(r instanceof Pe)){r.unixfs?.isDirectory()===!0&&(yield r);return}yield*r.flush(e)}function Zd(r){return async function*(t,n){let s=new St({root:!0,dir:!0,path:"",dirty:!0,flat:!0},r),i,o=!1;for await(let a of t){if(a==null)continue;let c=`${a.originalPath??""}`.split("/")[0];c!=null&&c!==""&&(i==null?(i=c,o=!0):i!==c&&(o=!1)),s=await Cy(a,s,r),a.unixfs?.isDirectory()!==!0&&(yield a)}if(r.wrapWithDirectory||o&&s.childCount()>1)yield*Xd(s,n);else for(let a of s.eachChildSeries())a!=null&&(yield*Xd(a.child,n))}}var eh=p(()=>{"use strict";oa();Ms();jd();Qd()});var th={};x(th,{InvalidAvgChunkSizeError:()=>ea,InvalidChunkSizeError:()=>ta,InvalidContentError:()=>ke,InvalidMinChunkSizeError:()=>ra,InvalidParametersError:()=>ir,InvalidShardingStrategyError:()=>je,importByteStream:()=>By,importBytes:()=>Iy,importDirectory:()=>Py,importFile:()=>ma,importer:()=>pa});async function*pa(r,e,t={}){let n;Symbol.asyncIterator in r||Symbol.iterator in r?n=r:n=[r];let s,i;t.profile==="unixfs-v0-2015"?(t.shardSplitStrategy=t.shardSplitStrategy??"links-bytes",t.cidVersion=t.cidVersion??0,t.rawLeaves=t.rawLeaves??!1,s=Ss,i=174):t.profile==="unixfs-v1-2025"&&(t.shardSplitStrategy=t.shardSplitStrategy??"block-bytes",t.cidVersion=t.cidVersion??1,t.rawLeaves=t.rawLeaves??!0,s=vl,i=1024);let o=t.wrapWithDirectory??Il,a=t.shardSplitThresholdBytes??bs,c=t.shardSplitStrategy??xl,u=t.shardFanoutBits??ws,l=t.cidVersion??1,d=t.rawLeaves??Pl,h=t.leafType??Bl,m=t.fileImportConcurrency??kl,y=t.blockWriteConcurrency??El,w=t.reduceSingleLeafToSelf??Cl,S=t.chunker??Tl({chunkSize:s}),b=t.chunkValidator??gd(),A=t.dagBuilder??md({chunker:S,chunkValidator:b,wrapWithDirectory:o,layout:t.layout??na({maxChildrenPerNode:i}),bufferImporter:t.bufferImporter??cd({cidVersion:l,rawLeaves:d,leafType:h,onProgress:t.onProgress}),blockWriteConcurrency:y,reduceSingleLeafToSelf:w,cidVersion:l,onProgress:t.onProgress,dirBuilder:t.dirBuilder,fileBuilder:t.fileBuilder}),v=t.treeBuilder??Zd({wrapWithDirectory:o,shardSplitThresholdBytes:a,shardSplitStrategy:c,shardFanoutBits:u,cidVersion:l,onProgress:t.onProgress});for await(let B of v(Or(A(n,e),m),e))yield{cid:B.cid,path:B.path,unixfs:B.unixfs,size:B.size}}async function ma(r,e,t={}){let n=await eo(pa([r],e,t));if(n==null)throw new ir("Nothing imported");return n}async function Py(r,e,t={}){let n=await eo(pa([r],e,t));if(n==null)throw new ir("Nothing imported");return n}async function Iy(r,e,t={}){return ma({content:r},e,t)}async function By(r,e,t={}){return ma({content:r},e,t)}var aa=p(()=>{"use strict";fl();ro();Rl();Wr();ld();yd();wd();ln();xd();eh();ln()});function Ty(r){return typeof r?.then=="function"}var Ks,rh=p(()=>{"use strict";Ns();Ad();Hr();mt();en();Vt();un();Ks=class extends Ie{constructor(){super();f(this,"data");this.data=new Map}put(t,n,s){s?.signal?.throwIfAborted();let i;if(n instanceof Uint8Array)i=[n];else{let o=Sd(n);if(Ty(o))return o.then(a=>this._put(t,a,s));i=o}return this._put(t,i,s)}_put(t,n,s){return s?.signal?.throwIfAborted(),this.data.set(Z.encode(t.multihash.bytes),n),t}*get(t,n){n?.signal?.throwIfAborted();let s=this.data.get(Z.encode(t.multihash.bytes));if(s==null)throw new Xe;yield*s}has(t,n){return n?.signal?.throwIfAborted(),this.data.has(Z.encode(t.multihash.bytes))}async delete(t,n){n?.signal?.throwIfAborted(),this.data.delete(Z.encode(t.multihash.bytes))}*getAll(t){t?.signal?.throwIfAborted();for(let[n,s]of this.data.entries())yield{cid:G.createV1(jt,ks(Z.decode(n))),bytes:(async function*(){yield*s})()},t?.signal?.throwIfAborted()}}});function Os(r,e){if(typeof r=="string")return Ry(r);if(typeof r=="number")return My(r,e);throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}function Ry(r){if(typeof r!="string"||r.length===0||r.length>100)throw new Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,s=parseFloat(t),i=n.toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return s*315576e5;case"months":case"month":case"mo":return s*26298e5;case"weeks":case"week":case"w":return s*6048e5;case"days":case"day":case"d":return s*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return s*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return s*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return s*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:throw new Error(`Unknown unit "${i}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function Dy(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function Fy(r){let e=Math.abs(r);return e>=315576e5?xt(r,e,315576e5,"year"):e>=26298e5?xt(r,e,26298e5,"month"):e>=6048e5?xt(r,e,6048e5,"week"):e>=864e5?xt(r,e,864e5,"day"):e>=36e5?xt(r,e,36e5,"hour"):e>=6e4?xt(r,e,6e4,"minute"):e>=1e3?xt(r,e,1e3,"second"):`${r} ms`}function My(r,e){if(typeof r!="number"||!Number.isFinite(r))throw new Error("Value provided to ms.format() must be of type number.");return e?.long?Fy(r):Dy(r)}function xt(r,e,t,n){let s=e>=t*1.5;return`${Math.round(r/t)} ${n}${s?"s":""}`}var ya=p(()=>{"use strict"});function ga(r){t.debug=t,t.default=t,t.coerce=c,t.disable=i,t.enable=s,t.enabled=o,t.humanize=Os,t.destroy=u,Object.keys(r).forEach(l=>{t[l]=r[l]}),t.names=[],t.skips=[],t.formatters={};function e(l){let d=0;for(let h=0;h<l.length;h++)d=(d<<5)-d+l.charCodeAt(h),d|=0;return t.colors[Math.abs(d)%t.colors.length]}t.selectColor=e;function t(l,d){let h,m=null,y,w;function S(...b){if(!S.enabled)return;let A=S,v=Number(new Date),B=v-(h||v);A.diff=B,A.prev=h,A.curr=v,h=v,b[0]=t.coerce(b[0]),typeof b[0]!="string"&&b.unshift("%O");let E=0;b[0]=b[0].replace(/%([a-zA-Z%])/g,(F,H)=>{if(F==="%%")return"%";E++;let Be=t.formatters[H];if(typeof Be=="function"){let vt=b[E];F=Be.call(A,vt),b.splice(E,1),E--}return F}),t.formatArgs.call(A,b),d?.onLog!=null&&d.onLog(...b),(A.log||t.log).apply(A,b)}return S.namespace=l,S.useColors=t.useColors(),S.color=t.selectColor(l),S.extend=n,S.destroy=t.destroy,Object.defineProperty(S,"enabled",{enumerable:!0,configurable:!1,get:()=>m!==null?m:(y!==t.namespaces&&(y=t.namespaces,w=t.enabled(l)),w),set:b=>{m=b}}),typeof t.init=="function"&&t.init(S),S}function n(l,d){let h=t(this.namespace+(typeof d>"u"?":":d)+l);return h.log=this.log,h}function s(l){t.save(l),t.namespaces=l,t.names=[],t.skips=[];let d,h=(typeof l=="string"?l:"").split(/[\s,]+/),m=h.length;for(d=0;d<m;d++)h[d]&&(l=h[d].replace(/\*/g,".*?"),l[0]==="-"?t.skips.push(new RegExp("^"+l.substr(1)+"$")):t.names.push(new RegExp("^"+l+"$")))}function i(){let l=[...t.names.map(a),...t.skips.map(a).map(d=>"-"+d)].join(",");return t.enable(""),l}function o(l){if(l[l.length-1]==="*")return!0;let d,h;for(d=0,h=t.skips.length;d<h;d++)if(t.skips[d].test(l))return!1;for(d=0,h=t.names.length;d<h;d++)if(t.names[d].test(l))return!0;return!1}function a(l){return l.toString().substring(2,l.toString().length-2).replace(/\.\*\?$/,"*")}function c(l){return l instanceof Error?l.stack??l.message:l}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var nh=p(()=>{"use strict";ya()});function Ny(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function Ly(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Os(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(t++,s==="%c"&&(n=t))}),r.splice(n,0,e)}function Ky(r){try{r?zs?.setItem("debug",r):zs?.removeItem("debug")}catch{}}function Oy(){let r;try{r=zs?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function zy(){try{return localStorage}catch{}}function Wy(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var zs,Uy,_y,sh,ih=p(()=>{"use strict";ya();nh();zs=zy(),Uy=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];_y=console.debug??console.log??(()=>{});sh=ga({formatArgs:Ly,save:Ky,load:Oy,useColors:Ny,setupFormatters:Wy,colors:Uy,storage:zs,log:_y})});var re,oh=p(()=>{"use strict";ih();re=sh});function ah(r,e=""){let t=ch(r.message),n=ch(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
951
951
  `).join(`
952
952
  ${e}`)}`:`${t}
953
953
  ${e}${n.split(`
954
954
  `).join(`
955
955
  ${e}`)}`:n!=null?`${n.split(`
956
956
  `).join(`
957
- ${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function Sg(r){return r instanceof AggregateError||r?.name==="AggregateError"&&Array.isArray(r.errors)}function Gd(r,e=""){if(Sg(r)){let t=qd(r,e);return r.errors.length>0?(e=`${e} `,t+=`
958
- ${e}${r.errors.map(n=>`${Gd(n,`${e}`)}`).join(`
957
+ ${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function Hy(r){return r instanceof AggregateError||r?.name==="AggregateError"&&Array.isArray(r.errors)}function lh(r,e=""){if(Hy(r)){let t=ah(r,e);return r.errors.length>0?(e=`${e} `,t+=`
958
+ ${e}${r.errors.map(n=>`${lh(n,`${e}`)}`).join(`
959
959
  ${e}`)}`):t+=`
960
- ${e}[Error list was empty]`,t.trim()}return qd(r,e)}function Ag(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e.useColors=()=>!1,e}function oa(r,e){let t=Ag(`${r}:trace`);return ee.enabled(`${r}:trace`)&&ee.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=ee(`${r}:trace`,e)),Object.assign(ee(r,e),{error:ee(`${r}:error`,e),trace:t,newScope:n=>oa(`${r}:${n}`,e)})}function Vd(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var Yd=m(()=>{"use strict";Kr();ms();vo();Hd();ee.formatters.b=r=>r==null?"undefined":le.baseEncode(r);ee.formatters.t=r=>r==null?"undefined":Q.baseEncode(r);ee.formatters.m=r=>r==null?"undefined":Ao.baseEncode(r);ee.formatters.p=r=>r==null?"undefined":r.toString();ee.formatters.c=r=>r==null?"undefined":r.toString();ee.formatters.k=r=>r==null?"undefined":r.toString();ee.formatters.a=r=>r==null?"undefined":r.toString();ee.formatters.e=r=>r==null?"undefined":Gd(r)});function xg(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var jd,Jd=m(()=>{"use strict";jd=xg});function vg(r){return r[Symbol.asyncIterator]!=null}function kg(r,e){let t=0;if(vg(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=jd(r),{value:s,done:i}=n.next();if(i===!0)return(function*(){})();let o=e(s,t++);if(typeof o.then=="function")return(async function*(){await o&&(yield s);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){o===!0&&(yield s);for(let c of n)a(c,t++)&&(yield c)})()}var Qd,Xd=m(()=>{"use strict";Jd();Qd=kg});function ar(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Zd=m(()=>{"use strict"});function Eg(r){return r.reason}async function eh(r,e,t){if(e==null)return r;let n=t?.translateError??Eg;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let s;try{return await Promise.race([r,new Promise((i,o)=>{s=()=>{o(n(e))},e.addEventListener("abort",s)})])}finally{s!=null&&e.removeEventListener("abort",s)}}var th=m(()=>{"use strict"});function rh(){return new aa}var aa,nh=m(()=>{"use strict";Zd();th();aa=class{constructor(){f(this,"readNext");f(this,"haveNext");f(this,"ended");f(this,"nextResult");f(this,"error");this.ended=!1,this.readNext=ar(),this.haveNext=ar()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ar(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ar(),await eh(this.readNext.promise,t?.signal,t)}}});function Cg(r){return r[Symbol.asyncIterator]!=null}async function Pg(r,e,t){try{await Promise.all(r.map(async n=>{for await(let s of n)await e.push(s,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*Ig(r){let e=new AbortController,t=rh();Pg(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*Bg(r){for(let e of r)yield*e}function Tg(...r){let e=[];for(let t of r)Cg(t)||e.push(t);return e.length===r.length?Bg(e):Ig(r)}var sh,ih=m(()=>{"use strict";nh();sh=Tg});var Rg,Ns,oh=m(()=>{"use strict";Yd();Ts();Xd();ih();on();Rg=oa("blockstore:core:tiered"),Ns=class extends Ce{constructor(t){super();f(this,"stores");this.stores=t.slice()}async put(t,n,s){return await Promise.all(this.stores.map(async i=>{await i.put(t,n,s)})),t}async*get(t,n){let s;for(let i of this.stores)try{yield*i.get(t,n);return}catch(o){s=o,Rg.error(o)}throw s??new Qe}async has(t,n){for(let s of this.stores)if(await s.has(t,n))return!0;return!1}async delete(t,n){await Promise.all(this.stores.map(async s=>{await s.delete(t,n)}))}async*putMany(t,n={}){for await(let s of t)await this.put(s.cid,s.bytes,n),yield s.cid}async*deleteMany(t,n={}){for await(let s of t)await this.delete(s,n),yield s}async*getAll(t){let n=new Set;yield*Qd(sh(...this.stores.map(s=>s.getAll(t))),s=>{let i=s.cid.toString();return n.has(i)?!1:(n.add(i),!0)})}}});var ah={};x(ah,{BaseBlockstore:()=>Ce,BlackHoleBlockstore:()=>or,MemoryBlockstore:()=>Fs,TieredBlockstore:()=>Ns});var ch=m(()=>{"use strict";on();Od();Zo();oh()});var lh=E((tx,Dg)=>{Dg.exports={name:"w3pk",version:"0.10.3",description:"WebAuthn SDK for passwordless authentication, encrypted wallets, ERC-5564 stealth addresses, and zero-knowledge proofs",author:"Julien B\xE9ranger",license:"GPL-3.0",repository:{type:"git",url:"https://github.com/w3hc/w3pk.git"},bugs:{url:"https://github.com/w3hc/w3pk/issues"},homepage:"https://github.com/w3hc/w3pk#readme",keywords:["webauthn","passkey","authentication","passwordless","fido2","biometric","ethereum","web3","encryption","zero-knowledge","zk-proofs","zk-snarks","privacy","stealth-address","erc-5564","erc-6538","unlinkable","anonymous-transactions","privacy-preserving","ecdh","secp256k1","view-tags","circom","groth16","merkle-tree","commitment-scheme"],main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.js"},"./zk":{types:"./dist/zk/index.d.ts",import:"./dist/zk/index.mjs",require:"./dist/zk/index.js"},"./zk/utils":{types:"./dist/zk/utils.d.ts",import:"./dist/zk/utils.mjs",require:"./dist/zk/utils.js"},"./chainlist":{types:"./dist/chainlist/index.d.ts",import:"./dist/chainlist/index.mjs",require:"./dist/chainlist/index.js"},"./inspect":{types:"./dist/inspect/index.d.ts",import:"./dist/inspect/index.mjs",require:"./dist/inspect/index.js"},"./inspect/node":{types:"./dist/inspect/node.d.ts",import:"./dist/inspect/node.mjs",require:"./dist/inspect/node.js"}},sideEffects:!1,files:["dist","README.md","LICENSE","docs/","scripts/compute-build-hash.mjs"],scripts:{build:"tsup","build:zk":"npm run build && npm run compile:circuits","compile:circuits":"node scripts/compile-circuits.js",dev:"tsup --watch",test:"tsx test/test.ts && tsx test/comprehensive.test.ts && tsx test/backup.test.ts && tsx test/social-recovery.test.ts && tsx test/recovery-education.test.ts && tsx test/zk/zk.test.ts && tsx test/nft-ownership.test.ts && tsx test/chainlist.test.ts && tsx test/eip7702.test.ts && tsx test/external-wallet.test.ts && tsx test/erc5564.test.ts && tsx test/zk/key-stretching.test.ts && tsx test/username-encoding.test.ts && tsx test/username-validation.test.ts && tsx test/origin-derivation.test.ts && tsx test/build-hash.test.ts && tsx test/credential-checking.test.ts && tsx test/webauthn-native.test.ts && tsx test/persistent-session.test.ts && tsx test/local-storage.test.ts && tsx test/sign-message.test.ts && tsx test/siwe.test.ts && tsx test/requirereauth.test.ts && tsx test/eip7951.test.ts && tsx test/send-transaction.test.ts && tsx test/eip1193-provider.test.ts && tsx test/mlkem.test.ts && tsx test/login-missing-wallet.test.ts && tsx test/backup-status.test.ts","test:basic":"tsx test/test.ts","test:comprehensive":"tsx test/comprehensive.test.ts","test:backup":"tsx test/backup.test.ts","test:social-recovery":"tsx test/social-recovery.test.ts","test:education":"tsx test/recovery-education.test.ts","test:username":"tsx test/username-encoding.test.ts && tsx test/username-validation.test.ts","test:recovery":"tsx test/backup.test.ts && tsx test/social-recovery.test.ts && tsx test/recovery-education.test.ts","test:zk":"tsx test/zk/zk.test.ts","test:nft":"tsx test/nft-ownership.test.ts","test:chainlist":"tsx test/chainlist.test.ts","test:eip7702":"tsx test/eip7702.test.ts","test:external-wallet":"tsx test/external-wallet.test.ts","test:eip7951":"tsx test/eip7951.test.ts","test:erc5564":"tsx test/erc5564.test.ts","test:sign-message":"tsx test/sign-message.test.ts","test:siwe":"tsx test/siwe.test.ts",prepublishOnly:"pnpm build","build:hash":"node scripts/compute-build-hash.mjs",html:"lsof -ti:3000 | xargs kill -9 2>/dev/null || true && tsup && npx serve . -l 3000 & sleep 5 && open http://localhost:3000/standalone/checker.html"},packageManager:"pnpm@10.6.4",devDependencies:{"@types/node":"^25.9.2","@types/qrcode":"^1.5.5",circomlib:"^2.0.5",siwe:"3.0.0",tsup:"^8.5.1",tsx:"^4.22.4",typescript:"^6.0.3"},peerDependencies:{ethers:"^6.0.0"},optionalDependencies:{"@ipld/car":"^5.4.6","blockstore-core":"^7.0.1",circomlibjs:"^0.1.7","ipfs-unixfs-importer":"^17.0.1",qrcode:"^1.5.4",snarkjs:"^0.7.6"},dependencies:{"@noble/hashes":"^2.2.0",mlkem:"^2.7.0"},pnpm:{overrides:{"jsonpath@<1.2.0":">=1.2.0","bn.js@>=5.0.0 <5.2.3":">=5.2.3","bn.js@<4.12.3":">=4.12.3","minimatch@>=5.0.0 <5.1.7":">=5.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","minimatch@>=5.0.0 <5.1.8":">=5.1.8","jsonpath@<=1.2.1":">=1.3.0","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3","picomatch@>=4.0.0 <4.0.4":">=4.0.4","underscore@<=1.13.7":">=1.13.8","ws@>=8.0.0 <8.20.1":">=8.20.1"}}}});var _g={};x(_g,{ApiError:()=>an,AuthenticationError:()=>O,CryptoError:()=>M,DEFAULT_MODE:()=>pe,DEFAULT_TAG:()=>J,RecoverySimulator:()=>Mt,RegistrationError:()=>bt,SocialRecoveryManager:()=>ot,StealthAddressModule:()=>Pt,StorageError:()=>C,SyncRequiredError:()=>St,WalletError:()=>y,WalletMissingError:()=>At,Web3Passkey:()=>Nt,Web3PasskeyError:()=>K,arrayBufferToBase64Url:()=>he,assertEthereumAddress:()=>cn,assertMnemonic:()=>fa,assertUsername:()=>ln,authenticateWithPasskey:()=>Di,base64ToArrayBuffer:()=>zs,base64UrlDecode:()=>$s,base64UrlToArrayBuffer:()=>N,canControlStealthAddress:()=>Aa,checkStealthAddress:()=>pr,clearCache:()=>Ia,computeStealthPrivateKey:()=>mr,createSiweMessage:()=>hh,createWalletFromMnemonic:()=>Ys,createWeb3Passkey:()=>gh,default:()=>Lg,deriveAddressFromP256PublicKey:()=>js,deriveIndexFromOriginModeAndTag:()=>gn,deriveMLKemKeypair:()=>Mr,deriveStealthKeys:()=>Ct,deriveWalletFromMnemonic:()=>hr,detectWalletProvider:()=>In,encodeEIP7702AuthorizationMessage:()=>yr,extractRS:()=>Ii,generateBIP39Wallet:()=>dr,generateSiweNonce:()=>dh,generateStealthAddress:()=>wn,getAllChains:()=>Ca,getAllTopics:()=>Ui,getChainById:()=>Pa,getCurrentBuildHash:()=>ua,getCurrentOrigin:()=>ge,getDefaultProvider:()=>Pn,getEndpoints:()=>vn,getExplainer:()=>Mi,getOriginSpecificAddress:()=>me,getPackageVersion:()=>la,getW3pkBuildHash:()=>ca,hashEIP7702AuthorizationMessage:()=>wr,inspect:()=>da,inspectNow:()=>mh,isStrongPassword:()=>pa,mlkemDecrypt:()=>cs,mlkemDecryptWithKey:()=>zi,mlkemEncrypt:()=>as,mlkemEncryptWithKey:()=>Oi,normalizeOrigin:()=>fr,parseSiweMessage:()=>Ls,promptPasskeySelection:()=>Ri,requestExternalWalletAuthorization:()=>Cn,safeAtob:()=>Ze,safeBtoa:()=>Ws,searchExplainers:()=>Ni,supportsEIP7702Authorization:()=>Bn,validateEthereumAddress:()=>_s,validateMnemonic:()=>Os,validateSiweMessage:()=>fh,validateUsername:()=>Ks,verifyBuildHash:()=>uh,verifyEIP7702Authorization:()=>kn,verifySiweSignature:()=>ph});module.exports=Ph(_g);j();function _s(r){return/^0x[a-fA-F0-9]{40}$/.test(r)}function Ks(r){return r.length<3||r.length>50?!1:/^[a-zA-Z0-9]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$/.test(r)}function Os(r){let e=r.trim().split(/\s+/);return e.length===12||e.length===24}function cn(r){if(!_s(r))throw new Error("Invalid Ethereum address format")}function ln(r){if(!Ks(r))throw new Error("Username must be 3-50 characters long and contain only letters, numbers, underscores, and hyphens. Must start and end with a letter or number.")}function fa(r){if(!Os(r))throw new Error("Invalid mnemonic: must be 12 or 24 words")}function pa(r){if(r.length<12)return!1;let e=/[A-Z]/.test(r),t=/[a-z]/.test(r),n=/[0-9]/.test(r),s=/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(r);return!(!e||!t||!n||!s||["password","12345678","qwerty","abc123","password123","admin","letmein"].some(o=>r.toLowerCase().includes(o)))}Le();ve();H();async function Th(r){try{let e=new Uint8Array(r),t=Rh(e);if(t===-1)return null;let n=e.slice(t);if(!((n[32]&64)!==0))return null;let o=37;o+=16;let a=n[o]<<8|n[o+1];o+=2,o+=a;let c=n.slice(o),l=await Dh(c);return he(l)}catch(e){return console.error("Failed to extract public key:",e),null}}function Rh(r){let e=new Uint8Array([104,97,117,116,104,68,97,116,97]);for(let t=0;t<r.length-e.length;t++){let n=!0;for(let s=0;s<e.length;s++)if(r[t+s]!==e[s]){n=!1;break}if(n){let s=r[t+e.length],i=t+e.length+1;if(s>=88&&s<=91){let o=s-87;i+=o}return i}}return-1}async function Dh(r){let e=ga(r,-2),t=ga(r,-3);if(!e||!t)throw new Error("Failed to extract EC coordinates from COSE key");let n=new Uint8Array(65);n[0]=4,n.set(e,1),n.set(t,33);let s=new Uint8Array([48,89,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,7,3,66,0]),i=new Uint8Array(s.length+n.length);return i.set(s,0),i.set(n,s.length),i.buffer}function ga(r,e){let t=e<0?32+(-1-e):e;for(let n=0;n<r.length-33;n++)if(r[n]===t&&(r[n+1]===88&&r[n+2]===32||r[n+1]===88&&r[n+2]===32))return r.slice(n+3,n+35);return null}async function ya(r){try{let{username:e,ethereumAddress:t}=r;ln(e),cn(t);let n=new R;if(await n.userExists(e))throw new Error("Username already registered");let s=Ue(),o=new TextEncoder().encode(e),a=he(o),c=N(s),l=N(a),u={challenge:c,rp:{name:"w3pk",id:window.location.hostname},user:{id:l,name:e,displayName:e},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"required",residentKey:"required",requireResidentKey:!0},timeout:6e4,attestation:"none",extensions:{prf:{eval:{first:lr}}}},d=await navigator.credentials.create({publicKey:u});if(!d)throw new Error("Failed to create credential");let h=await Th(d.response.attestationObject);if(!h)throw new Error("Public key not returned from authenticator");await n.saveCredential({id:d.id,publicKey:h,username:e,ethereumAddress:t,createdAt:new Date().toISOString(),lastUsed:new Date().toISOString(),signCount:0});let p=d.response.attestationObject,g=d.getClientExtensionResults?.().prf?.results?.first;return{signature:p,prfOutput:g}}catch(e){throw new bt(e instanceof Error?e.message:"Registration failed",e)}}j();Le();ve();H();async function fn(){try{let r=new R,e=Ue(),t=[];try{let l=await r.getAllCredentials();l.length>0&&(t=l.map(u=>({id:u.id,type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]})))}catch{}let s={challenge:N(e),rpId:window.location.hostname,userVerification:"required",timeout:6e4,extensions:{prf:{eval:{first:lr}}}};t.length>0&&(s.allowCredentials=t.map(l=>({id:N(l.id),type:l.type,transports:l.transports})));let i;try{let l=await navigator.credentials.get({publicKey:s});if(!l)throw new Error("Authentication failed - no credential returned");i=l}catch(l){throw l?.name==="NotAllowedError"||l?.message?.toLowerCase().includes("no credentials available")||l?.message?.toLowerCase().includes("no access key")?(await r.getAllCredentials()).length>0?new O("Your passkey is not available on this device. You may need to restore your wallet from a backup, or login on the device where you registered."):new O("No passkey found. Please register first or restore from a backup."):l}let o=await r.getCredentialById(i.id);if(!o)throw new St(i.id);if(!await Fh(i,o,r))throw new Error("Signature verification failed");let c=i.getClientExtensionResults?.().prf?.results?.first;return{verified:!0,user:{username:o.username,ethereumAddress:o.ethereumAddress,credentialId:o.id},signature:i.response.signature,prfOutput:c}}catch(r){throw r instanceof K?r:new O(r instanceof Error?r.message:"Authentication failed",r)}}async function Fh(r,e,t){try{let n=r.response.authenticatorData,s=new DataView(n),o=new Uint8Array(n).slice(0,32),a=window.location.hostname,c=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(a)));if(!Mh(o,c))return console.error("RP ID hash mismatch - possible phishing attack"),!1;let l=s.getUint32(33,!1);if(l>0||e.signCount&&e.signCount>0){let A=e.signCount||0;if(l<=A)return console.error(`Authenticator cloning detected! Counter did not increase: stored=${A}, received=${l}`),!1}let u=N(e.publicKey),d=await crypto.subtle.importKey("spki",u,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),h=r.response.clientDataJSON,p=await crypto.subtle.digest("SHA-256",h),g=new Uint8Array(n.byteLength+p.byteLength);g.set(new Uint8Array(n),0),g.set(new Uint8Array(p),n.byteLength);let w=r.response.signature,b=Uh(new Uint8Array(w));return await crypto.subtle.verify({name:"ECDSA",hash:"SHA-256"},d,b,g)?(await t.updateSignatureCounter(e.id,l),!0):!1}catch(n){return console.error("Signature verification error:",n),!1}}function Mh(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function Uh(r){let e=2;e++;let t=r[e++];t>32&&(e++,t--);let n=r.slice(e,e+t);e+=t,e++;let s=r[e++];s>32&&(e++,s--);let i=r.slice(e,e+s),o=new Uint8Array(64);return o.set(n,32-n.length),o.set(i,64-i.length),o.buffer}j();var pn="w3pk_wallet_",mn=class{constructor(e){this.customStorage=e}get storage(){if(this.customStorage)return this.customStorage;if(typeof window<"u"&&window.localStorage)return window.localStorage;throw new C("localStorage is not available")}async init(){}async store(e){try{this.storage.setItem(pn+e.ethereumAddress,JSON.stringify(e))}catch(t){throw new C("Failed to store wallet data",t)}}async retrieve(e){try{let t=this.storage.getItem(pn+e);return t?JSON.parse(t):null}catch(t){throw new C("Failed to retrieve wallet data",t)}}async delete(e){try{this.storage.removeItem(pn+e)}catch(t){throw new C("Failed to delete wallet data",t)}}async clear(){try{for(let e of this.keys())this.storage.removeItem(e)}catch(e){throw new C("Failed to clear wallet data",e)}}keys(){let e=[];for(let t=0;t<this.storage.length;t++){let n=this.storage.key(t);n?.startsWith(pn)&&e.push(n)}return e}};Ie();Et();H();j();var q=require("ethers");j();function Ct(r){try{let e=q.ethers.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/0"),t=q.ethers.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/1"),n=t.signingKey.compressedPublicKey,s=e.signingKey.compressedPublicKey;return{stealthMetaAddress:n+s.slice(2),spendingPubKey:n,viewingPubKey:s,viewingKey:e.privateKey,spendingKey:t.privateKey}}catch(e){throw new M("Failed to derive stealth keys",e)}}function wn(r){try{let e="0x"+r.slice(2,68),t="0x"+r.slice(68),n=q.ethers.Wallet.createRandom(),s=n.signingKey.compressedPublicKey,i=Js(n.privateKey,t),o=q.ethers.keccak256(i),a="0x"+o.slice(2,4),c=Qs(o),l=va(e,xa(c));return{stealthAddress:ka(l),ephemeralPubKey:s,viewTag:a}}catch(e){throw new M("Failed to generate stealth address",e)}}function pr(r,e,t,n,s){try{let i=Js(r,t),o=q.ethers.keccak256(i);if(s&&("0x"+o.slice(2,4)).toLowerCase()!==s.toLowerCase())return{isForUser:!1};let a=Qs(o),c=va(e,xa(a)),l=ka(c);return l.toLowerCase()!==n.toLowerCase()?{isForUser:!1}:{isForUser:!0,stealthAddress:l}}catch{return{isForUser:!1}}}function mr(r,e,t){try{let n=Js(r,t),s=q.ethers.keccak256(n),i=Qs(s);return Lh(e,i)}catch(n){throw new M("Failed to compute stealth private key",n)}}function Aa(r,e,t,n,s,i){try{if(!pr(r,t,n,s,i).isForUser)return!1;let a=mr(r,e,n);return new q.ethers.Wallet(a).address.toLowerCase()===s.toLowerCase()}catch{return!1}}function Js(r,e){try{return new q.ethers.Wallet(r).signingKey.computeSharedSecret(e)}catch(t){throw new M("Failed to compute shared secret",t)}}function xa(r){try{return new q.ethers.Wallet(r).signingKey.compressedPublicKey}catch(e){throw new M("Failed to multiply generator by scalar",e)}}function va(r,e){try{let t=q.ethers.SigningKey.computePublicKey(r,!1),n=q.ethers.SigningKey.computePublicKey(e,!1),s=BigInt("0x"+t.slice(4,68)),i=BigInt("0x"+t.slice(68)),o=BigInt("0x"+n.slice(4,68)),a=BigInt("0x"+n.slice(68)),c=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F");if(s===o&&i===a){let g=3n*s*s%c,w=2n*i%c,b=g*Sa(w,c)%c,S=(b*b-2n*s)%c,A=(b*(s-S)-i)%c;return ba((S+c)%c,(A+c)%c)}let l=((a-i)%c+c)%c,u=((o-s)%c+c)%c,d=l*Sa(u,c)%c,h=(d*d-s-o)%c,p=(d*(s-h)-i)%c;return ba((h+c)%c,(p+c)%c)}catch(t){throw new M("Failed to add public keys",t)}}function Qs(r){try{let e=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),n=BigInt(r)%e;if(n===0n)throw new Error("Scalar reduced to zero (invalid)");return"0x"+n.toString(16).padStart(64,"0")}catch(e){throw new M("Failed to reduce scalar modulo curve order",e)}}function Lh(r,e){try{let t=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),n=BigInt(r),s=BigInt(e);return"0x"+((n+s)%t).toString(16).padStart(64,"0")}catch(t){throw new M("Failed to add private keys",t)}}function ba(r,e){return"0x"+(e%2n===0n?"02":"03")+r.toString(16).padStart(64,"0")}function Sa(r,e){r=(r%e+e)%e;let[t,n]=[r,e],[s,i]=[1n,0n];for(;n!==0n;){let o=t/n;[t,n]=[n,t-o*n],[s,i]=[i,s-o*i]}return(s%e+e)%e}function ka(r){try{let e=q.ethers.SigningKey.computePublicKey(r,!1),t=q.ethers.keccak256("0x"+e.slice(4));return q.ethers.getAddress("0x"+t.slice(-40))}catch(e){throw new M("Failed to derive address from public key",e)}}var Pt=class{constructor(e,t){this.getMnemonic=t}async generateStealthAddress(e){try{let t=await this.getMnemonic(e?.requireAuth),n=Ct(t),s=wn(n.stealthMetaAddress);return{stealthAddress:s.stealthAddress,ephemeralPublicKey:s.ephemeralPubKey,viewTag:s.viewTag}}catch(t){throw new K("Failed to generate stealth address","STEALTH_GENERATION_ERROR",t)}}async parseAnnouncement(e,t){try{let n=await this.getMnemonic(t?.requireAuth),s=Ct(n),i=pr(s.viewingKey,s.spendingPubKey,e.ephemeralPublicKey,e.stealthAddress,e.viewTag);if(!i.isForUser)return{isForUser:!1};let o=mr(s.viewingKey,s.spendingKey,e.ephemeralPublicKey);return{isForUser:!0,stealthAddress:i.stealthAddress,stealthPrivateKey:o}}catch(n){throw new K("Failed to parse announcement","ANNOUNCEMENT_PARSE_ERROR",n)}}async scanAnnouncements(e,t){let n=[];for(let s of e){let i=await this.parseAnnouncement(s,t);i.isForUser&&n.push(i)}return n}async getKeys(e){try{let t=await this.getMnemonic(e?.requireAuth);return Ct(t)}catch(t){throw new K("Failed to get stealth keys","STEALTH_KEYS_ERROR",t)}}async getStealthMetaAddress(e){try{return(await this.getKeys(e)).stealthMetaAddress}catch(t){throw new K("Failed to get stealth meta-address","STEALTH_META_ADDRESS_ERROR",t)}}get isAvailable(){return!0}};j();var bn="w3pk_session_",Sn=class{constructor(e){this.customStorage=e}get storage(){if(this.customStorage)return this.customStorage;if(typeof window<"u"&&window.localStorage)return window.localStorage;throw new C("localStorage is not available")}async init(){}async store(e){if(e.securityMode==="STRICT")throw new C("Cannot persist STRICT mode sessions");try{this.storage.setItem(bn+e.ethereumAddress,JSON.stringify(e))}catch(t){throw new C("Failed to store persistent session",t)}}async retrieve(e){let t;try{let n=this.storage.getItem(bn+e);t=n?JSON.parse(n):null}catch(n){throw new C("Failed to retrieve persistent session",n)}return t&&Date.now()>t.expiresAt?(await this.delete(e),null):t}async delete(e){try{this.storage.removeItem(bn+e)}catch(t){throw new C("Failed to delete persistent session",t)}}async clear(){try{for(let e of this.keys())this.storage.removeItem(e)}catch(e){throw new C("Failed to clear persistent sessions",e)}}async cleanupExpired(){try{let e=Date.now();for(let t of this.keys()){let n=this.storage.getItem(t),s=n?JSON.parse(n):null;(!s||e>s.expiresAt)&&this.storage.removeItem(t)}}catch(e){throw new C("Failed to cleanup expired sessions",e)}}keys(){let e=[];for(let t=0;t<this.storage.length;t++){let n=this.storage.key(t);n?.startsWith(bn)&&e.push(n)}return e}};H();var An=class{constructor(e=1,t){this.session=null;this.sessionDuration=e*60*60*1e3,this.persistentConfig={enabled:t?.enabled??!1,duration:t?.duration??168,requireReauth:t?.requireReauth??!0},this.persistentStorage=new Sn}async startSession(e,t,n,s,i){let o=new Date(Date.now()+this.sessionDuration).toISOString();if(this.session={mnemonic:e,expiresAt:o,credentialId:t},this.persistentConfig.enabled&&i!=="STRICT"&&n){if(!s){console.info("[w3pk] Authenticator did not provide a PRF output \u2014 persistent session not stored on this device (in-memory session only)");return}try{let a=await oe(e,s),c=Date.now()+this.persistentConfig.duration*60*60*1e3;await this.persistentStorage.store({encryptedMnemonic:a,sessionKey:this.persistentConfig.requireReauth?void 0:await qs(s),expiresAt:c,credentialId:t,ethereumAddress:n,securityMode:i||"STANDARD",createdAt:Date.now()})}catch(a){console.warn("[w3pk] Failed to persist session:",a)}}}getMnemonic(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),null):this.session.mnemonic:null}getCredentialId(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),null):this.session.credentialId:null}isActive(){return this.getMnemonic()!==null}getRemainingTime(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),0):Math.floor((new Date(this.session.expiresAt).getTime()-Date.now())/1e3):0}extendSession(){if(!this.session)throw new Error("No active session to extend");if(new Date>new Date(this.session.expiresAt))throw this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),new Error("Session expired, cannot extend");this.session.expiresAt=new Date(Date.now()+this.sessionDuration).toISOString()}async restoreFromPersistentStorage(e,t,n){if(!this.persistentConfig.enabled||!n)return null;try{let s=await this.persistentStorage.retrieve(e);if(!s)return null;if(s.credentialId!==t)return console.warn("[w3pk] Credential ID mismatch, clearing persistent session"),await this.persistentStorage.delete(e),null;let i=await te(s.encryptedMnemonic,n),o=new Date(Date.now()+this.sessionDuration).toISOString();return this.session={mnemonic:i,expiresAt:o,credentialId:t},i}catch(s){console.warn("[w3pk] Failed to restore persistent session:",s);try{await this.persistentStorage.delete(e)}catch{}return null}}async attemptSilentRestore(){if(!this.persistentConfig.enabled||this.persistentConfig.requireReauth)return null;try{let{CredentialStorage:e}=await Promise.resolve().then(()=>(Le(),hn)),n=await new e().getAllCredentials();if(n.length===0)return null;for(let s of n){let i=await this.persistentStorage.retrieve(s.ethereumAddress);if(!i)continue;if(i.credentialId!==s.id){console.warn("[w3pk] Credential ID mismatch, skipping this session");continue}if(!i.sessionKey)continue;let o=await te(i.encryptedMnemonic,await Vs(i.sessionKey)),a=new Date(Date.now()+this.sessionDuration).toISOString();return this.session={mnemonic:o,expiresAt:a,credentialId:s.id},{mnemonic:o,ethereumAddress:s.ethereumAddress,credentialId:s.id}}return null}catch(e){return console.warn("[w3pk] Failed to attempt silent restore:",e),null}}async clearSession(){this.session&&(this.session.mnemonic="0".repeat(this.session.mnemonic.length)),this.session=null,this.persistentConfig.enabled&&await this.persistentStorage.clear()}get storesSessionKey(){return this.persistentConfig.enabled&&!this.persistentConfig.requireReauth}setSessionDuration(e){this.sessionDuration=e*60*60*1e3}setPersistentSessionDuration(e){this.persistentConfig.duration=e}};Le();var xn={debug:!1,sessionDuration:1,persistentSession:{enabled:!1,duration:168,requireReauth:!0},onError:r=>{xn.debug&&console.error("[w3pk]",r)}};j();var Ea="https://chainid.network/chains.json";var gr=null,_h=[/\$\{[\w_]+\}/i,/\{[\w_]+\}/i,/<[\w_]+>/i,/YOUR[-_]?API[-_]?KEY/i,/INSERT[-_]?API[-_]?KEY/i,/API[-_]?KEY[-_]?HERE/i];function Kh(r){return _h.some(e=>e.test(r))}async function Oh(r=Ea){let e=await fetch(r);if(!e.ok)throw new Error(`Failed to fetch chains data: ${e.status} ${e.statusText}`);return await e.json()}async function Xs(r){let e=r?.chainsJsonUrl??Ea,t=r?.cacheDuration??36e5,n=Date.now();if(gr&&n-gr.timestamp<t)return gr.data;let s=await Oh(e);return gr={data:s,timestamp:n},s}async function vn(r,e){let n=(await Xs(e)).find(s=>s.chainId===r);return n?n.rpc.filter(s=>!Kh(s)&&!s.startsWith("wss://")&&!s.startsWith("ws://")):[]}async function Ca(r){return Xs(r)}async function Pa(r,e){return(await Xs(e)).find(n=>n.chainId===r)}function Ia(){gr=null}ei();En();var zh=new Set([1,10,8453,42161,57073,100,42220,137,42,15,40,41,44,46,47,50,51,56,61,71,82,83,95,97,112,123,130,146,151,153,171,180,183,185,195,215,228,247,248,252,261,267,291,293,311,332,336,395,401,416,466,480,488,510,545,634,647,648,747,831,919,938,945,957,964,970,980,995,997,1001,1003,1024,1030,1114,1125,1135,1149,1188,1284,1285,1287,1300,1301,1315,1337,1338,1339,1424,1514,1687,1727,1729,1740,1750,1829,1868,1946,1961,1962,1969,1989,1995,2017,2020,2031,2043,2109,2241,2340,2345,2440,2522,2559,2649,3068,3109,3338,3502,3799,3888,3889,4e3,4048,4078,4162,4201,4202,4460,4488,4661,4689,4690,4888,5e3,5003,5124,5234,5330,5424,5522,6283,6342,6398,6678,6806,6934,6942,6969,7117,7171,7200,7208,7368,7518,7668,7672,7744,7771,7869,7897,8008,8118,8217,8408,8700,8726,8727,8844,8880,8881,8882,8889,9372,9496,9700,9745,9746,9899,9990,9996,10011,10085,10143,10200,11221,11501,11504,11891,13370,14853,16602,16661,17e3,18880,18881,19991,21e3,21816,21912,25327,32323,33401,34443,41923,42170,43111,44787,47805,48898,48900,49049,49088,5e4,50312,53302,53456,53457,55244,56288,59141,60808,60850,62320,62850,64002,71402,72080,73114,73115,75338,78281,80002,80008,80069,80094,80451,80931,84532,88899,91342,92278,94524,96970,97476,97477,98985,100021,100501,101010,102030,102031,102032,112358,120893,121212,121213,121214,121215,129399,161803,175188,192940,193939,198989,212013,222222,240241,325e3,355110,355113,421614,555777,560048,656476,713715,743111,747474,763373,763375,777777,806582,808813,810180,839999,888991,2019775,2222222,4278608,5734951,6666689,6985385,7080969,7777777,9999999,11142220,11155111,11155420,11155931,16969696,19850818,20180427,20250825,28122024,34949059,37084624,52164803,61022448,79479957,96969696,420420421,420420422,888888888,974399131,999999999,1020352220,1273227453,1313161560,1350216234,1380996178,1417429182,1444673419,1482601649,1564830818,2046399126,11297108099,11297108109,88153591557,123420000220,123420001114]);async function Wh(r,e=1e4){try{let t=new AbortController,n=setTimeout(()=>t.abort(),e),s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},signal:t.signal,body:JSON.stringify({jsonrpc:"2.0",method:"eth_estimateGas",params:[{from:"0xdeadbeef00000000000000000000000000000000",to:"0xdeadbeef00000000000000000000000000000000",data:"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",value:"0x0"},"latest",{"0xdeadbeef00000000000000000000000000000000":{code:"0xef01000000000000000000000000000000000000000001"}}],id:1})});if(clearTimeout(n),!s.ok)return!1;let i=await s.json();if(i.error){let o=(i.error.message||"").toLowerCase();return!["unsupported","not supported","unknown","invalid","unrecognized","does not support","not implemented"].some(c=>o.includes(c))}return i.result!==void 0}catch{return!1}}async function Ta(r,e,t){if(zh.has(r))return!0;let n=t?.maxEndpoints||3,s=t?.timeout||1e4;try{let i=await e(r);if(i.length===0)return!1;let o=i.slice(0,n);for(let a of o)if(await Wh(a,s))return!0;return!1}catch{return!1}}function jc(r){return typeof r=="string"&&/^0x[0-9a-fA-F]*$/.test(r)}function Jc(r){let e=r.startsWith("0x")?r.slice(2):r,t=new Uint8Array(e.match(/.{1,2}/g).map(n=>parseInt(n,16)));return new TextDecoder().decode(t)}var Nt=class{constructor(e={}){this.currentUser=null;this.currentWallet=null;this.persisted=null;this.config={...xn,...e},this.walletStorage=new mn;let t={...xn.persistentSession,...e.persistentSession};this.sessionManager=new An(e.sessionDuration||1,t),e.stealthAddresses!==void 0&&(this.stealth=new Pt(e.stealthAddresses,n=>this.getMnemonicFromSession(n)))}async loadZKModule(){if(this.zkModule)return this.zkModule;try{let e=new Function("path","return import(path)"),{ZKProofModule:t}=await e("w3pk/zk"),n=this.config.zkProofs||{};return this.zkModule=new t(n),this.zkModule}catch{throw new Error("ZK module not available. Install dependencies: npm install snarkjs circomlibjs")}}async getMnemonicFromSession(e=!1,t="STANDARD"){let n=t;if(!e){let h=this.sessionManager.getMnemonic();if(h)return h}if(!this.currentUser)throw new y("Must be authenticated. Call login() first.");let s=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!s)throw new y("No wallet found. Generate a wallet first.");let i=await fn();if(!i.user)throw new y("Authentication failed");let c=(await new R().getCredentialById(s.credentialId))?.publicKey,l=await fe(s.credentialId,c),u=await te(s.encryptedMnemonic,l),d=i.prfOutput?await xt(i.prfOutput,this.sessionManager.storesSessionKey):void 0;return await this.sessionManager.startSession(u,s.credentialId,this.currentUser.ethereumAddress,d,n),u}async register(e){try{this.currentWallet?.address||await this.generateWallet();let t=this.currentWallet.address,n=this.currentWallet.mnemonic,s=await ya({username:e.username,ethereumAddress:t}),o=await new R().getCredentialByAddress(t);if(this.currentUser={username:e.username,ethereumAddress:t,credentialId:o?.id||""},!o)throw new y("Credential not found after registration");let a=o.id,c=o.publicKey,l=await fe(a,c),u=await oe(n,l);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:u,credentialId:a,createdAt:new Date().toISOString()});let d=s.prfOutput?await xt(s.prfOutput,this.sessionManager.storesSessionKey):void 0;await this.sessionManager.startSession(n,a,t,d,"STANDARD"),this.currentWallet={address:t,mnemonic:n};let{BackupManager:h}=await Promise.resolve().then(()=>(Re(),Te)),p=await new h().hasBackup(t);return this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser),{address:t,username:e.username,hasBackup:p}}catch(t){throw this.config.onError?.(t),t}}async login(){try{let e=await this.sessionManager.attemptSilentRestore();if(e){let d=await new R().getCredentialById(e.credentialId);return await this.walletStorage.retrieve(e.ethereumAddress)?(this.currentUser={username:d?.username||e.ethereumAddress,ethereumAddress:e.ethereumAddress,credentialId:e.credentialId},this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser):(await this.sessionManager.clearSession().catch(p=>console.warn("[w3pk] Failed to clear stale session:",p)),this.login())}let t=await fn();if(!t.verified||!t.user)throw new O("Login failed");let n=await this.walletStorage.retrieve(t.user.ethereumAddress);if(!n)throw new At(t.user.credentialId,t.user.ethereumAddress);this.currentUser={username:t.user.username,ethereumAddress:t.user.ethereumAddress,credentialId:t.user.credentialId};let o=(await new R().getCredentialById(n.credentialId))?.publicKey,a=t.prfOutput?await xt(t.prfOutput,this.sessionManager.storesSessionKey):void 0,c=await this.sessionManager.restoreFromPersistentStorage(this.currentUser.ethereumAddress,n.credentialId,a),l;if(c)l=c;else{let u=await fe(n.credentialId,o);l=await te(n.encryptedMnemonic,u),await this.sessionManager.startSession(l,n.credentialId,this.currentUser.ethereumAddress,a,"STANDARD")}return this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser}catch(e){throw this.config.onError?.(e),e}}async logout(){this.currentUser=null,this.currentWallet=null;try{await this.sessionManager.clearSession()}finally{this.config.onAuthStateChanged?.(!1,void 0)}}get isAuthenticated(){return this.currentUser!==null}get user(){return this.currentUser}get storagePersisted(){return this.persisted}async requestPersistentStorage(){if(!(typeof navigator>"u"||!navigator.storage?.persist))try{this.persisted=await navigator.storage.persist()}catch{this.persisted=!1}}async listExistingCredentials(){try{return(await new R().getAllCredentials()).map(n=>({username:n.username,ethereumAddress:n.ethereumAddress,createdAt:n.createdAt,lastUsed:n.lastUsed}))}catch{return[]}}async hasExistingCredential(){return(await this.listExistingCredentials()).length>0}async getExistingCredentialCount(){return(await this.listExistingCredentials()).length}async generateWallet(){try{let e=dr();return this.currentWallet={address:e.address,mnemonic:e.mnemonic},{address:e.address,mnemonic:e.mnemonic}}catch(e){throw this.config.onError?.(e),new y("Failed to generate wallet",e)}}async deriveWallet(e,t,n){try{if(!this.currentUser)throw new y("Must be authenticated to derive wallet");let s=e||pe,i=t||J,o=n?.origin||ge();if(s==="PRIMARY"){let{CredentialStorage:u}=await Promise.resolve().then(()=>(Le(),hn)),{deriveAddressFromP256PublicKey:d}=await Promise.resolve().then(()=>(Et(),yn)),p=await new u().getCredentialById(this.currentUser.credentialId);if(!p||!p.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");return{address:await d(p.publicKey),origin:o,mode:s,tag:i,publicKey:p.publicKey}}let a=s==="STRICT"?!0:n?.requireAuth||!1,c=await this.getMnemonicFromSession(a,s),l=await me(c,o,s,i);return{address:l.address,privateKey:l.privateKey,index:l.index,origin:l.origin,mode:l.mode,tag:l.tag}}catch(s){throw this.config.onError?.(s),new y("Failed to derive wallet",s)}}async getAddress(e,t,n){try{if(!this.currentUser)throw new y("Must be authenticated to get address");let s=e||pe,i=t||J,o=n?.origin||ge();if(s==="PRIMARY"){let{deriveAddressFromP256PublicKey:u}=await Promise.resolve().then(()=>(Et(),yn)),h=await new R().getCredentialById(this.currentUser.credentialId);if(!h||!h.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");return await u(h.publicKey)}let a=s==="STRICT",c=await this.getMnemonicFromSession(a,s);return(await me(c,o,s,i)).address}catch(s){throw this.config.onError?.(s),new y("Failed to get address",s)}}async importMnemonic(e){try{if(!this.currentUser)throw new y("Must be authenticated to import mnemonic");if(!e||e.trim().split(/\s+/).length<12)throw new y("Invalid mnemonic: must be at least 12 words");let t=await fn();if(!t.user)throw new y("Authentication failed");let n=t.user.credentialId,o=(await new R().getCredentialById(n))?.publicKey,a=await fe(n,o),c=await oe(e.trim(),a);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:c,credentialId:n,createdAt:new Date().toISOString()}),this.currentWallet={address:this.currentUser.ethereumAddress,mnemonic:e.trim()};let l=t.prfOutput?await xt(t.prfOutput,this.sessionManager.storesSessionKey):void 0;await this.sessionManager.startSession(e.trim(),n,this.currentUser.ethereumAddress,l,"STANDARD")}catch(t){throw this.config.onError?.(t),new y("Failed to import mnemonic",t)}}async signMessage(e,t){try{let n=t?.mode||pe,s=t?.signingMethod||"EIP191";if(n==="PRIMARY"&&s==="SIWE")throw new y("SIWE signing is not supported in PRIMARY mode. Use STANDARD, STRICT or YOLO mode.");if(!this.currentUser)throw new y("Must be authenticated to sign message");let i=t?.tag||J,o=t?.origin||ge(),a=n==="STRICT"?!0:t?.requireAuth||!1,c=await this.getMnemonicFromSession(a,n),l=await me(c,o,n,i),{Wallet:u}=await import("ethers"),d;if(l.privateKey)d=new u(l.privateKey);else{let{deriveWalletFromMnemonic:p}=await Promise.resolve().then(()=>(Ie(),kt)),{privateKey:g}=p(c,l.index);d=new u(g)}let h;switch(s){case"EIP191":case"SIWE":h=await d.signMessage(e);break;case"EIP712":if(!t?.eip712Domain||!t?.eip712Types||!t?.eip712PrimaryType)throw new y("EIP712 signing requires eip712Domain, eip712Types, and eip712PrimaryType in options");let p;try{p=typeof e=="string"?JSON.parse(e):e}catch{throw new y("EIP712 message must be valid JSON or an object")}h=await d.signTypedData(t.eip712Domain,t.eip712Types,p);break;case"rawHash":let{SigningKey:g}=await import("ethers"),w=e;if(w.startsWith("0x")&&(w=w.slice(2)),w.length!==64)throw new y("rawHash signing method requires a 32-byte hash (64 hex characters)");h=new g(d.privateKey).sign("0x"+w).serialized;break;default:throw new y(`Unsupported signing method: ${s}`)}return{signature:h,address:l.address,mode:l.mode,tag:l.tag,origin:l.origin}}catch(n){throw this.config.onError?.(n),new y("Failed to sign message",n)}}async signMessageWithPasskey(e){try{if(!this.currentUser)throw new y("Must be authenticated to sign message");let{extractRS:t}=await Promise.resolve().then(()=>(Bi(),Nc)),{base64UrlDecode:n}=await Promise.resolve().then(()=>(ve(),Hs)),s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e)),i="0x"+Buffer.from(s).toString("hex"),o=new Uint8Array(Buffer.from(i.slice(2),"hex")),a=this.currentUser.credentialId;if(!a)throw new y("Credential ID not found in user object");let c={challenge:o,rpId:window.location.hostname,allowCredentials:[{id:n(a),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}],userVerification:"required",timeout:6e4},l=await navigator.credentials.get({publicKey:c});if(!l||!l.response)throw new y("WebAuthn signature failed");let u=l.response,d=new Uint8Array(u.authenticatorData),h=new Uint8Array(u.clientDataJSON),p=await crypto.subtle.digest("SHA-256",h),g=new Uint8Array(d.length+p.byteLength);g.set(d,0),g.set(new Uint8Array(p),d.length);let w=await crypto.subtle.digest("SHA-256",g.buffer),b="0x"+Buffer.from(w).toString("hex"),S=new Uint8Array(u.signature),{r:A,s:v}=t(S),{CredentialStorage:I}=await Promise.resolve().then(()=>(Le(),hn)),F=await new I().getCredentialById(a);if(!F||!F.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");let{base64UrlToArrayBuffer:T}=await Promise.resolve().then(()=>(ve(),Hs)),z=T(F.publicKey),Pe=await crypto.subtle.importKey("spki",z,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),wt=await crypto.subtle.exportKey("jwk",Pe);if(!wt.x||!wt.y)throw new y("Invalid P-256 public key: missing x or y coordinates");let yh="0x"+Buffer.from(T(wt.x)).toString("hex"),wh="0x"+Buffer.from(T(wt.y)).toString("hex"),{deriveAddressFromP256PublicKey:bh}=await Promise.resolve().then(()=>(Et(),yn)),Sh=await bh(F.publicKey);return{signature:{r:A,s:v},messageHash:i,signedHash:b,address:Sh,publicKey:{qx:yh,qy:wh}}}catch(t){throw this.config.onError?.(t),new y("Failed to sign message with passkey",t)}}async sendTransaction(e,t){try{if(!this.currentUser)throw new y("Must be authenticated to send transaction");let n=t?.mode||pe,s=t?.tag||J,i=t?.origin||ge();if(n==="PRIMARY")throw t?.rpcUrl?new y("PRIMARY mode sendTransaction is not yet supported. Use signMessageWithPasskey() to obtain a P-256 signature and submit via a bundler manually."):new y("PRIMARY mode requires options.rpcUrl pointing to a bundler or sponsoring relayer. The P-256 address cannot pay gas directly without a deployed P-256-verifier contract via EIP-7702.");let o=n==="STRICT"?!0:t?.requireAuth||!1,a=await this.getMnemonicFromSession(o,n),c=await me(a,i,n,s),{Wallet:l,JsonRpcProvider:u}=await import("ethers"),d;if(c.privateKey)d=new l(c.privateKey);else{let{deriveWalletFromMnemonic:b}=await Promise.resolve().then(()=>(Ie(),kt)),{privateKey:S}=b(a,c.index);d=new l(S)}let h=t?.rpcUrl??(await this.getEndpoints(e.chainId))[0];if(!h)throw new y(`No RPC endpoint found for chainId ${e.chainId}. Pass options.rpcUrl.`);let p=new u(h);return{hash:(await d.connect(p).sendTransaction({to:e.to,value:e.value,data:e.data??"0x",chainId:e.chainId,gasLimit:e.gasLimit,maxFeePerGas:e.maxFeePerGas,maxPriorityFeePerGas:e.maxPriorityFeePerGas,nonce:e.nonce})).hash,from:c.address,chainId:e.chainId,mode:c.mode,tag:c.tag,origin:c.origin}}catch(n){throw this.config.onError?.(n),new y("Failed to send transaction",n)}}async signAuthorization(e,t){try{if(!this.currentUser)throw new y("Must be authenticated to sign authorization");let{Wallet:n,Signature:s}=await import("ethers"),{hashEIP7702AuthorizationMessage:i,verifyEIP7702Authorization:o}=await Promise.resolve().then(()=>(En(),Zs)),a;if(e.privateKey)a=new n(e.privateKey);else{let w=await this.getMnemonicFromSession(t?.requireAuth);a=n.fromPhrase(w)}let c=BigInt(e.chainId||1),l=e.nonce||0n,u=i(c,e.contractAddress,l),d=a.signingKey.sign(u),h=s.from(d),p={chainId:c,address:e.contractAddress.toLowerCase(),nonce:l,yParity:h.yParity,r:h.r,s:h.s};if(!o(c,e.contractAddress,l,p,a.address))throw new y("Signature verification failed - this should not happen");return p}catch(n){throw this.config.onError?.(n),new y("Failed to sign authorization",n)}}async getEndpoints(e){return vn(e)}async supportsEIP7702(e,t){return Ta(e,this.getEndpoints.bind(this),t)}getEIP1193Provider(e){let t=e?.chainId??1,n=this,s={},i=(a,...c)=>{(s[a]??[]).forEach(l=>l(...c))};return{async request({method:a,params:c}){switch(a){case"eth_accounts":case"eth_requestAccounts":return[await n.getAddress(e?.mode??"STANDARD",e?.tag??"MAIN")];case"eth_chainId":return"0x"+t.toString(16);case"eth_sendTransaction":{let l=(c??[])[0]??{};if(!l.chainId&&!t)throw new y("eth_sendTransaction: chainId is required");let u=l.chainId?parseInt(l.chainId,16):t;return(await n.sendTransaction({to:l.to,value:l.value!==void 0?BigInt(l.value):void 0,data:l.data??"0x",chainId:u,gasLimit:l.gas!==void 0?BigInt(l.gas):void 0,maxFeePerGas:l.maxFeePerGas!==void 0?BigInt(l.maxFeePerGas):void 0,maxPriorityFeePerGas:l.maxPriorityFeePerGas!==void 0?BigInt(l.maxPriorityFeePerGas):void 0,nonce:l.nonce!==void 0?parseInt(l.nonce,16):void 0},{mode:e?.mode,tag:e?.tag,rpcUrl:e?.rpcUrl})).hash}case"personal_sign":{let[l]=c??[],u=jc(l)?Jc(l):l;return(await n.signMessage(u,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_sign":{let[,l]=c??[],u=jc(l)?Jc(l):l;return(await n.signMessage(u,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_signTypedData_v4":{let[,l]=c??[],u=typeof l=="string"?JSON.parse(l):l,{domain:d,types:h,message:p,primaryType:g}=u,w={...h};return delete w.EIP712Domain,(await n.signMessage(JSON.stringify(p),{mode:e?.mode,tag:e?.tag,signingMethod:"EIP712",eip712Domain:d,eip712Types:w,eip712PrimaryType:g})).signature}case"wallet_switchEthereumChain":{let l=parseInt((c??[])[0]?.chainId??"0x1",16);return t=l,i("chainChanged","0x"+l.toString(16)),null}default:throw new y(`w3pk EIP-1193: unsupported method "${a}"`)}},on(a,c){s[a]||(s[a]=[]),s[a].push(c)},removeListener(a,c){s[a]&&(s[a]=s[a].filter(l=>l!==c))}}}async requestExternalWalletDelegation(e){if(!this.currentUser)throw new y("Must be authenticated to get w3pk delegation address. Call login() or register() first.");let{requestExternalWalletAuthorization:t,getDefaultProvider:n}=await Promise.resolve().then(()=>(ei(),Ba)),s=e?.provider||n();if(!s)throw new y("No external wallet provider found. Please install MetaMask, Rabby, or similar wallet.");let i=this.currentUser.ethereumAddress;return t(s,{delegateToAddress:i,chainId:e?.chainId,nonce:e?.nonce,accountIndex:e?.accountIndex})}get zk(){return new Proxy({},{get:(e,t)=>async(...n)=>(await this.loadZKModule())[t](...n)})}async getBackupStatus(){if(!this.currentUser)throw new y("Must be authenticated to check backup status");let{BackupManager:e}=await Promise.resolve().then(()=>(Re(),Te));return new e().getBackupStatus(this.currentUser.ethereumAddress)}async confirmRecoveryPhraseBackup(){if(!this.currentUser)throw new y("Must be authenticated to confirm a backup");let{BackupManager:e}=await Promise.resolve().then(()=>(Re(),Te)),{deriveAddressChecksum:t}=await Promise.resolve().then(()=>(_e(),ri)),{ethereumAddress:n}=this.currentUser;await new e().confirmRecoveryPhraseBackup(n,await t(n))}async createBackupFile(e="password",t){if(!this.currentUser)throw new y("Must be authenticated to create backup");let n=await this.getMnemonicFromSession(!0),{BackupFileManager:s}=await Promise.resolve().then(()=>(ce(),ye)),{BackupStorage:i}=await Promise.resolve().then(()=>(Tn(),Da)),o=new s,a=new i,c,l;if(e==="password"){if(!t)throw new y("Password required for password-based backup");l=(await o.createPasswordBackup(n,this.currentUser.ethereumAddress,t)).backupFile,c=o.createDownloadableBackup(l)}else if(e==="passkey"){let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new y("No wallet data found");let h=await new R().getCredentialById(u.credentialId);if(!h)throw new y("Credential not found");l=(await o.createPasskeyBackup(n,this.currentUser.ethereumAddress,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(l)}else if(e==="hybrid"){if(!t)throw new y("Password required for hybrid backup");let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new y("No wallet data found");let h=await new R().getCredentialById(u.credentialId);if(!h)throw new y("Credential not found");l=(await o.createHybridBackup(n,this.currentUser.ethereumAddress,t,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(l)}else throw new y(`Unknown encryption type: ${e}`);return await a.storeBackupMetadata({id:crypto.randomUUID(),ethereumAddress:this.currentUser.ethereumAddress,method:"file",createdAt:new Date().toISOString(),addressChecksum:l.addressChecksum}),c}async setupSocialRecovery(e,t,n){if(!this.currentUser)throw new y("Must be authenticated to set up social recovery");let s=await this.getMnemonicFromSession(!0),{BackupFileManager:i}=await Promise.resolve().then(()=>(ce(),ye)),o=new i,a;if(n)a=(await o.createPasswordBackup(s,this.currentUser.ethereumAddress,n)).backupFile;else{let d=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!d)throw new y("No wallet data found");let p=await new R().getCredentialById(d.credentialId);if(!p)throw new y("Credential not found");a=(await o.createPasskeyBackup(s,this.currentUser.ethereumAddress,p.id,p.publicKey)).backupFile}let{SocialRecovery:c}=await Promise.resolve().then(()=>(Zn(),Xn));return{guardianShares:(await new c().splitAmongGuardians(a,e,t)).guardianShares,setupComplete:!0}}async generateGuardianInvite(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(Zn(),Xn)),s=new n,i=await s.createGuardianInvitation(e,t),o=s.createShareDownload(e);return{qrCodeDataURL:i.qrCodeDataURL,shareDocument:i.shareDocument,downloadBlob:o.blob,filename:o.filename}}async recoverFromGuardians(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(Zn(),Xn)),{BackupFileManager:s}=await Promise.resolve().then(()=>(ce(),ye)),{BackupManager:i}=await Promise.resolve().then(()=>(Re(),Te)),o=new n,a=new s,c=new i,l=e.map(h=>typeof h=="string"?o.parseGuardianShare(h):h),u=await o.recoverFromShares(l),d;if(u.encryptionMethod==="password"){if(!t)throw new y("Password required to decrypt password-protected backup");d=await a.restoreWithPassword(u,t)}else throw new y("Passkey-encrypted backups not supported for guardian recovery. Use password-protected backups.");return c.markBackupVerified(d.ethereumAddress),d}async restoreFromBackupFile(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(ce(),ye)),{BackupManager:s}=await Promise.resolve().then(()=>(Re(),Te)),i=new n,o=new s,a=await i.parseBackupFile(e),c,l;if(a.encryptionMethod==="password"){if(!t)throw new y("Password required to restore password-encrypted backup");let u=await i.restoreWithPassword(a,t);c=u.mnemonic,l=u.ethereumAddress}else if(a.encryptionMethod==="passkey"){if(!this.currentUser)throw new y("Must be logged in with passkey to restore passkey-encrypted backup. Call login() first.");let h=(await new R().getAllCredentials()).find(g=>g.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new y("Credential not found for current user");let p=await i.restoreWithExistingPasskey(a,h.id,h.publicKey);c=p.mnemonic,l=p.ethereumAddress}else if(a.encryptionMethod==="hybrid"){if(!t)throw new y("Password required to restore hybrid backup");if(!this.currentUser)throw new y("Must be logged in with passkey to restore hybrid backup. Call login() first.");let h=(await new R().getAllCredentials()).find(g=>g.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new y("Credential not found for current user");let p=await i.restoreWithHybrid(a,t,h.id,h.publicKey);c=p.mnemonic,l=p.ethereumAddress}else throw new y(`Unknown encryption method: ${a.encryptionMethod}`);if(o.markBackupVerified(l),this.currentWallet={address:l,mnemonic:c},this.currentUser){let u=new R,h=(await u.getAllCredentials()).find(p=>p.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(h){let p=this.currentUser.ethereumAddress;p.toLowerCase()!==l.toLowerCase()&&await this.walletStorage.delete(p),await u.updateCredentialAddress(h.id,l);let g=await(await Promise.resolve().then(()=>(H(),Ne))).deriveEncryptionKeyFromWebAuthn(h.id,h.publicKey),w=await(await Promise.resolve().then(()=>(H(),Ne))).encryptData(c,g);await this.walletStorage.store({ethereumAddress:l,encryptedMnemonic:w,credentialId:h.id,createdAt:new Date().toISOString()}),this.currentUser={...this.currentUser,ethereumAddress:l},await this.sessionManager.startSession(c,h.id,l,void 0,"STANDARD"),this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser)}}return{mnemonic:c,ethereumAddress:l}}async syncWalletWithPasskey(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(ce(),ye)),{BackupManager:s}=await Promise.resolve().then(()=>(Re(),Te)),{promptPasskeySelection:i}=await Promise.resolve().then(()=>(Fi(),Lc)),o=new n,a=new s,c=await i(),l=await o.parseBackupFile(e),u,d;if(l.encryptionMethod==="password"){if(!t)throw new y("Password required to restore password-encrypted backup");let g=await o.restoreWithPassword(l,t);u=g.mnemonic,d=g.ethereumAddress}else if(l.encryptionMethod==="passkey"){if(!c.publicKey)throw new y("Passkey public key not found. The passkey may not be registered on this device yet.");let g=await o.restoreWithExistingPasskey(l,c.credentialId,c.publicKey);u=g.mnemonic,d=g.ethereumAddress}else if(l.encryptionMethod==="hybrid"){if(!t)throw new y("Password required to restore hybrid backup");if(!c.publicKey)throw new y("Passkey public key not found. The passkey may not be registered on this device yet.");let g=await o.restoreWithHybrid(l,t,c.credentialId,c.publicKey);u=g.mnemonic,d=g.ethereumAddress}else throw new y(`Unknown encryption method: ${l.encryptionMethod}`);a.markBackupVerified(d);let p=await new R().getCredentialById(c.credentialId);if(p){let{deriveEncryptionKeyFromWebAuthn:g,encryptData:w}=await Promise.resolve().then(()=>(H(),Ne)),b=await g(p.id,p.publicKey),S=await w(u,b);await this.walletStorage.store({ethereumAddress:d,encryptedMnemonic:S,credentialId:p.id,createdAt:new Date().toISOString()}),this.currentUser={username:p.username,ethereumAddress:d,credentialId:p.id},await this.sessionManager.startSession(u,p.id,d,void 0,"STANDARD"),this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser)}return{mnemonic:u,ethereumAddress:d}}async registerWithBackupFile(e,t,n){let{BackupFileManager:s}=await Promise.resolve().then(()=>(ce(),ye)),{BackupManager:i}=await Promise.resolve().then(()=>(Re(),Te)),o=new s,a=new i,c=await o.parseBackupFile(e);if(c.encryptionMethod!=="password")throw new y("Can only register with password-encrypted backups. Use restoreFromBackupFile() for passkey-encrypted backups.");let{mnemonic:l,ethereumAddress:u}=await o.restoreWithPassword(c,t),{Wallet:d}=await import("ethers");if(d.fromPhrase(l).address.toLowerCase()!==u.toLowerCase())throw new y("Backup verification failed: address mismatch");return a.markBackupVerified(u),this.currentWallet={address:u,mnemonic:l},this.register({username:n})}async getSyncStatus(){let{DeviceSyncManager:e}=await Promise.resolve().then(()=>(Dr(),es));return new e().getSyncInfo()}async exportForSync(){if(!this.currentUser)throw new y("Must be authenticated to export for sync");let e=await this.getMnemonicFromSession(!0),t=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!t)throw new y("No wallet data found");let s=await new R().getCredentialById(t.credentialId);if(!s)throw new y("Credential not found");let{DeviceSyncManager:i}=await Promise.resolve().then(()=>(Dr(),es)),o=new i,{backupFile:a,blob:c}=await o.exportForSync(e,this.currentUser.ethereumAddress,s.id,s.publicKey),l=`w3pk-sync-${this.currentUser.ethereumAddress.substring(0,8)}.json`,u;try{u=await o.generateSyncQR(a)}catch(d){console.warn("QR code generation failed:",d)}return{blob:c,filename:l,qrCode:u}}async importFromSync(e){if(!this.currentUser)throw new y("Must be logged in to import from sync. Call login() first.");let{DeviceSyncManager:t}=await Promise.resolve().then(()=>(Dr(),es)),{BackupFileManager:n}=await Promise.resolve().then(()=>(ce(),ye)),{BackupManager:s}=await Promise.resolve().then(()=>(Re(),Te)),i=new n,o=new t,a=new s,c=await i.parseBackupFile(e),l=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!l)throw new y("No wallet data found for current user");let d=await new R().getCredentialById(l.credentialId);if(!d)throw new y("Credential not found");let{mnemonic:h,ethereumAddress:p}=await o.importFromSync(c,d.id,d.publicKey);a.markBackupVerified(p);let g=await(await Promise.resolve().then(()=>(H(),Ne))).deriveEncryptionKeyFromWebAuthn(d.id,d.publicKey),w=await(await Promise.resolve().then(()=>(H(),Ne))).encryptData(h,g);return await this.walletStorage.store({ethereumAddress:p,encryptedMnemonic:w,credentialId:d.id,createdAt:new Date().toISOString()}),{ethereumAddress:p,success:!0}}async detectSyncCapabilities(){let{PlatformDetector:e}=await Promise.resolve().then(()=>($c(),Wc));return new e().detectSyncCapabilities()}async simulateRecoveryScenario(e){if(!this.currentUser)throw new y("Must be authenticated to run recovery simulation");let t=await this.getBackupStatus(),{RecoverySimulator:n}=await Promise.resolve().then(()=>(Fr(),is));return new n().simulateScenario(e,t)}async runRecoveryTest(){if(!this.currentUser)throw new y("Must be authenticated to run recovery test");let e=await this.getBackupStatus(),{RecoverySimulator:t}=await Promise.resolve().then(()=>(Fr(),is));return new t().runInteractiveTest(e)}async getEducation(e){let{getExplainer:t}=await Promise.resolve().then(()=>(Fr(),is)),n=t(e);if(!n)throw new y(`Unknown education topic: ${e}`);return n}hasActiveSession(){return this.sessionManager.isActive()}getSessionRemainingTime(){return this.sessionManager.getRemainingTime()}extendSession(){try{this.sessionManager.extendSession()}catch(e){throw new y("Cannot extend session",e)}}async clearSession(){await this.sessionManager.clearSession()}setSessionDuration(e){this.sessionManager.setSessionDuration(e)}setPersistentSessionDuration(e){this.sessionManager.setPersistentSessionDuration(e)}async deriveMLKemPublicKey(e){if(!this.currentUser)throw new y("Must be authenticated to derive ML-KEM public key");let{deriveMLKemKeypair:t}=await Promise.resolve().then(()=>(Ur(),ls)),{Wallet:n}=await import("ethers"),s=e?.mode||"STANDARD",i=e?.tag||J,o=e?.origin||ge(),a=e?.context||"mlkem-v1",c=s==="STRICT"?!0:e?.requireAuth||!1;if(s==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. PRIMARY mode uses P-256 WebAuthn keys which cannot derive ML-KEM keypairs. Use STANDARD, STRICT, or YOLO mode instead.");let l=await this.getMnemonicFromSession(c,s),u=await me(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:p}=await Promise.resolve().then(()=>(Ie(),kt));d=p(l,u.index).privateKey}let h=await t(d,a);return typeof Buffer<"u"?Buffer.from(h.publicKey).toString("base64"):btoa(String.fromCharCode(...Array.from(h.publicKey)))}async mlkemEncrypt(e,t,n){if(!this.currentUser)throw new y("Must be authenticated to encrypt data");let{mlkemEncryptWithKey:s}=await Promise.resolve().then(()=>(Ur(),ls)),i=n?.mode||"STANDARD",o=n?.tag||J,a=n?.origin||ge(),c=n?.context||"mlkem-v1",l=i==="STRICT"?!0:n?.requireAuth||!1;if(i==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. Use STANDARD, STRICT, or YOLO mode instead.");let u=await this.getMnemonicFromSession(l,i),d=await me(u,a,i,o),h;if(d.privateKey)h=d.privateKey;else{let{deriveWalletFromMnemonic:p}=await Promise.resolve().then(()=>(Ie(),kt));h=p(u,d.index).privateKey}return await s(e,h,t,c)}async mlkemDecrypt(e,t){if(!this.currentUser)throw new y("Must be authenticated to decrypt data");let{mlkemDecryptWithKey:n}=await Promise.resolve().then(()=>(Ur(),ls)),s=t?.mode||"STANDARD",i=t?.tag||J,o=t?.origin||ge(),a=t?.context||"mlkem-v1",c=s==="STRICT"?!0:t?.requireAuth||!1;if(s==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. Use STANDARD, STRICT, or YOLO mode instead.");let l=await this.getMnemonicFromSession(c,s),u=await me(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:h}=await Promise.resolve().then(()=>(Ie(),kt));d=h(l,u.index).privateKey}return await n(e,d,a)}};j();Fi();Et();Fr();async function Fg(r,e="build"){let{importer:t}=await Promise.resolve().then(()=>(jo(),Kd)),{MemoryBlockstore:n}=await Promise.resolve().then(()=>(ch(),ah)),s=new n,o=t(async function*(){yield{path:e,content:r}}(),s,{cidVersion:1,rawLeaves:!0,wrapWithDirectory:!1});for await(let a of o)return a.cid.toString();throw new Error("Failed to generate CID")}async function Mg(r){let e=["index.js","index.mjs","index.d.ts"],t=[],n=0;for(let o of e){let a=`${r}/${o}`,c=await fetch(a);if(!c.ok)throw new Error(`Failed to fetch ${o}: ${c.statusText}`);let l=await c.arrayBuffer(),u=new Uint8Array(l);t.push(u),n+=u.length}let s=new Uint8Array(n),i=0;for(let o of t)s.set(o,i),i+=o.length;return s}async function ca(r){let e=await Mg(r);return Fg(e)}function la(){try{return lh().version}catch{throw new Error("Failed to read package version")}}async function ua(){let r=la();return ca(`https://unpkg.com/w3pk@${r}/dist`)}async function uh(r){return await ua()===r}ve();Bi();Ie();function dh(r=11){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);return crypto.getRandomValues(t),Array.from(t).map(n=>e[n%e.length]).join("")}function hh(r){if(!r.domain||!r.address||!r.uri||!r.version||r.chainId===void 0||!r.nonce||!r.issuedAt)throw new Error("Missing required SIWE message fields");if(r.version!=="1")throw new Error('SIWE version must be "1"');if(r.nonce.length<8||!/^[a-zA-Z0-9]+$/.test(r.nonce))throw new Error("Nonce must be at least 8 alphanumeric characters");if(r.statement&&r.statement.includes(`
960
+ ${e}[Error list was empty]`,t.trim()}return ah(r,e)}function $y(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e.useColors=()=>!1,e}function wa(r,e){let t=$y(`${r}:trace`);return re.enabled(`${r}:trace`)&&re.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=re(`${r}:trace`,e)),Object.assign(re(r,e),{error:re(`${r}:error`,e),trace:t,newScope:n=>wa(`${r}:${n}`,e)})}function ch(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var uh=p(()=>{"use strict";Hr();As();Uo();oh();re.formatters.b=r=>r==null?"undefined":fe.baseEncode(r);re.formatters.t=r=>r==null?"undefined":Z.baseEncode(r);re.formatters.m=r=>r==null?"undefined":Fo.baseEncode(r);re.formatters.p=r=>r==null?"undefined":r.toString();re.formatters.c=r=>r==null?"undefined":r.toString();re.formatters.k=r=>r==null?"undefined":r.toString();re.formatters.a=r=>r==null?"undefined":r.toString();re.formatters.e=r=>r==null?"undefined":lh(r)});function qy(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var dh,hh=p(()=>{"use strict";dh=qy});function Vy(r){return r[Symbol.asyncIterator]!=null}function Gy(r,e){let t=0;if(Vy(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=dh(r),{value:s,done:i}=n.next();if(i===!0)return(function*(){})();let o=e(s,t++);if(typeof o.then=="function")return(async function*(){await o&&(yield s);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){o===!0&&(yield s);for(let c of n)a(c,t++)&&(yield c)})()}var fh,ph=p(()=>{"use strict";hh();fh=Gy});function lr(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var mh=p(()=>{"use strict"});function Yy(r){return r.reason}async function yh(r,e,t){if(e==null)return r;let n=t?.translateError??Yy;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let s;try{return await Promise.race([r,new Promise((i,o)=>{s=()=>{o(n(e))},e.addEventListener("abort",s)})])}finally{s!=null&&e.removeEventListener("abort",s)}}var gh=p(()=>{"use strict"});function wh(){return new ba}var ba,bh=p(()=>{"use strict";mh();gh();ba=class{constructor(){f(this,"readNext");f(this,"haveNext");f(this,"ended");f(this,"nextResult");f(this,"error");this.ended=!1,this.readNext=lr(),this.haveNext=lr()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=lr(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=lr(),await yh(this.readNext.promise,t?.signal,t)}}});function jy(r){return r[Symbol.asyncIterator]!=null}async function Jy(r,e,t){try{await Promise.all(r.map(async n=>{for await(let s of n)await e.push(s,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*Qy(r){let e=new AbortController,t=wh();Jy(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*Xy(r){for(let e of r)yield*e}function Zy(...r){let e=[];for(let t of r)jy(t)||e.push(t);return e.length===r.length?Xy(e):Qy(r)}var Sh,Ah=p(()=>{"use strict";bh();Sh=Zy});var eg,Ws,xh=p(()=>{"use strict";uh();Ns();ph();Ah();un();eg=wa("blockstore:core:tiered"),Ws=class extends Ie{constructor(t){super();f(this,"stores");this.stores=t.slice()}async put(t,n,s){return await Promise.all(this.stores.map(async i=>{await i.put(t,n,s)})),t}async*get(t,n){let s;for(let i of this.stores)try{yield*i.get(t,n);return}catch(o){s=o,eg.error(o)}throw s??new Xe}async has(t,n){for(let s of this.stores)if(await s.has(t,n))return!0;return!1}async delete(t,n){await Promise.all(this.stores.map(async s=>{await s.delete(t,n)}))}async*putMany(t,n={}){for await(let s of t)await this.put(s.cid,s.bytes,n),yield s.cid}async*deleteMany(t,n={}){for await(let s of t)await this.delete(s,n),yield s}async*getAll(t){let n=new Set;yield*fh(Sh(...this.stores.map(s=>s.getAll(t))),s=>{let i=s.cid.toString();return n.has(i)?!1:(n.add(i),!0)})}}});var vh={};x(vh,{BaseBlockstore:()=>Ie,BlackHoleBlockstore:()=>cr,MemoryBlockstore:()=>Ks,TieredBlockstore:()=>Ws});var kh=p(()=>{"use strict";un();rh();da();xh()});var Eh=C((Dx,tg)=>{tg.exports={name:"w3pk",version:"0.10.5",description:"WebAuthn SDK for passwordless authentication, encrypted wallets, ERC-5564 stealth addresses, and zero-knowledge proofs",author:"Julien B\xE9ranger",license:"GPL-3.0",repository:{type:"git",url:"https://github.com/w3hc/w3pk.git"},bugs:{url:"https://github.com/w3hc/w3pk/issues"},homepage:"https://github.com/w3hc/w3pk#readme",keywords:["webauthn","passkey","authentication","passwordless","fido2","biometric","ethereum","web3","encryption","zero-knowledge","zk-proofs","zk-snarks","privacy","stealth-address","erc-5564","erc-6538","unlinkable","anonymous-transactions","privacy-preserving","ecdh","secp256k1","view-tags","circom","groth16","merkle-tree","commitment-scheme"],main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.js"},"./zk":{types:"./dist/zk/index.d.ts",import:"./dist/zk/index.mjs",require:"./dist/zk/index.js"},"./zk/utils":{types:"./dist/zk/utils.d.ts",import:"./dist/zk/utils.mjs",require:"./dist/zk/utils.js"},"./chainlist":{types:"./dist/chainlist/index.d.ts",import:"./dist/chainlist/index.mjs",require:"./dist/chainlist/index.js"}},sideEffects:!1,files:["dist","README.md","LICENSE","docs/","scripts/compute-build-hash.mjs"],scripts:{build:"tsup","build:zk":"npm run build && npm run compile:circuits","compile:circuits":"node scripts/compile-circuits.js",dev:"tsup --watch",test:"tsx test/test.ts && tsx test/comprehensive.test.ts && tsx test/backup.test.ts && tsx test/social-recovery.test.ts && tsx test/recovery-education.test.ts && tsx test/zk/zk.test.ts && tsx test/nft-ownership.test.ts && tsx test/chainlist.test.ts && tsx test/eip7702.test.ts && tsx test/external-wallet.test.ts && tsx test/erc5564.test.ts && tsx test/zk/key-stretching.test.ts && tsx test/username-encoding.test.ts && tsx test/username-validation.test.ts && tsx test/origin-derivation.test.ts && tsx test/build-hash.test.ts && tsx test/credential-checking.test.ts && tsx test/webauthn-native.test.ts && tsx test/persistent-session.test.ts && tsx test/local-storage.test.ts && tsx test/sign-message.test.ts && tsx test/siwe.test.ts && tsx test/requirereauth.test.ts && tsx test/eip7951.test.ts && tsx test/send-transaction.test.ts && tsx test/eip1193-provider.test.ts && tsx test/mlkem.test.ts && tsx test/login-missing-wallet.test.ts && tsx test/backup-status.test.ts && tsx test/eviction-risk.test.ts && tsx test/fresh-device-sync.test.ts && tsx test/prf-secret.test.ts && tsx test/prf-sync.test.ts && tsx test/user-verification.test.ts","test:basic":"tsx test/test.ts","test:comprehensive":"tsx test/comprehensive.test.ts","test:backup":"tsx test/backup.test.ts","test:social-recovery":"tsx test/social-recovery.test.ts","test:education":"tsx test/recovery-education.test.ts","test:username":"tsx test/username-encoding.test.ts && tsx test/username-validation.test.ts","test:recovery":"tsx test/backup.test.ts && tsx test/social-recovery.test.ts && tsx test/recovery-education.test.ts","test:zk":"tsx test/zk/zk.test.ts","test:nft":"tsx test/nft-ownership.test.ts","test:chainlist":"tsx test/chainlist.test.ts","test:eip7702":"tsx test/eip7702.test.ts","test:external-wallet":"tsx test/external-wallet.test.ts","test:eip7951":"tsx test/eip7951.test.ts","test:erc5564":"tsx test/erc5564.test.ts","test:sign-message":"tsx test/sign-message.test.ts","test:siwe":"tsx test/siwe.test.ts",prepublishOnly:"pnpm build","build:hash":"node scripts/compute-build-hash.mjs",html:"lsof -ti:3000 | xargs kill -9 2>/dev/null || true && tsup && npx serve . -l 3000 & sleep 5 && open http://localhost:3000/standalone/checker.html"},packageManager:"pnpm@10.6.4",devDependencies:{"@types/node":"^25.9.2","@types/qrcode":"^1.5.5",circomlib:"^2.0.5",siwe:"3.0.0",tsup:"^8.5.1",tsx:"^4.22.4",typescript:"^6.0.3"},peerDependencies:{ethers:"^6.0.0"},optionalDependencies:{"@ipld/car":"^5.4.6","blockstore-core":"^7.0.1",circomlibjs:"^0.1.7","ipfs-unixfs-importer":"^17.0.1",qrcode:"^1.5.4",snarkjs:"^0.7.6"},dependencies:{"@noble/hashes":"^2.2.0",mlkem:"^2.7.0"},pnpm:{overrides:{"jsonpath@<1.2.0":">=1.2.0","bn.js@>=5.0.0 <5.2.3":">=5.2.3","bn.js@<4.12.3":">=4.12.3","minimatch@>=5.0.0 <5.1.7":">=5.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","minimatch@>=5.0.0 <5.1.8":">=5.1.8","jsonpath@<=1.2.1":">=1.3.0","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3","picomatch@>=4.0.0 <4.0.4":">=4.0.4","underscore@<=1.13.7":">=1.13.8","ws@>=8.0.0 <8.20.1":">=8.20.1"}}}});var ig={};x(ig,{ApiError:()=>dr,AuthenticationError:()=>N,CryptoError:()=>P,DEFAULT_MODE:()=>ge,DEFAULT_TAG:()=>X,PrfUnsupportedError:()=>Le,RecoverySimulator:()=>Nt,RegistrationError:()=>et,SocialRecoveryManager:()=>dt,StealthAddressModule:()=>Bt,StorageError:()=>k,SyncBootstrapError:()=>ye,SyncRequiredError:()=>tt,WalletError:()=>g,WalletMissingError:()=>rt,Web3Passkey:()=>_t,Web3PasskeyError:()=>_,arrayBufferToBase64Url:()=>ne,assertEthereumAddress:()=>dn,assertMnemonic:()=>ka,assertUsername:()=>hn,authenticateWithPasskey:()=>$i,base64ToArrayBuffer:()=>Ys,base64UrlDecode:()=>Js,base64UrlToArrayBuffer:()=>T,canControlStealthAddress:()=>Ma,checkStealthAddress:()=>wr,clearCache:()=>Wa,computeStealthPrivateKey:()=>br,createSiweMessage:()=>Ih,createWalletFromMnemonic:()=>ni,createWeb3Passkey:()=>Rh,default:()=>sg,deriveAddressFromP256PublicKey:()=>si,deriveIndexFromOriginModeAndTag:()=>Sn,deriveMLKemKeypair:()=>_r,deriveStealthKeys:()=>It,deriveWalletFromMnemonic:()=>gr,detectWalletProvider:()=>Mn,encodeEIP7702AuthorizationMessage:()=>Ar,extractRS:()=>Oi,generateBIP39Wallet:()=>yr,generateSiweNonce:()=>Ph,generateStealthAddress:()=>xn,getAllChains:()=>Oa,getAllTopics:()=>Gi,getChainById:()=>za,getCurrentBuildHash:()=>xa,getCurrentOrigin:()=>ue,getDefaultProvider:()=>Fn,getEndpoints:()=>Bn,getExplainer:()=>Vi,getOriginSpecificAddress:()=>we,getPackageVersion:()=>Aa,getW3pkBuildHash:()=>Sa,hashEIP7702AuthorizationMessage:()=>xr,isStrongPassword:()=>Ea,mlkemDecrypt:()=>ps,mlkemDecryptWithKey:()=>Zi,mlkemEncrypt:()=>fs,mlkemEncryptWithKey:()=>Xi,normalizeOrigin:()=>st,parseSiweMessage:()=>Hs,promptPasskeySelection:()=>Hi,requestExternalWalletAuthorization:()=>Dn,safeAtob:()=>nt,safeBtoa:()=>js,searchExplainers:()=>Yi,supportsEIP7702Authorization:()=>Un,validateEthereumAddress:()=>qs,validateMnemonic:()=>Gs,validateSiweMessage:()=>Bh,validateUsername:()=>Vs,verifyBuildHash:()=>Ch,verifyEIP7702Authorization:()=>Tn,verifySiweSignature:()=>Th});module.exports=Wh(ig);W();function qs(r){return/^0x[a-fA-F0-9]{40}$/.test(r)}function Vs(r){return r.length<3||r.length>50?!1:/^[a-zA-Z0-9]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$/.test(r)}function Gs(r){let e=r.trim().split(/\s+/);return e.length===12||e.length===24}function dn(r){if(!qs(r))throw new Error("Invalid Ethereum address format")}function hn(r){if(!Vs(r))throw new Error("Username must be 3-50 characters long and contain only letters, numbers, underscores, and hyphens. Must start and end with a letter or number.")}function ka(r){if(!Gs(r))throw new Error("Invalid mnemonic: must be 12 or 24 words")}function Ea(r){if(r.length<12)return!1;let e=/[A-Z]/.test(r),t=/[a-z]/.test(r),n=/[0-9]/.test(r),s=/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(r);return!(!e||!t||!n||!s||["password","12345678","qwerty","abc123","password123","admin","letmein"].some(o=>r.toLowerCase().includes(o)))}_e();ce();se();ti();async function Vh(r){try{let e=new Uint8Array(r),t=Ia(e);if(t===-1)return null;let n=e.slice(t);if(!((n[32]&64)!==0))return null;let o=37;o+=16;let a=n[o]<<8|n[o+1];o+=2,o+=a;let c=n.slice(o),u=await Yh(c);return ne(u)}catch(e){return console.error("Failed to extract public key:",e),null}}function Gh(r){let e=new Uint8Array(r),t=Ia(e);return t===-1?!1:yn(e.slice(t))}function Ia(r){let e=new Uint8Array([104,97,117,116,104,68,97,116,97]);for(let t=0;t<r.length-e.length;t++){let n=!0;for(let s=0;s<e.length;s++)if(r[t+s]!==e[s]){n=!1;break}if(n){let s=r[t+e.length],i=t+e.length+1;if(s>=88&&s<=91){let o=s-87;i+=o}return i}}return-1}async function Yh(r){let e=Pa(r,-2),t=Pa(r,-3);if(!e||!t)throw new Error("Failed to extract EC coordinates from COSE key");let n=new Uint8Array(65);n[0]=4,n.set(e,1),n.set(t,33);let s=new Uint8Array([48,89,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,7,3,66,0]),i=new Uint8Array(s.length+n.length);return i.set(s,0),i.set(n,s.length),i.buffer}function Pa(r,e){let t=e<0?32+(-1-e):e;for(let n=0;n<r.length-33;n++)if(r[n]===t&&(r[n+1]===88&&r[n+2]===32||r[n+1]===88&&r[n+2]===32))return r.slice(n+3,n+35);return null}async function Ba(r){try{let{username:e,ethereumAddress:t,userVerification:n="required"}=r;hn(e),dn(t);let s=new D;if(await s.userExists(e))throw new Error("Username already registered");let i=Ee(),a=new TextEncoder().encode(e),c=ne(a),u=T(i),l=T(c),d={challenge:u,rp:{name:"w3pk",id:window.location.hostname},user:{id:l,name:e,displayName:e},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],authenticatorSelection:{userVerification:n,residentKey:"required",requireResidentKey:!0},timeout:6e4,attestation:"none",extensions:{prf:{eval:{first:hr}}}},h=await navigator.credentials.create({publicKey:d});if(!h)throw new Error("Failed to create credential");let m=await Vh(h.response.attestationObject);if(!m)throw new Error("Public key not returned from authenticator");await s.saveCredential({id:h.id,publicKey:m,username:e,ethereumAddress:t,createdAt:new Date().toISOString(),lastUsed:new Date().toISOString(),signCount:0});let y=h.response.attestationObject,w=Gh(y)?h.getClientExtensionResults?.().prf?.results?.first:void 0;return{signature:y,prfOutput:w}}catch(e){throw new et(e instanceof Error?e.message:"Registration failed",e)}}ri();W();var wn="w3pk_wallet_",bn=class{constructor(e){this.customStorage=e}get storage(){if(this.customStorage)return this.customStorage;if(typeof window<"u"&&window.localStorage)return window.localStorage;throw new k("localStorage is not available")}async init(){}async store(e){try{this.storage.setItem(wn+e.ethereumAddress,JSON.stringify(e))}catch(t){throw new k("Failed to store wallet data",t)}}async retrieve(e){try{let t=this.storage.getItem(wn+e);return t?JSON.parse(t):null}catch(t){throw new k("Failed to retrieve wallet data",t)}}async delete(e){try{this.storage.removeItem(wn+e)}catch(t){throw new k("Failed to delete wallet data",t)}}async clear(){try{for(let e of this.keys())this.storage.removeItem(e)}catch(e){throw new k("Failed to clear wallet data",e)}}keys(){let e=[];for(let t=0;t<this.storage.length;t++){let n=this.storage.key(t);n?.startsWith(wn)&&e.push(n)}return e}};Te();Pt();se();W();var q=require("ethers");W();function It(r){try{let e=q.ethers.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/0"),t=q.ethers.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/1"),n=t.signingKey.compressedPublicKey,s=e.signingKey.compressedPublicKey;return{stealthMetaAddress:n+s.slice(2),spendingPubKey:n,viewingPubKey:s,viewingKey:e.privateKey,spendingKey:t.privateKey}}catch(e){throw new P("Failed to derive stealth keys",e)}}function xn(r){try{let e="0x"+r.slice(2,68),t="0x"+r.slice(68),n=q.ethers.Wallet.createRandom(),s=n.signingKey.compressedPublicKey,i=ii(n.privateKey,t),o=q.ethers.keccak256(i),a="0x"+o.slice(2,4),c=oi(o),u=Na(e,Ua(c));return{stealthAddress:La(u),ephemeralPubKey:s,viewTag:a}}catch(e){throw new P("Failed to generate stealth address",e)}}function wr(r,e,t,n,s){try{let i=ii(r,t),o=q.ethers.keccak256(i);if(s&&("0x"+o.slice(2,4)).toLowerCase()!==s.toLowerCase())return{isForUser:!1};let a=oi(o),c=Na(e,Ua(a)),u=La(c);return u.toLowerCase()!==n.toLowerCase()?{isForUser:!1}:{isForUser:!0,stealthAddress:u}}catch{return{isForUser:!1}}}function br(r,e,t){try{let n=ii(r,t),s=q.ethers.keccak256(n),i=oi(s);return Zh(e,i)}catch(n){throw new P("Failed to compute stealth private key",n)}}function Ma(r,e,t,n,s,i){try{if(!wr(r,t,n,s,i).isForUser)return!1;let a=br(r,e,n);return new q.ethers.Wallet(a).address.toLowerCase()===s.toLowerCase()}catch{return!1}}function ii(r,e){try{return new q.ethers.Wallet(r).signingKey.computeSharedSecret(e)}catch(t){throw new P("Failed to compute shared secret",t)}}function Ua(r){try{return new q.ethers.Wallet(r).signingKey.compressedPublicKey}catch(e){throw new P("Failed to multiply generator by scalar",e)}}function Na(r,e){try{let t=q.ethers.SigningKey.computePublicKey(r,!1),n=q.ethers.SigningKey.computePublicKey(e,!1),s=BigInt("0x"+t.slice(4,68)),i=BigInt("0x"+t.slice(68)),o=BigInt("0x"+n.slice(4,68)),a=BigInt("0x"+n.slice(68)),c=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F");if(s===o&&i===a){let y=3n*s*s%c,w=2n*i%c,S=y*Fa(w,c)%c,b=(S*S-2n*s)%c,A=(S*(s-b)-i)%c;return Da((b+c)%c,(A+c)%c)}let u=((a-i)%c+c)%c,l=((o-s)%c+c)%c,d=u*Fa(l,c)%c,h=(d*d-s-o)%c,m=(d*(s-h)-i)%c;return Da((h+c)%c,(m+c)%c)}catch(t){throw new P("Failed to add public keys",t)}}function oi(r){try{let e=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),n=BigInt(r)%e;if(n===0n)throw new Error("Scalar reduced to zero (invalid)");return"0x"+n.toString(16).padStart(64,"0")}catch(e){throw new P("Failed to reduce scalar modulo curve order",e)}}function Zh(r,e){try{let t=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),n=BigInt(r),s=BigInt(e);return"0x"+((n+s)%t).toString(16).padStart(64,"0")}catch(t){throw new P("Failed to add private keys",t)}}function Da(r,e){return"0x"+(e%2n===0n?"02":"03")+r.toString(16).padStart(64,"0")}function Fa(r,e){r=(r%e+e)%e;let[t,n]=[r,e],[s,i]=[1n,0n];for(;n!==0n;){let o=t/n;[t,n]=[n,t-o*n],[s,i]=[i,s-o*i]}return(s%e+e)%e}function La(r){try{let e=q.ethers.SigningKey.computePublicKey(r,!1),t=q.ethers.keccak256("0x"+e.slice(4));return q.ethers.getAddress("0x"+t.slice(-40))}catch(e){throw new P("Failed to derive address from public key",e)}}var Bt=class{constructor(e,t){this.getMnemonic=t}async generateStealthAddress(e){try{let t=await this.getMnemonic(e?.requireAuth),n=It(t),s=xn(n.stealthMetaAddress);return{stealthAddress:s.stealthAddress,ephemeralPublicKey:s.ephemeralPubKey,viewTag:s.viewTag}}catch(t){throw new _("Failed to generate stealth address","STEALTH_GENERATION_ERROR",t)}}async parseAnnouncement(e,t){try{let n=await this.getMnemonic(t?.requireAuth),s=It(n),i=wr(s.viewingKey,s.spendingPubKey,e.ephemeralPublicKey,e.stealthAddress,e.viewTag);if(!i.isForUser)return{isForUser:!1};let o=br(s.viewingKey,s.spendingKey,e.ephemeralPublicKey);return{isForUser:!0,stealthAddress:i.stealthAddress,stealthPrivateKey:o}}catch(n){throw new _("Failed to parse announcement","ANNOUNCEMENT_PARSE_ERROR",n)}}async scanAnnouncements(e,t){let n=[];for(let s of e){let i=await this.parseAnnouncement(s,t);i.isForUser&&n.push(i)}return n}async getKeys(e){try{let t=await this.getMnemonic(e?.requireAuth);return It(t)}catch(t){throw new _("Failed to get stealth keys","STEALTH_KEYS_ERROR",t)}}async getStealthMetaAddress(e){try{return(await this.getKeys(e)).stealthMetaAddress}catch(t){throw new _("Failed to get stealth meta-address","STEALTH_META_ADDRESS_ERROR",t)}}get isAvailable(){return!0}};W();var vn="w3pk_session_",kn=class{constructor(e){this.customStorage=e}get storage(){if(this.customStorage)return this.customStorage;if(typeof window<"u"&&window.localStorage)return window.localStorage;throw new k("localStorage is not available")}async init(){}async store(e){if(e.securityMode==="STRICT")throw new k("Cannot persist STRICT mode sessions");try{this.storage.setItem(vn+e.ethereumAddress,JSON.stringify(e))}catch(t){throw new k("Failed to store persistent session",t)}}async retrieve(e){let t;try{let n=this.storage.getItem(vn+e);t=n?JSON.parse(n):null}catch(n){throw new k("Failed to retrieve persistent session",n)}return t&&Date.now()>t.expiresAt?(await this.delete(e),null):t}async delete(e){try{this.storage.removeItem(vn+e)}catch(t){throw new k("Failed to delete persistent session",t)}}async clear(){try{for(let e of this.keys())this.storage.removeItem(e)}catch(e){throw new k("Failed to clear persistent sessions",e)}}async cleanupExpired(){try{let e=Date.now();for(let t of this.keys()){let n=this.storage.getItem(t),s=n?JSON.parse(n):null;(!s||e>s.expiresAt)&&this.storage.removeItem(t)}}catch(e){throw new k("Failed to cleanup expired sessions",e)}}keys(){let e=[];for(let t=0;t<this.storage.length;t++){let n=this.storage.key(t);n?.startsWith(vn)&&e.push(n)}return e}};se();var En=class{constructor(e=1,t){this.session=null;this.sessionDuration=e*60*60*1e3,this.persistentConfig={enabled:t?.enabled??!1,duration:t?.duration??168,requireReauth:t?.requireReauth??!0},this.persistentStorage=new kn}async startSession(e,t,n,s,i){let o=new Date(Date.now()+this.sessionDuration).toISOString();if(this.session={mnemonic:e,expiresAt:o,credentialId:t},this.persistentConfig.enabled&&i!=="STRICT"&&n){if(!s){console.info("[w3pk] Authenticator did not provide a PRF output \u2014 persistent session not stored on this device (in-memory session only)");return}try{let a=await J(e,s),c=Date.now()+this.persistentConfig.duration*60*60*1e3;await this.persistentStorage.store({encryptedMnemonic:a,sessionKey:this.persistentConfig.requireReauth?void 0:await Xs(s),expiresAt:c,credentialId:t,ethereumAddress:n,securityMode:i||"STANDARD",createdAt:Date.now()})}catch(a){console.warn("[w3pk] Failed to persist session:",a)}}}getMnemonic(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),null):this.session.mnemonic:null}getCredentialId(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),null):this.session.credentialId:null}isActive(){return this.getMnemonic()!==null}getRemainingTime(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),0):Math.floor((new Date(this.session.expiresAt).getTime()-Date.now())/1e3):0}extendSession(){if(!this.session)throw new Error("No active session to extend");if(new Date>new Date(this.session.expiresAt))throw this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),new Error("Session expired, cannot extend");this.session.expiresAt=new Date(Date.now()+this.sessionDuration).toISOString()}async restoreFromPersistentStorage(e,t,n){if(!this.persistentConfig.enabled||!n)return null;try{let s=await this.persistentStorage.retrieve(e);if(!s)return null;if(s.credentialId!==t)return console.warn("[w3pk] Credential ID mismatch, clearing persistent session"),await this.persistentStorage.delete(e),null;let i=await Q(s.encryptedMnemonic,n),o=new Date(Date.now()+this.sessionDuration).toISOString();return this.session={mnemonic:i,expiresAt:o,credentialId:t},i}catch(s){console.warn("[w3pk] Failed to restore persistent session:",s);try{await this.persistentStorage.delete(e)}catch{}return null}}async attemptSilentRestore(){if(!this.persistentConfig.enabled||this.persistentConfig.requireReauth)return null;try{let{CredentialStorage:e}=await Promise.resolve().then(()=>(_e(),mn)),n=await new e().getAllCredentials();if(n.length===0)return null;for(let s of n){let i=await this.persistentStorage.retrieve(s.ethereumAddress);if(!i)continue;if(i.credentialId!==s.id){console.warn("[w3pk] Credential ID mismatch, skipping this session");continue}if(!i.sessionKey)continue;let o=await Q(i.encryptedMnemonic,await Zs(i.sessionKey)),a=new Date(Date.now()+this.sessionDuration).toISOString();return this.session={mnemonic:o,expiresAt:a,credentialId:s.id},{mnemonic:o,ethereumAddress:s.ethereumAddress,credentialId:s.id}}return null}catch(e){return console.warn("[w3pk] Failed to attempt silent restore:",e),null}}async clearSession(){this.session&&(this.session.mnemonic="0".repeat(this.session.mnemonic.length)),this.session=null,this.persistentConfig.enabled&&await this.persistentStorage.clear()}get storesSessionKey(){return this.persistentConfig.enabled&&!this.persistentConfig.requireReauth}setSessionDuration(e){this.sessionDuration=e*60*60*1e3}setPersistentSessionDuration(e){this.persistentConfig.duration=e}};_e();Cn();li();var In={debug:!1,sessionDuration:1,userVerification:"required",persistentSession:{enabled:!1,duration:168,requireReauth:!0},onError:r=>{In.debug&&console.error("[w3pk]",r)}};W();var Ka="https://chainid.network/chains.json";var Sr=null,of=[/\$\{[\w_]+\}/i,/\{[\w_]+\}/i,/<[\w_]+>/i,/YOUR[-_]?API[-_]?KEY/i,/INSERT[-_]?API[-_]?KEY/i,/API[-_]?KEY[-_]?HERE/i];function af(r){return of.some(e=>e.test(r))}async function cf(r=Ka){let e=await fetch(r);if(!e.ok)throw new Error(`Failed to fetch chains data: ${e.status} ${e.statusText}`);return await e.json()}async function ui(r){let e=r?.chainsJsonUrl??Ka,t=r?.cacheDuration??36e5,n=Date.now();if(Sr&&n-Sr.timestamp<t)return Sr.data;let s=await cf(e);return Sr={data:s,timestamp:n},s}async function Bn(r,e){let n=(await ui(e)).find(s=>s.chainId===r);return n?n.rpc.filter(s=>!af(s)&&!s.startsWith("wss://")&&!s.startsWith("ws://")):[]}async function Oa(r){return ui(r)}async function za(r,e){return(await ui(e)).find(n=>n.chainId===r)}function Wa(){Sr=null}hi();Rn();var lf=new Set([1,10,8453,42161,57073,100,42220,137,42,15,40,41,44,46,47,50,51,56,61,71,82,83,95,97,112,123,130,146,151,153,171,180,183,185,195,215,228,247,248,252,261,267,291,293,311,332,336,395,401,416,466,480,488,510,545,634,647,648,747,831,919,938,945,957,964,970,980,995,997,1001,1003,1024,1030,1114,1125,1135,1149,1188,1284,1285,1287,1300,1301,1315,1337,1338,1339,1424,1514,1687,1727,1729,1740,1750,1829,1868,1946,1961,1962,1969,1989,1995,2017,2020,2031,2043,2109,2241,2340,2345,2440,2522,2559,2649,3068,3109,3338,3502,3799,3888,3889,4e3,4048,4078,4162,4201,4202,4460,4488,4661,4689,4690,4888,5e3,5003,5124,5234,5330,5424,5522,6283,6342,6398,6678,6806,6934,6942,6969,7117,7171,7200,7208,7368,7518,7668,7672,7744,7771,7869,7897,8008,8118,8217,8408,8700,8726,8727,8844,8880,8881,8882,8889,9372,9496,9700,9745,9746,9899,9990,9996,10011,10085,10143,10200,11221,11501,11504,11891,13370,14853,16602,16661,17e3,18880,18881,19991,21e3,21816,21912,25327,32323,33401,34443,41923,42170,43111,44787,47805,48898,48900,49049,49088,5e4,50312,53302,53456,53457,55244,56288,59141,60808,60850,62320,62850,64002,71402,72080,73114,73115,75338,78281,80002,80008,80069,80094,80451,80931,84532,88899,91342,92278,94524,96970,97476,97477,98985,100021,100501,101010,102030,102031,102032,112358,120893,121212,121213,121214,121215,129399,161803,175188,192940,193939,198989,212013,222222,240241,325e3,355110,355113,421614,555777,560048,656476,713715,743111,747474,763373,763375,777777,806582,808813,810180,839999,888991,2019775,2222222,4278608,5734951,6666689,6985385,7080969,7777777,9999999,11142220,11155111,11155420,11155931,16969696,19850818,20180427,20250825,28122024,34949059,37084624,52164803,61022448,79479957,96969696,420420421,420420422,888888888,974399131,999999999,1020352220,1273227453,1313161560,1350216234,1380996178,1417429182,1444673419,1482601649,1564830818,2046399126,11297108099,11297108109,88153591557,123420000220,123420001114]);async function uf(r,e=1e4){try{let t=new AbortController,n=setTimeout(()=>t.abort(),e),s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},signal:t.signal,body:JSON.stringify({jsonrpc:"2.0",method:"eth_estimateGas",params:[{from:"0xdeadbeef00000000000000000000000000000000",to:"0xdeadbeef00000000000000000000000000000000",data:"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",value:"0x0"},"latest",{"0xdeadbeef00000000000000000000000000000000":{code:"0xef01000000000000000000000000000000000000000001"}}],id:1})});if(clearTimeout(n),!s.ok)return!1;let i=await s.json();if(i.error){let o=(i.error.message||"").toLowerCase();return!["unsupported","not supported","unknown","invalid","unrecognized","does not support","not implemented"].some(c=>o.includes(c))}return i.result!==void 0}catch{return!1}}async function $a(r,e,t){if(lf.has(r))return!0;let n=t?.maxEndpoints||3,s=t?.timeout||1e4;try{let i=await e(r);if(i.length===0)return!1;let o=i.slice(0,n);for(let a of o)if(await uf(a,s))return!0;return!1}catch{return!1}}function dl(r){return typeof r=="string"&&/^0x[0-9a-fA-F]*$/.test(r)}function hl(r){let e=r.startsWith("0x")?r.slice(2):r,t=new Uint8Array(e.match(/.{1,2}/g).map(n=>parseInt(n,16)));return new TextDecoder().decode(t)}var _t=class{constructor(e={}){this.currentUser=null;this.currentWallet=null;this.persisted=null;this.config={...In,...e},this.walletStorage=new bn;let t={...In.persistentSession,...e.persistentSession};this.sessionManager=new En(e.sessionDuration||1,t),e.stealthAddresses!==void 0&&(this.stealth=new Bt(e.stealthAddresses,n=>this.getMnemonicFromSession(n)))}async loadZKModule(){if(this.zkModule)return this.zkModule;try{let e=new Function("path","return import(path)"),{ZKProofModule:t}=await e("w3pk/zk"),n=this.config.zkProofs||{};return this.zkModule=new t(n),this.zkModule}catch{throw new Error("ZK module not available. Install dependencies: npm install snarkjs circomlibjs")}}async getMnemonicFromSession(e=!1,t="STANDARD"){let n=t;if(!e){let h=this.sessionManager.getMnemonic();if(h)return h}if(!this.currentUser)throw new g("Must be authenticated. Call login() first.");let s=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!s)throw new g("No wallet found. Generate a wallet first.");let i=await pr(this.config.userVerification);if(!i.user)throw new g("Authentication failed");let c=(await new D().getCredentialById(s.credentialId))?.publicKey,u=await le(s.credentialId,c),l=await Q(s.encryptedMnemonic,u),d=i.prfOutput?await kt(i.prfOutput,this.sessionManager.storesSessionKey):void 0;return await this.sessionManager.startSession(l,s.credentialId,this.currentUser.ethereumAddress,d,n),l}async register(e){try{this.currentWallet?.address||await this.generateWallet();let t=this.currentWallet.address,n=this.currentWallet.mnemonic,s=await Ba({username:e.username,ethereumAddress:t,userVerification:this.config.userVerification}),o=await new D().getCredentialByAddress(t);if(this.currentUser={username:e.username,ethereumAddress:t,credentialId:o?.id||""},!o)throw new g("Credential not found after registration");let a=o.id,c=o.publicKey,u=await le(a,c),l=await J(n,u);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:l,credentialId:a,createdAt:new Date().toISOString()});let d=s.prfOutput?await kt(s.prfOutput,this.sessionManager.storesSessionKey):void 0;await this.sessionManager.startSession(n,a,t,d,"STANDARD"),this.currentWallet={address:t,mnemonic:n};let{BackupManager:h}=await Promise.resolve().then(()=>(Fe(),De)),m=await new h().hasBackup(t),y=await Pn();return this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser),{address:t,username:e.username,hasBackup:m,evictionRisk:y}}catch(t){throw this.config.onError?.(t),t}}async login(){try{let e=await this.sessionManager.attemptSilentRestore();if(e){let d=await new D().getCredentialById(e.credentialId);return await this.walletStorage.retrieve(e.ethereumAddress)?(this.currentUser={username:d?.username||e.ethereumAddress,ethereumAddress:e.ethereumAddress,credentialId:e.credentialId},this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser):(await this.sessionManager.clearSession().catch(m=>console.warn("[w3pk] Failed to clear stale session:",m)),this.login())}let t=await pr(this.config.userVerification);if(!t.verified||!t.user)throw new N("Login failed");let n=await this.walletStorage.retrieve(t.user.ethereumAddress);if(!n)throw new rt(t.user.credentialId,t.user.ethereumAddress);this.currentUser={username:t.user.username,ethereumAddress:t.user.ethereumAddress,credentialId:t.user.credentialId};let o=(await new D().getCredentialById(n.credentialId))?.publicKey,a=t.prfOutput?await kt(t.prfOutput,this.sessionManager.storesSessionKey):void 0,c=await this.sessionManager.restoreFromPersistentStorage(this.currentUser.ethereumAddress,n.credentialId,a),u;if(c)u=c;else{let l=await le(n.credentialId,o);u=await Q(n.encryptedMnemonic,l),await this.sessionManager.startSession(u,n.credentialId,this.currentUser.ethereumAddress,a,"STANDARD")}return this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser}catch(e){throw this.config.onError?.(e),e}}async logout(){this.currentUser=null,this.currentWallet=null;try{await this.sessionManager.clearSession()}finally{this.config.onAuthStateChanged?.(!1,void 0)}}get isAuthenticated(){return this.currentUser!==null}get user(){return this.currentUser}get storagePersisted(){return this.persisted}async requestPersistentStorage(){if(!(typeof navigator>"u"||!navigator.storage?.persist))try{this.persisted=await navigator.storage.persist()}catch{this.persisted=!1}}async listExistingCredentials(){try{return(await new D().getAllCredentials()).map(n=>({username:n.username,ethereumAddress:n.ethereumAddress,createdAt:n.createdAt,lastUsed:n.lastUsed}))}catch{return[]}}async hasExistingCredential(){return(await this.listExistingCredentials()).length>0}async getExistingCredentialCount(){return(await this.listExistingCredentials()).length}async generateWallet(){try{let e=yr();return this.currentWallet={address:e.address,mnemonic:e.mnemonic},{address:e.address,mnemonic:e.mnemonic}}catch(e){throw this.config.onError?.(e),new g("Failed to generate wallet",e)}}async deriveWallet(e,t,n){try{if(!this.currentUser)throw new g("Must be authenticated to derive wallet");let s=e||ge,i=t||X,o=n?.origin||ue();if(s==="PRIMARY"){let{CredentialStorage:l}=await Promise.resolve().then(()=>(_e(),mn)),{deriveAddressFromP256PublicKey:d}=await Promise.resolve().then(()=>(Pt(),An)),m=await new l().getCredentialById(this.currentUser.credentialId);if(!m||!m.publicKey)throw new g("No WebAuthn credential found for PRIMARY mode");return{address:await d(m.publicKey),origin:o,mode:s,tag:i,publicKey:m.publicKey}}let a=s==="STRICT"?!0:n?.requireAuth||!1,c=await this.getMnemonicFromSession(a,s),u=await we(c,o,s,i);return{address:u.address,privateKey:u.privateKey,index:u.index,origin:u.origin,mode:u.mode,tag:u.tag}}catch(s){throw this.config.onError?.(s),new g("Failed to derive wallet",s)}}async getAddress(e,t,n){try{if(!this.currentUser)throw new g("Must be authenticated to get address");let s=e||ge,i=t||X,o=n?.origin||ue();if(s==="PRIMARY"){let{deriveAddressFromP256PublicKey:l}=await Promise.resolve().then(()=>(Pt(),An)),h=await new D().getCredentialById(this.currentUser.credentialId);if(!h||!h.publicKey)throw new g("No WebAuthn credential found for PRIMARY mode");return await l(h.publicKey)}let a=s==="STRICT",c=await this.getMnemonicFromSession(a,s);return(await we(c,o,s,i)).address}catch(s){throw this.config.onError?.(s),new g("Failed to get address",s)}}async importMnemonic(e){try{if(!this.currentUser)throw new g("Must be authenticated to import mnemonic");if(!e||e.trim().split(/\s+/).length<12)throw new g("Invalid mnemonic: must be at least 12 words");let t=await pr(this.config.userVerification);if(!t.user)throw new g("Authentication failed");let n=t.user.credentialId,o=(await new D().getCredentialById(n))?.publicKey,a=await le(n,o),c=await J(e.trim(),a);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:c,credentialId:n,createdAt:new Date().toISOString()}),this.currentWallet={address:this.currentUser.ethereumAddress,mnemonic:e.trim()};let u=t.prfOutput?await kt(t.prfOutput,this.sessionManager.storesSessionKey):void 0;await this.sessionManager.startSession(e.trim(),n,this.currentUser.ethereumAddress,u,"STANDARD")}catch(t){throw this.config.onError?.(t),new g("Failed to import mnemonic",t)}}async signMessage(e,t){try{let n=t?.mode||ge,s=t?.signingMethod||"EIP191";if(n==="PRIMARY"&&s==="SIWE")throw new g("SIWE signing is not supported in PRIMARY mode. Use STANDARD, STRICT or YOLO mode.");if(!this.currentUser)throw new g("Must be authenticated to sign message");let i=t?.tag||X,o=t?.origin||ue(),a=n==="STRICT"?!0:t?.requireAuth||!1,c=await this.getMnemonicFromSession(a,n),u=await we(c,o,n,i),{Wallet:l}=await import("ethers"),d;if(u.privateKey)d=new l(u.privateKey);else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(Te(),Ct)),{privateKey:y}=m(c,u.index);d=new l(y)}let h;switch(s){case"EIP191":case"SIWE":h=await d.signMessage(e);break;case"EIP712":if(!t?.eip712Domain||!t?.eip712Types||!t?.eip712PrimaryType)throw new g("EIP712 signing requires eip712Domain, eip712Types, and eip712PrimaryType in options");let m;try{m=typeof e=="string"?JSON.parse(e):e}catch{throw new g("EIP712 message must be valid JSON or an object")}h=await d.signTypedData(t.eip712Domain,t.eip712Types,m);break;case"rawHash":let{SigningKey:y}=await import("ethers"),w=e;if(w.startsWith("0x")&&(w=w.slice(2)),w.length!==64)throw new g("rawHash signing method requires a 32-byte hash (64 hex characters)");h=new y(d.privateKey).sign("0x"+w).serialized;break;default:throw new g(`Unsupported signing method: ${s}`)}return{signature:h,address:u.address,mode:u.mode,tag:u.tag,origin:u.origin}}catch(n){throw this.config.onError?.(n),new g("Failed to sign message",n)}}async signMessageWithPasskey(e){try{if(!this.currentUser)throw new g("Must be authenticated to sign message");let{extractRS:t}=await Promise.resolve().then(()=>(zi(),Xc)),{base64UrlDecode:n}=await Promise.resolve().then(()=>(ce(),Qs)),s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e)),i="0x"+Buffer.from(s).toString("hex"),o=new Uint8Array(Buffer.from(i.slice(2),"hex")),a=this.currentUser.credentialId;if(!a)throw new g("Credential ID not found in user object");let c={challenge:o,rpId:window.location.hostname,allowCredentials:[{id:n(a),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}],userVerification:this.config.userVerification,timeout:6e4},u=await navigator.credentials.get({publicKey:c});if(!u||!u.response)throw new g("WebAuthn signature failed");let l=u.response,d=new Uint8Array(l.authenticatorData),h=new Uint8Array(l.clientDataJSON),m=await crypto.subtle.digest("SHA-256",h),y=new Uint8Array(d.length+m.byteLength);y.set(d,0),y.set(new Uint8Array(m),d.length);let w=await crypto.subtle.digest("SHA-256",y.buffer),S="0x"+Buffer.from(w).toString("hex"),b=new Uint8Array(l.signature),{r:A,s:v}=t(b),{CredentialStorage:B}=await Promise.resolve().then(()=>(_e(),mn)),U=await new B().getCredentialById(a);if(!U||!U.publicKey)throw new g("No WebAuthn credential found for PRIMARY mode");let{base64UrlToArrayBuffer:F}=await Promise.resolve().then(()=>(ce(),Qs)),H=F(U.publicKey),Be=await crypto.subtle.importKey("spki",H,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),vt=await crypto.subtle.exportKey("jwk",Be);if(!vt.x||!vt.y)throw new g("Invalid P-256 public key: missing x or y coordinates");let Dh="0x"+Buffer.from(F(vt.x)).toString("hex"),Fh="0x"+Buffer.from(F(vt.y)).toString("hex"),{deriveAddressFromP256PublicKey:Mh}=await Promise.resolve().then(()=>(Pt(),An)),Uh=await Mh(U.publicKey);return{signature:{r:A,s:v},messageHash:i,signedHash:S,address:Uh,publicKey:{qx:Dh,qy:Fh}}}catch(t){throw this.config.onError?.(t),new g("Failed to sign message with passkey",t)}}async sendTransaction(e,t){try{if(!this.currentUser)throw new g("Must be authenticated to send transaction");let n=t?.mode||ge,s=t?.tag||X,i=t?.origin||ue();if(n==="PRIMARY")throw t?.rpcUrl?new g("PRIMARY mode sendTransaction is not yet supported. Use signMessageWithPasskey() to obtain a P-256 signature and submit via a bundler manually."):new g("PRIMARY mode requires options.rpcUrl pointing to a bundler or sponsoring relayer. The P-256 address cannot pay gas directly without a deployed P-256-verifier contract via EIP-7702.");let o=n==="STRICT"?!0:t?.requireAuth||!1,a=await this.getMnemonicFromSession(o,n),c=await we(a,i,n,s),{Wallet:u,JsonRpcProvider:l}=await import("ethers"),d;if(c.privateKey)d=new u(c.privateKey);else{let{deriveWalletFromMnemonic:S}=await Promise.resolve().then(()=>(Te(),Ct)),{privateKey:b}=S(a,c.index);d=new u(b)}let h=t?.rpcUrl??(await this.getEndpoints(e.chainId))[0];if(!h)throw new g(`No RPC endpoint found for chainId ${e.chainId}. Pass options.rpcUrl.`);let m=new l(h);return{hash:(await d.connect(m).sendTransaction({to:e.to,value:e.value,data:e.data??"0x",chainId:e.chainId,gasLimit:e.gasLimit,maxFeePerGas:e.maxFeePerGas,maxPriorityFeePerGas:e.maxPriorityFeePerGas,nonce:e.nonce})).hash,from:c.address,chainId:e.chainId,mode:c.mode,tag:c.tag,origin:c.origin}}catch(n){throw this.config.onError?.(n),new g("Failed to send transaction",n)}}async signAuthorization(e,t){try{if(!this.currentUser)throw new g("Must be authenticated to sign authorization");let{Wallet:n,Signature:s}=await import("ethers"),{hashEIP7702AuthorizationMessage:i,verifyEIP7702Authorization:o}=await Promise.resolve().then(()=>(Rn(),di)),a;if(e.privateKey)a=new n(e.privateKey);else{let w=await this.getMnemonicFromSession(t?.requireAuth);a=n.fromPhrase(w)}let c=BigInt(e.chainId||1),u=e.nonce||0n,l=i(c,e.contractAddress,u),d=a.signingKey.sign(l),h=s.from(d),m={chainId:c,address:e.contractAddress.toLowerCase(),nonce:u,yParity:h.yParity,r:h.r,s:h.s};if(!o(c,e.contractAddress,u,m,a.address))throw new g("Signature verification failed - this should not happen");return m}catch(n){throw this.config.onError?.(n),new g("Failed to sign authorization",n)}}async getEndpoints(e){return Bn(e)}async supportsEIP7702(e,t){return $a(e,this.getEndpoints.bind(this),t)}getEIP1193Provider(e){let t=e?.chainId??1,n=this,s={},i=(a,...c)=>{(s[a]??[]).forEach(u=>u(...c))};return{async request({method:a,params:c}){switch(a){case"eth_accounts":case"eth_requestAccounts":return[await n.getAddress(e?.mode??"STANDARD",e?.tag??"MAIN")];case"eth_chainId":return"0x"+t.toString(16);case"eth_sendTransaction":{let u=(c??[])[0]??{};if(!u.chainId&&!t)throw new g("eth_sendTransaction: chainId is required");let l=u.chainId?parseInt(u.chainId,16):t;return(await n.sendTransaction({to:u.to,value:u.value!==void 0?BigInt(u.value):void 0,data:u.data??"0x",chainId:l,gasLimit:u.gas!==void 0?BigInt(u.gas):void 0,maxFeePerGas:u.maxFeePerGas!==void 0?BigInt(u.maxFeePerGas):void 0,maxPriorityFeePerGas:u.maxPriorityFeePerGas!==void 0?BigInt(u.maxPriorityFeePerGas):void 0,nonce:u.nonce!==void 0?parseInt(u.nonce,16):void 0},{mode:e?.mode,tag:e?.tag,rpcUrl:e?.rpcUrl})).hash}case"personal_sign":{let[u]=c??[],l=dl(u)?hl(u):u;return(await n.signMessage(l,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_sign":{let[,u]=c??[],l=dl(u)?hl(u):u;return(await n.signMessage(l,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_signTypedData_v4":{let[,u]=c??[],l=typeof u=="string"?JSON.parse(u):u,{domain:d,types:h,message:m,primaryType:y}=l,w={...h};return delete w.EIP712Domain,(await n.signMessage(JSON.stringify(m),{mode:e?.mode,tag:e?.tag,signingMethod:"EIP712",eip712Domain:d,eip712Types:w,eip712PrimaryType:y})).signature}case"wallet_switchEthereumChain":{let u=parseInt((c??[])[0]?.chainId??"0x1",16);return t=u,i("chainChanged","0x"+u.toString(16)),null}default:throw new g(`w3pk EIP-1193: unsupported method "${a}"`)}},on(a,c){s[a]||(s[a]=[]),s[a].push(c)},removeListener(a,c){s[a]&&(s[a]=s[a].filter(u=>u!==c))}}}async requestExternalWalletDelegation(e){if(!this.currentUser)throw new g("Must be authenticated to get w3pk delegation address. Call login() or register() first.");let{requestExternalWalletAuthorization:t,getDefaultProvider:n}=await Promise.resolve().then(()=>(hi(),Ha)),s=e?.provider||n();if(!s)throw new g("No external wallet provider found. Please install MetaMask, Rabby, or similar wallet.");let i=this.currentUser.ethereumAddress;return t(s,{delegateToAddress:i,chainId:e?.chainId,nonce:e?.nonce,accountIndex:e?.accountIndex})}get zk(){return new Proxy({},{get:(e,t)=>async(...n)=>(await this.loadZKModule())[t](...n)})}async getBackupStatus(){if(!this.currentUser)throw new g("Must be authenticated to check backup status");let{BackupManager:e}=await Promise.resolve().then(()=>(Fe(),De));return new e().getBackupStatus(this.currentUser.ethereumAddress)}async confirmRecoveryPhraseBackup(){if(!this.currentUser)throw new g("Must be authenticated to confirm a backup");let{BackupManager:e}=await Promise.resolve().then(()=>(Fe(),De)),{deriveAddressChecksum:t}=await Promise.resolve().then(()=>(Ke(),pi)),{ethereumAddress:n}=this.currentUser;await new e().confirmRecoveryPhraseBackup(n,await t(n))}async createBackupFile(e="password",t){if(!this.currentUser)throw new g("Must be authenticated to create backup");let n=await this.getMnemonicFromSession(!0),{BackupFileManager:s}=await Promise.resolve().then(()=>(he(),be)),{BackupStorage:i}=await Promise.resolve().then(()=>(Nn(),Va)),o=new s,a=new i,c,u;if(e==="password"){if(!t)throw new g("Password required for password-based backup");u=(await o.createPasswordBackup(n,this.currentUser.ethereumAddress,t,await this.backupCredential())).backupFile,c=o.createDownloadableBackup(u)}else if(e==="passkey"){let l=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!l)throw new g("No wallet data found");let h=await new D().getCredentialById(l.credentialId);if(!h)throw new g("Credential not found");u=(await o.createPasskeyBackup(n,this.currentUser.ethereumAddress,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(u)}else if(e==="hybrid"){if(!t)throw new g("Password required for hybrid backup");let l=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!l)throw new g("No wallet data found");let h=await new D().getCredentialById(l.credentialId);if(!h)throw new g("Credential not found");u=(await o.createHybridBackup(n,this.currentUser.ethereumAddress,t,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(u)}else throw new g(`Unknown encryption type: ${e}`);return await a.storeBackupMetadata({id:crypto.randomUUID(),ethereumAddress:this.currentUser.ethereumAddress,method:"file",createdAt:new Date().toISOString(),addressChecksum:u.addressChecksum}),c}async backupCredential(){let e=await new D().getCredentialById(this.currentUser.credentialId);return e?{id:e.id,publicKey:e.publicKey}:void 0}async setupSocialRecovery(e,t,n){if(!this.currentUser)throw new g("Must be authenticated to set up social recovery");let s=await this.getMnemonicFromSession(!0),{BackupFileManager:i}=await Promise.resolve().then(()=>(he(),be)),o=new i,a;if(n)a=(await o.createPasswordBackup(s,this.currentUser.ethereumAddress,n,await this.backupCredential())).backupFile;else{let d=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!d)throw new g("No wallet data found");let m=await new D().getCredentialById(d.credentialId);if(!m)throw new g("Credential not found");a=(await o.createPasskeyBackup(s,this.currentUser.ethereumAddress,m.id,m.publicKey)).backupFile}let{SocialRecovery:c}=await Promise.resolve().then(()=>(is(),ss));return{guardianShares:(await new c().splitAmongGuardians(a,e,t)).guardianShares,setupComplete:!0}}async generateGuardianInvite(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(is(),ss)),s=new n,i=await s.createGuardianInvitation(e,t),o=s.createShareDownload(e);return{qrCodeDataURL:i.qrCodeDataURL,shareDocument:i.shareDocument,downloadBlob:o.blob,filename:o.filename}}async recoverFromGuardians(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(is(),ss)),{BackupFileManager:s}=await Promise.resolve().then(()=>(he(),be)),{BackupManager:i}=await Promise.resolve().then(()=>(Fe(),De)),o=new n,a=new s,c=new i,u=e.map(h=>typeof h=="string"?o.parseGuardianShare(h):h),l=await o.recoverFromShares(u),d;if(l.encryptionMethod==="password"){if(!t)throw new g("Password required to decrypt password-protected backup");d=await a.restoreWithPassword(l,t)}else throw new g("Passkey-encrypted backups not supported for guardian recovery. Use password-protected backups.");return c.markBackupVerified(d.ethereumAddress),d}async restoreFromBackupFile(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(he(),be)),{BackupManager:s}=await Promise.resolve().then(()=>(Fe(),De)),i=new n,o=new s,a=await i.parseBackupFile(e),c,u;if(a.encryptionMethod==="password"){if(!t)throw new g("Password required to restore password-encrypted backup");let l=await i.restoreWithPassword(a,t);c=l.mnemonic,u=l.ethereumAddress}else if(a.encryptionMethod==="passkey"){if(!this.currentUser)throw new g("Must be logged in with passkey to restore passkey-encrypted backup. Call login() first.");let h=(await new D().getAllCredentials()).find(y=>y.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new g("Credential not found for current user");let m=await i.restoreWithExistingPasskey(a,h.id,h.publicKey);c=m.mnemonic,u=m.ethereumAddress}else if(a.encryptionMethod==="hybrid"){if(!t)throw new g("Password required to restore hybrid backup");if(!this.currentUser)throw new g("Must be logged in with passkey to restore hybrid backup. Call login() first.");let h=(await new D().getAllCredentials()).find(y=>y.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new g("Credential not found for current user");let m=await i.restoreWithHybrid(a,t,h.id,h.publicKey);c=m.mnemonic,u=m.ethereumAddress}else throw new g(`Unknown encryption method: ${a.encryptionMethod}`);if(o.markBackupVerified(u),this.currentWallet={address:u,mnemonic:c},this.currentUser){let l=new D,h=(await l.getAllCredentials()).find(m=>m.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(h){let m=this.currentUser.ethereumAddress;m.toLowerCase()!==u.toLowerCase()&&await this.walletStorage.delete(m),await l.updateCredentialAddress(h.id,u);let y=await(await Promise.resolve().then(()=>(se(),fr))).deriveEncryptionKeyFromWebAuthn(h.id,h.publicKey),w=await(await Promise.resolve().then(()=>(se(),fr))).encryptData(c,y);await this.walletStorage.store({ethereumAddress:u,encryptedMnemonic:w,credentialId:h.id,createdAt:new Date().toISOString()}),this.currentUser={...this.currentUser,ethereumAddress:u},await this.sessionManager.startSession(c,h.id,u,void 0,"STANDARD"),this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser)}}return{mnemonic:c,ethereumAddress:u}}async syncWalletWithPasskey(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(he(),be)),{BackupManager:s}=await Promise.resolve().then(()=>(Fe(),De)),{promptPasskeySelection:i}=await Promise.resolve().then(()=>(qi(),Zc)),o=new n,a=new s,c=await o.parseBackupFile(e);if(c.encryptionMethod==="prf")return this.restorePrfBackup(c);let u=await i(),l=u.credentialId,d=u.publicKey;if(!d){if(c.encryptionMethod!=="password")throw new ye("PASSKEY_BACKUP",l);if(!c.credential)throw new ye("NO_CREDENTIAL",l);if(c.credential.id!==l)throw new ye("CREDENTIAL_MISMATCH",l);if(d=c.credential.publicKey,!await gn(u.assertion,d))throw new ye("PUBLIC_KEY_MISMATCH",l)}let h,m;if(c.encryptionMethod==="password"){if(!t)throw new g("Password required to restore password-encrypted backup");let y=await o.restoreWithPassword(c,t);h=y.mnemonic,m=y.ethereumAddress}else if(c.encryptionMethod==="passkey"){let y=await o.restoreWithExistingPasskey(c,l,d);h=y.mnemonic,m=y.ethereumAddress}else if(c.encryptionMethod==="hybrid"){if(!t)throw new g("Password required to restore hybrid backup");let y=await o.restoreWithHybrid(c,t,l,d);h=y.mnemonic,m=y.ethereumAddress}else throw new g(`Unknown encryption method: ${c.encryptionMethod}`);return a.markBackupVerified(m),await this.bootstrapCredential({id:l,publicKey:d,username:u.username??m},h,m),{mnemonic:h,ethereumAddress:m}}async restorePrfBackup(e){let{DeviceSyncManager:t}=await Promise.resolve().then(()=>(Nr(),os)),{BackupManager:n}=await Promise.resolve().then(()=>(Fe(),De)),s=e.credential,o=(await new D().getCredentialById(s.id))?.publicKey??s.publicKey,{mnemonic:a,ethereumAddress:c}=await new t().importFromSync(e,o);return new n().markBackupVerified(c),await this.bootstrapCredential({id:s.id,publicKey:o,username:e.username??c},a,c),{mnemonic:a,ethereumAddress:c}}async bootstrapCredential(e,t,n){let s=new D,i=await s.getCredentialById(e.id);if(i)i.ethereumAddress.toLowerCase()!==n.toLowerCase()&&await s.updateCredentialAddress(e.id,n);else{let c=new Date().toISOString();await s.saveCredential({id:e.id,publicKey:e.publicKey,username:e.username,ethereumAddress:n,createdAt:c,lastUsed:c})}let o=await le(e.id,e.publicKey),a=await J(t,o);await this.walletStorage.store({ethereumAddress:n,encryptedMnemonic:a,credentialId:e.id,createdAt:new Date().toISOString()}),this.currentUser={username:i?.username??e.username,ethereumAddress:n,credentialId:e.id},await this.sessionManager.startSession(t,e.id,n,void 0,"STANDARD"),this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser)}async registerWithBackupFile(e,t,n){let{BackupFileManager:s}=await Promise.resolve().then(()=>(he(),be)),{BackupManager:i}=await Promise.resolve().then(()=>(Fe(),De)),o=new s,a=new i,c=await o.parseBackupFile(e);if(c.encryptionMethod!=="password")throw new g("Can only register with password-encrypted backups. Use restoreFromBackupFile() for passkey-encrypted backups.");let{mnemonic:u,ethereumAddress:l}=await o.restoreWithPassword(c,t),{Wallet:d}=await import("ethers");if(d.fromPhrase(u).address.toLowerCase()!==l.toLowerCase())throw new g("Backup verification failed: address mismatch");return a.markBackupVerified(l),this.currentWallet={address:l,mnemonic:u},this.register({username:n})}async getSyncStatus(){let{DeviceSyncManager:e}=await Promise.resolve().then(()=>(Nr(),os));return new e().getSyncInfo()}async exportForSync(e){if(!this.currentUser)throw new g("Must be authenticated to export for sync");let t=await this.getMnemonicFromSession(),n=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!n)throw new g("No wallet data found");let i=await new D().getCredentialById(n.credentialId);if(!i)throw new g("Credential not found");let{DeviceSyncManager:o}=await Promise.resolve().then(()=>(Nr(),os)),a=new o,{backupFile:c,blob:u}=await a.exportForSync(t,this.currentUser.ethereumAddress,{id:i.id,publicKey:i.publicKey},this.currentUser.username,e),l=`w3pk-sync-${this.currentUser.ethereumAddress.substring(0,8)}.json`,d;try{d=await a.generateSyncQR(c)}catch(h){console.warn("QR code generation failed:",h)}return{blob:u,filename:l,qrCode:d}}async importFromSync(e){let{BackupFileManager:t}=await Promise.resolve().then(()=>(he(),be)),n=await new t().parseBackupFile(e);if(n.encryptionMethod!=="prf")throw new g("importFromSync() takes PRF backups from exportForSync(). Use syncWalletWithPasskey() for other backups.");if(this.currentUser&&this.currentUser.credentialId!==n.credential.id)throw new ye("CREDENTIAL_MISMATCH",this.currentUser.credentialId);let{ethereumAddress:s}=await this.restorePrfBackup(n);return{ethereumAddress:s,success:!0}}async detectSyncCapabilities(){let{PlatformDetector:e}=await Promise.resolve().then(()=>(il(),sl));return new e().detectSyncCapabilities()}async simulateRecoveryScenario(e){if(!this.currentUser)throw new g("Must be authenticated to run recovery simulation");let t=await this.getBackupStatus(),{RecoverySimulator:n}=await Promise.resolve().then(()=>(Lr(),ds));return new n().simulateScenario(e,t)}async runRecoveryTest(){if(!this.currentUser)throw new g("Must be authenticated to run recovery test");let e=await this.getBackupStatus(),{RecoverySimulator:t}=await Promise.resolve().then(()=>(Lr(),ds));return new t().runInteractiveTest(e)}async getEducation(e){let{getExplainer:t}=await Promise.resolve().then(()=>(Lr(),ds)),n=t(e);if(!n)throw new g(`Unknown education topic: ${e}`);return n}hasActiveSession(){return this.sessionManager.isActive()}getSessionRemainingTime(){return this.sessionManager.getRemainingTime()}extendSession(){try{this.sessionManager.extendSession()}catch(e){throw new g("Cannot extend session",e)}}async clearSession(){await this.sessionManager.clearSession()}setSessionDuration(e){this.sessionManager.setSessionDuration(e)}setPersistentSessionDuration(e){this.sessionManager.setPersistentSessionDuration(e)}async derivePrfSecret(e){try{return await ai(st(ue()),e,this.currentUser?.credentialId)}catch(t){throw this.config.onError?.(t),t}}async deriveMLKemPublicKey(e){if(!this.currentUser)throw new g("Must be authenticated to derive ML-KEM public key");let{deriveMLKemKeypair:t}=await Promise.resolve().then(()=>(Kr(),ms)),{Wallet:n}=await import("ethers"),s=e?.mode||"STANDARD",i=e?.tag||X,o=e?.origin||ue(),a=e?.context||"mlkem-v1",c=s==="STRICT"?!0:e?.requireAuth||!1;if(s==="PRIMARY")throw new g("ML-KEM encryption is not supported in PRIMARY mode. PRIMARY mode uses P-256 WebAuthn keys which cannot derive ML-KEM keypairs. Use STANDARD, STRICT, or YOLO mode instead.");let u=await this.getMnemonicFromSession(c,s),l=await we(u,o,s,i),d;if(l.privateKey)d=l.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(Te(),Ct));d=m(u,l.index).privateKey}let h=await t(d,a);return typeof Buffer<"u"?Buffer.from(h.publicKey).toString("base64"):btoa(String.fromCharCode(...Array.from(h.publicKey)))}async mlkemEncrypt(e,t,n){if(!this.currentUser)throw new g("Must be authenticated to encrypt data");let{mlkemEncryptWithKey:s}=await Promise.resolve().then(()=>(Kr(),ms)),i=n?.mode||"STANDARD",o=n?.tag||X,a=n?.origin||ue(),c=n?.context||"mlkem-v1",u=i==="STRICT"?!0:n?.requireAuth||!1;if(i==="PRIMARY")throw new g("ML-KEM encryption is not supported in PRIMARY mode. Use STANDARD, STRICT, or YOLO mode instead.");let l=await this.getMnemonicFromSession(u,i),d=await we(l,a,i,o),h;if(d.privateKey)h=d.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(Te(),Ct));h=m(l,d.index).privateKey}return await s(e,h,t,c)}async mlkemDecrypt(e,t){if(!this.currentUser)throw new g("Must be authenticated to decrypt data");let{mlkemDecryptWithKey:n}=await Promise.resolve().then(()=>(Kr(),ms)),s=t?.mode||"STANDARD",i=t?.tag||X,o=t?.origin||ue(),a=t?.context||"mlkem-v1",c=s==="STRICT"?!0:t?.requireAuth||!1;if(s==="PRIMARY")throw new g("ML-KEM encryption is not supported in PRIMARY mode. Use STANDARD, STRICT, or YOLO mode instead.");let u=await this.getMnemonicFromSession(c,s),l=await we(u,o,s,i),d;if(l.privateKey)d=l.privateKey;else{let{deriveWalletFromMnemonic:h}=await Promise.resolve().then(()=>(Te(),Ct));d=h(u,l.index).privateKey}return await n(e,d,a)}};W();qi();Pt();Lr();async function rg(r,e="build"){let{importer:t}=await Promise.resolve().then(()=>(aa(),th)),{MemoryBlockstore:n}=await Promise.resolve().then(()=>(kh(),vh)),s=new n,o=t(async function*(){yield{path:e,content:r}}(),s,{cidVersion:1,rawLeaves:!0,wrapWithDirectory:!1});for await(let a of o)return a.cid.toString();throw new Error("Failed to generate CID")}async function ng(r){let e=["index.js","index.mjs","index.d.ts"],t=[],n=0;for(let o of e){let a=`${r}/${o}`,c=await fetch(a);if(!c.ok)throw new Error(`Failed to fetch ${o}: ${c.statusText}`);let u=await c.arrayBuffer(),l=new Uint8Array(u);t.push(l),n+=l.length}let s=new Uint8Array(n),i=0;for(let o of t)s.set(o,i),i+=o.length;return s}async function Sa(r){let e=await ng(r);return rg(e)}function Aa(){try{return Eh().version}catch{throw new Error("Failed to read package version")}}async function xa(){let r=Aa();return Sa(`https://unpkg.com/w3pk@${r}/dist`)}async function Ch(r){return await xa()===r}ce();zi();Te();function Ph(r=11){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);return crypto.getRandomValues(t),Array.from(t).map(n=>e[n%e.length]).join("")}function Ih(r){if(!r.domain||!r.address||!r.uri||!r.version||r.chainId===void 0||!r.nonce||!r.issuedAt)throw new Error("Missing required SIWE message fields");if(r.version!=="1")throw new Error('SIWE version must be "1"');if(r.nonce.length<8||!/^[a-zA-Z0-9]+$/.test(r.nonce))throw new Error("Nonce must be at least 8 alphanumeric characters");if(r.statement&&r.statement.includes(`
961
961
  `))throw new Error("Statement cannot contain newlines");let e=`${r.domain} wants you to sign in with your Ethereum account:
962
962
  `;if(e+=`${r.address}
963
963
  `,e+=`
@@ -972,33 +972,6 @@ Expiration Time: ${r.expirationTime}`),r.notBefore&&(e+=`
972
972
  Not Before: ${r.notBefore}`),r.requestId&&(e+=`
973
973
  Request ID: ${r.requestId}`),r.resources&&r.resources.length>0){e+=`
974
974
  Resources:`;for(let t of r.resources)e+=`
975
- - ${t}`}return e}function Ls(r){let e=r.split(`
976
- `);if(e.length<7)throw new Error("Invalid SIWE message: too few lines");let n=e[0].match(/^(.+) wants you to sign in with your Ethereum account:$/);if(!n)throw new Error("Invalid SIWE message: malformed domain line");let s=n[1],i=e[1];if(!i.match(/^0x[a-fA-F0-9]{40}$/))throw new Error("Invalid SIWE message: malformed address");if(e[2]!=="")throw new Error("Invalid SIWE message: expected empty line after address");let o,a="",c="",l=0,u="",d="",h,p,g,w=[],b=3;for(e[b]&&!e[b].startsWith("URI: ")&&(o=e[b],b++,e[b]===""&&b++);b<e.length;b++){let S=e[b];if(S.startsWith("URI: "))a=S.substring(5);else if(S.startsWith("Version: "))c=S.substring(9);else if(S.startsWith("Chain ID: "))l=parseInt(S.substring(10),10);else if(S.startsWith("Nonce: "))u=S.substring(7);else if(S.startsWith("Issued At: "))d=S.substring(11);else if(S.startsWith("Expiration Time: "))h=S.substring(17);else if(S.startsWith("Not Before: "))p=S.substring(12);else if(S.startsWith("Request ID: "))g=S.substring(12);else if(S.startsWith("Resources:")){for(b++;b<e.length&&e[b].startsWith("- ");)w.push(e[b].substring(2)),b++;break}}if(!a||!c||!l||!u||!d)throw new Error("Invalid SIWE message: missing required fields");return{domain:s,address:i,statement:o,uri:a,version:c,chainId:l,nonce:u,issuedAt:d,expirationTime:h,notBefore:p,requestId:g,resources:w.length>0?w:void 0}}function fh(r,e){let t=[];try{let n=typeof r=="string"?Ls(r):r;return e?.domain&&n.domain!==e.domain&&t.push(`Domain mismatch: expected "${e.domain}", got "${n.domain}"`),e?.chainId!==void 0&&n.chainId!==e.chainId&&t.push(`Chain ID mismatch: expected ${e.chainId}, got ${n.chainId}`),n.version!=="1"&&t.push(`Invalid version: must be "1", got "${n.version}"`),(n.nonce.length<8||!/^[a-zA-Z0-9]+$/.test(n.nonce))&&t.push("Nonce must be at least 8 alphanumeric characters"),e?.checkExpiration&&n.expirationTime&&new Date(n.expirationTime)<new Date&&t.push("Message has expired"),e?.checkNotBefore&&n.notBefore&&new Date(n.notBefore)>new Date&&t.push("Message is not yet valid (not-before constraint)"),{valid:t.length===0,errors:t,parsed:n}}catch(n){return t.push(n.message),{valid:!1,errors:t}}}async function ph(r,e,t){try{let{verifyMessage:n}=await import("ethers"),s=n(r,e),i=Ls(r);return s.toLowerCase()!==i.address.toLowerCase()?{valid:!1,error:"Signature does not match address in message"}:t&&s.toLowerCase()!==t.toLowerCase()?{valid:!1,error:"Signature does not match expected address"}:{valid:!0,address:s}}catch(n){return{valid:!1,error:n.message}}}Pi();Jn();function Ug(r,e=3e4){let t=["signMessage","signTypedData","sign(","signature","sendTransaction","transaction","eth_sign","Contract(","ethers.Contract","new Contract","w3pk","Web3Passkey","useW3PK","wallet","signer","provider","authorization","delegation","EIP7702"],n=r.split(`
977
- `),s=[],i=500;for(let a=0;a<n.length&&s.length<i;a++){let l=n[a].toLowerCase();if(t.some(u=>l.includes(u.toLowerCase()))){let u=Math.max(0,a-2),d=Math.min(n.length,a+3);for(let h=u;h<d;h++)s.includes(n[h])||s.push(n[h])}}let o=s.join(`
978
- `);return o.length>e?o.substring(0,e)+`
979
-
980
- // ... (truncated)`:o||"// No transaction code found"}async function Ng(r,e=100){let t=`# Application Code Analysis
981
-
982
- `;t+=`**App URL:** ${r}
983
-
984
- `,t+=`**Note:** Only transaction-related code snippets shown
985
-
986
- `,t+=`---
987
-
988
- `;let s=Array.from(document.querySelectorAll("script[src]")).map(c=>c.src).filter(c=>c&&!c.includes("node_modules")&&!c.includes("chrome-extension"));t+=`## JavaScript Files (${s.length})
989
-
990
- `;let i=0,o=0,a=e*1024;for(let c of s.slice(0,15)){if(o>=e){console.warn(`[W3PK Inspect] Reached total size limit of ${e} KB - stopping collection`),t+=`
991
- **Note:** Collection stopped - reached ${e} KB limit
992
- `;break}try{let l=await fetch(c);if(!l.ok)continue;let u=await l.text(),d=Ug(u);if(d&&!d.includes("No transaction code found")){let h=new Blob([d]).size/1024;if(o+h>e){console.warn(`[W3PK Inspect] Skipping ${new URL(c).pathname} - would exceed total size limit`);break}t+=`### \`${new URL(c).pathname}\`
993
-
994
- `,t+="```javascript\n",t+=d,t+=`
995
- \`\`\`
996
-
997
- ---
998
-
999
- `,i++,o+=h}}catch{}}return i===0&&(t+=`No transaction-related code found in JavaScript files.
1000
- `),t}async function da(r={}){if(typeof window>"u")throw new Error("Browser inspect() can only be called in browser environments. For Node.js, use the CLI or Node.js API.");let{appUrl:e=window.location.origin,rukhUrl:t="https://rukh.w3hc.org",context:n="w3pk",model:s="anthropic",focusMode:i="transactions",maxTotalSizeKB:o=100}=r;console.log("[W3PK Inspect] Starting inspection of",e),console.log("[W3PK Inspect] Focus mode:",i),console.log("[W3PK Inspect] Max total size:",o,"KB");let a=await Ng(e,o);console.log("[W3PK Inspect] Collected source code, sending to Rukh API...");let c="Analyze this web application and provide a security report listing all transaction and signing methods.",l=new FormData;l.append("message",c),l.append("model",s),l.append("context",n);let u=new Blob([a],{type:"text/markdown"});l.append("file",u,"app-source.md");let d=await fetch(`${t}/ask`,{method:"POST",body:l});if(!d.ok){let b=await d.text();throw new Error(`Rukh API error: ${d.status} - ${b}`)}let h=await d.json(),p=h.output||h.response||h.message||JSON.stringify(h);console.log("[W3PK Inspect] Analysis complete!");let w=Array.from(document.querySelectorAll("script[src]")).map(b=>new URL(b.src).pathname).filter(b=>b&&!b.includes("node_modules"));return{report:p,analyzedFiles:w,appUrl:e}}async function mh(r){console.log(`\u{1F50D} W3PK Security Inspection Starting...
1001
- `);try{let e=await da(r);console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("\u{1F4CB} SECURITY REPORT"),console.log(`\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
1002
- `),console.log(e.report),console.log(`
1003
- \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501`),console.log(`\u2705 Analyzed ${e.analyzedFiles.length} files from ${e.appUrl}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")}catch(e){throw console.error("\u274C Inspection failed:",e),e}}Ur();function gh(r={}){return new Nt(r)}var Lg=gh;
975
+ - ${t}`}return e}function Hs(r){let e=r.split(`
976
+ `);if(e.length<7)throw new Error("Invalid SIWE message: too few lines");let n=e[0].match(/^(.+) wants you to sign in with your Ethereum account:$/);if(!n)throw new Error("Invalid SIWE message: malformed domain line");let s=n[1],i=e[1];if(!i.match(/^0x[a-fA-F0-9]{40}$/))throw new Error("Invalid SIWE message: malformed address");if(e[2]!=="")throw new Error("Invalid SIWE message: expected empty line after address");let o,a="",c="",u=0,l="",d="",h,m,y,w=[],S=3;for(e[S]&&!e[S].startsWith("URI: ")&&(o=e[S],S++,e[S]===""&&S++);S<e.length;S++){let b=e[S];if(b.startsWith("URI: "))a=b.substring(5);else if(b.startsWith("Version: "))c=b.substring(9);else if(b.startsWith("Chain ID: "))u=parseInt(b.substring(10),10);else if(b.startsWith("Nonce: "))l=b.substring(7);else if(b.startsWith("Issued At: "))d=b.substring(11);else if(b.startsWith("Expiration Time: "))h=b.substring(17);else if(b.startsWith("Not Before: "))m=b.substring(12);else if(b.startsWith("Request ID: "))y=b.substring(12);else if(b.startsWith("Resources:")){for(S++;S<e.length&&e[S].startsWith("- ");)w.push(e[S].substring(2)),S++;break}}if(!a||!c||!u||!l||!d)throw new Error("Invalid SIWE message: missing required fields");return{domain:s,address:i,statement:o,uri:a,version:c,chainId:u,nonce:l,issuedAt:d,expirationTime:h,notBefore:m,requestId:y,resources:w.length>0?w:void 0}}function Bh(r,e){let t=[];try{let n=typeof r=="string"?Hs(r):r;return e?.domain&&n.domain!==e.domain&&t.push(`Domain mismatch: expected "${e.domain}", got "${n.domain}"`),e?.chainId!==void 0&&n.chainId!==e.chainId&&t.push(`Chain ID mismatch: expected ${e.chainId}, got ${n.chainId}`),n.version!=="1"&&t.push(`Invalid version: must be "1", got "${n.version}"`),(n.nonce.length<8||!/^[a-zA-Z0-9]+$/.test(n.nonce))&&t.push("Nonce must be at least 8 alphanumeric characters"),e?.checkExpiration&&n.expirationTime&&new Date(n.expirationTime)<new Date&&t.push("Message has expired"),e?.checkNotBefore&&n.notBefore&&new Date(n.notBefore)>new Date&&t.push("Message is not yet valid (not-before constraint)"),{valid:t.length===0,errors:t,parsed:n}}catch(n){return t.push(n.message),{valid:!1,errors:t}}}async function Th(r,e,t){try{let{verifyMessage:n}=await import("ethers"),s=n(r,e),i=Hs(r);return s.toLowerCase()!==i.address.toLowerCase()?{valid:!1,error:"Signature does not match address in message"}:t&&s.toLowerCase()!==t.toLowerCase()?{valid:!1,error:"Signature does not match expected address"}:{valid:!0,address:s}}catch(n){return{valid:!1,error:n.message}}}Ki();rs();Kr();function Rh(r={}){return new _t(r)}var sg=Rh;
1004
977
  //# sourceMappingURL=index.js.map