neozip-mcp 0.1.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/mcp.json.global.example +10 -0
- package/CHANGELOG.md +16 -0
- package/DOCUMENTATION.md +40 -0
- package/LICENSE +16 -0
- package/README.md +223 -0
- package/SECURITY.md +37 -0
- package/dist/account/account-state.js +86 -0
- package/dist/account/format-account-status.js +37 -0
- package/dist/account/identity-provision.js +75 -0
- package/dist/account/identity-wrap.js +69 -0
- package/dist/account/profile-crypto.js +47 -0
- package/dist/account/profile-store.js +108 -0
- package/dist/account/require-account.js +29 -0
- package/dist/account/token-service-identity.js +395 -0
- package/dist/account/types.js +2 -0
- package/dist/account/wallet-evm.js +39 -0
- package/dist/archive/blockchain-status.js +303 -0
- package/dist/archive/crypto-self.js +114 -0
- package/dist/archive/detect-text.js +56 -0
- package/dist/archive/embed-metadata.js +283 -0
- package/dist/archive/encryption.js +166 -0
- package/dist/archive/extract-entry-buffer.js +18 -0
- package/dist/archive/find-entry.js +21 -0
- package/dist/archive/grep-content.js +141 -0
- package/dist/archive/identity-key.js +176 -0
- package/dist/archive/manifest.js +55 -0
- package/dist/archive/merkle.js +31 -0
- package/dist/archive/metadata-paths.js +14 -0
- package/dist/archive/mint-archive.js +61 -0
- package/dist/archive/open-archive.js +23 -0
- package/dist/archive/read-entry-buffer.js +11 -0
- package/dist/archive/read-entry-content.js +51 -0
- package/dist/archive/recipient-access.js +26 -0
- package/dist/archive/recipient-decrypt.js +21 -0
- package/dist/archive/recipient-lookup.js +55 -0
- package/dist/archive/timestamp-network.js +54 -0
- package/dist/config/capabilities.js +37 -0
- package/dist/config/index.js +74 -0
- package/dist/connect-cli.js +312 -0
- package/dist/connection/coordinator.js +74 -0
- package/dist/connection/credentials.js +29 -0
- package/dist/connection/crypto.js +56 -0
- package/dist/connection/dump.js +79 -0
- package/dist/connection/incomplete-setup.js +81 -0
- package/dist/connection/interactive.js +814 -0
- package/dist/connection/legacy-profile-reader.js +47 -0
- package/dist/connection/magic-link.js +138 -0
- package/dist/connection/migrate.js +76 -0
- package/dist/connection/onboarding.js +524 -0
- package/dist/connection/origin.js +63 -0
- package/dist/connection/phase.js +93 -0
- package/dist/connection/phone.js +20 -0
- package/dist/connection/promote-active.js +53 -0
- package/dist/connection/reset.js +20 -0
- package/dist/connection/setup-guidance.js +154 -0
- package/dist/connection/status-report.js +40 -0
- package/dist/connection/store.js +352 -0
- package/dist/connection/token-auth.js +42 -0
- package/dist/connection/types.js +2 -0
- package/dist/connection/wallet-setup.js +70 -0
- package/dist/constants/wallet-identity.js +11 -0
- package/dist/index.js +47 -0
- package/dist/load-env.js +16 -0
- package/dist/neozipkit-node.js +11 -0
- package/dist/register/resources.js +14 -0
- package/dist/register/tools.js +77 -0
- package/dist/resources/zip-resource.js +40 -0
- package/dist/resources/zip-uri.js +23 -0
- package/dist/security/auth.js +28 -0
- package/dist/security/capabilities.js +85 -0
- package/dist/security/rate-limiter.js +43 -0
- package/dist/security/resource-limiter.js +44 -0
- package/dist/security/sandbox.js +61 -0
- package/dist/server.js +32 -0
- package/dist/startup-account-gate.js +101 -0
- package/dist/startup-summary.js +40 -0
- package/dist/token-service/require-configured.js +23 -0
- package/dist/tools/account.js +504 -0
- package/dist/tools/compress.js +237 -0
- package/dist/tools/connect-status.js +143 -0
- package/dist/tools/extract.js +62 -0
- package/dist/tools/grep-entries.js +42 -0
- package/dist/tools/identity-status.js +157 -0
- package/dist/tools/info.js +147 -0
- package/dist/tools/list.js +118 -0
- package/dist/tools/lookup-recipient.js +37 -0
- package/dist/tools/mint.js +41 -0
- package/dist/tools/read-entry.js +35 -0
- package/dist/tools/search-entries.js +71 -0
- package/dist/tools/stamp.js +60 -0
- package/dist/tools/test.js +90 -0
- package/dist/tools/token-service-account.js +143 -0
- package/dist/tools/upgrade.js +60 -0
- package/dist/tools/verify.js +75 -0
- package/dist/tools/wallet-config-status.js +119 -0
- package/dist/tools/wallet-info.js +64 -0
- package/dist/translators/index.js +106 -0
- package/dist/types/index.js +7 -0
- package/dist/util/mask.js +30 -0
- package/dist/util/token-service-fetch.js +23 -0
- package/dist/vendor/neozipkit-pro.js +3 -0
- package/docs/NEOZIP_CONNECTION_STORE.md +238 -0
- package/docs/NEOZIP_CONNECT_CLI.md +185 -0
- package/docs/OPERATIONS.md +992 -0
- package/docs/examples/CLAUDE.md.example +22 -0
- package/docs/examples/claude/skills/neozip-mcp/SKILL.md +54 -0
- package/docs/examples/claude/skills/neozip-notarization/SKILL.md +75 -0
- package/docs/examples/mcp.json.claude.example +11 -0
- package/docs/examples/neozip-mcp-cursor-rule.mdc +31 -0
- package/docs/installation-guides/INSTALL_CLAUDE_CODE.md +286 -0
- package/docs/installation-guides/INSTALL_CLAUDE_WORKSPACE.md +301 -0
- package/docs/installation-guides/README.md +76 -0
- package/package.json +99 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
var lo=Object.create;var lr=Object.defineProperty;var ho=Object.getOwnPropertyDescriptor;var yo=Object.getOwnPropertyNames;var bo=Object.getPrototypeOf,po=Object.prototype.hasOwnProperty;var We=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var ne=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var mo=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of yo(t))!po.call(e,s)&&s!==r&&lr(e,s,{get:()=>t[s],enumerable:!(n=ho(t,s))||n.enumerable});return e};var go=(e,t,r)=>(r=e!=null?lo(bo(e)):{},mo(t||!e||!e.__esModule?lr(r,"default",{value:e,enumerable:!0}):r,e));var hr=ne(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.crypto=void 0;var De=We("node:crypto");Nt.crypto=De&&typeof De=="object"&&"webcrypto"in De?De.webcrypto:De&&typeof De=="object"&&"randomBytes"in De?De:void 0});var Ie=ne(C=>{"use strict";Object.defineProperty(C,"__esModule",{value:!0});C.wrapXOFConstructorWithOpts=C.wrapConstructorWithOpts=C.wrapConstructor=C.Hash=C.nextTick=C.swap32IfBE=C.byteSwapIfBE=C.swap8IfBE=C.isLE=void 0;C.isBytes=br;C.anumber=bn;C.abytes=at;C.ahash=wo;C.aexists=_o;C.aoutput=Bo;C.u8=xo;C.u32=Eo;C.clean=vo;C.createView=So;C.rotr=Ao;C.rotl=Io;C.byteSwap=mn;C.byteSwap32=pr;C.bytesToHex=Oo;C.hexToBytes=To;C.asyncLoop=Lo;C.utf8ToBytes=gn;C.bytesToUtf8=qo;C.toBytes=Kt;C.kdfInputToBytes=Mo;C.concatBytes=Po;C.checkOpts=Co;C.createHasher=gr;C.createOptHasher=wr;C.createXOFer=_r;C.randomBytes=No;var ct=hr();function br(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function bn(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function at(e,...t){if(!br(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function wo(e){if(typeof e!="function"||typeof e.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");bn(e.outputLen),bn(e.blockLen)}function _o(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Bo(e,t){at(e);let r=t.outputLen;if(e.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function xo(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function Eo(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function vo(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function So(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function Ao(e,t){return e<<32-t|e>>>t}function Io(e,t){return e<<t|e>>>32-t>>>0}C.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function mn(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}C.swap8IfBE=C.isLE?e=>e:e=>mn(e);C.byteSwapIfBE=C.swap8IfBE;function pr(e){for(let t=0;t<e.length;t++)e[t]=mn(e[t]);return e}C.swap32IfBE=C.isLE?e=>e:pr;var mr=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Ho=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function Oo(e){if(at(e),mr)return e.toHex();let t="";for(let r=0;r<e.length;r++)t+=Ho[e[r]];return t}var Ce={_0:48,_9:57,A:65,F:70,a:97,f:102};function yr(e){if(e>=Ce._0&&e<=Ce._9)return e-Ce._0;if(e>=Ce.A&&e<=Ce.F)return e-(Ce.A-10);if(e>=Ce.a&&e<=Ce.f)return e-(Ce.a-10)}function To(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);if(mr)return Uint8Array.fromHex(e);let t=e.length,r=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(r);for(let s=0,o=0;s<r;s++,o+=2){let i=yr(e.charCodeAt(o)),a=yr(e.charCodeAt(o+1));if(i===void 0||a===void 0){let c=e[o]+e[o+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+o)}n[s]=i*16+a}return n}var Ro=async()=>{};C.nextTick=Ro;async function Lo(e,t,r){let n=Date.now();for(let s=0;s<e;s++){r(s);let o=Date.now()-n;o>=0&&o<t||(await(0,C.nextTick)(),n+=o)}}function gn(e){if(typeof e!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(e))}function qo(e){return new TextDecoder().decode(e)}function Kt(e){return typeof e=="string"&&(e=gn(e)),at(e),e}function Mo(e){return typeof e=="string"&&(e=gn(e)),at(e),e}function Po(...e){let t=0;for(let n=0;n<e.length;n++){let s=e[n];at(s),t+=s.length}let r=new Uint8Array(t);for(let n=0,s=0;n<e.length;n++){let o=e[n];r.set(o,s),s+=o.length}return r}function Co(e,t){if(t!==void 0&&{}.toString.call(t)!=="[object Object]")throw new Error("options should be object or undefined");return Object.assign(e,t)}var pn=class{};C.Hash=pn;function gr(e){let t=n=>e().update(Kt(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function wr(e){let t=(n,s)=>e(s).update(Kt(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}function _r(e){let t=(n,s)=>e(s).update(Kt(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}C.wrapConstructor=gr;C.wrapConstructorWithOpts=wr;C.wrapXOFConstructorWithOpts=_r;function No(e=32){if(ct.crypto&&typeof ct.crypto.getRandomValues=="function")return ct.crypto.getRandomValues(new Uint8Array(e));if(ct.crypto&&typeof ct.crypto.randomBytes=="function")return Uint8Array.from(ct.crypto.randomBytes(e));throw new Error("crypto.getRandomValues must be defined")}});var xr=ne(me=>{"use strict";Object.defineProperty(me,"__esModule",{value:!0});me.SHA512_IV=me.SHA384_IV=me.SHA224_IV=me.SHA256_IV=me.HashMD=void 0;me.setBigUint64=Br;me.Chi=Ko;me.Maj=Uo;var He=Ie();function Br(e,t,r,n){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,r,n);let s=BigInt(32),o=BigInt(4294967295),i=Number(r>>s&o),a=Number(r&o),c=n?4:0,f=n?0:4;e.setUint32(t+c,i,n),e.setUint32(t+f,a,n)}function Ko(e,t,r){return e&t^~e&r}function Uo(e,t,r){return e&t^e&r^t&r}var wn=class extends He.Hash{constructor(t,r,n,s){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=r,this.padOffset=n,this.isLE=s,this.buffer=new Uint8Array(t),this.view=(0,He.createView)(this.buffer)}update(t){(0,He.aexists)(this),t=(0,He.toBytes)(t),(0,He.abytes)(t);let{view:r,buffer:n,blockLen:s}=this,o=t.length;for(let i=0;i<o;){let a=Math.min(s-this.pos,o-i);if(a===s){let c=(0,He.createView)(t);for(;s<=o-i;i+=s)this.process(c,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===s&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){(0,He.aexists)(this),(0,He.aoutput)(t,this),this.finished=!0;let{buffer:r,view:n,blockLen:s,isLE:o}=this,{pos:i}=this;r[i++]=128,(0,He.clean)(this.buffer.subarray(i)),this.padOffset>s-i&&(this.process(n,0),i=0);for(let h=i;h<s;h++)r[h]=0;Br(n,s-8,BigInt(this.length*8),o),this.process(n,0);let a=(0,He.createView)(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let f=c/4,d=this.get();if(f>d.length)throw new Error("_sha2: outputLen bigger than state");for(let h=0;h<f;h++)a.setUint32(4*h,d[h],o)}digest(){let{buffer:t,outputLen:r}=this;this.digestInto(t);let n=t.slice(0,r);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:r,buffer:n,length:s,finished:o,destroyed:i,pos:a}=this;return t.destroyed=i,t.finished=o,t.length=s,t.pos=a,s%r&&t.buffer.set(n),t}clone(){return this._cloneInto()}};me.HashMD=wn;me.SHA256_IV=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);me.SHA224_IV=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]);me.SHA384_IV=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]);me.SHA512_IV=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209])});var Yr=ne(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Z.toBig=Z.shrSL=Z.shrSH=Z.rotrSL=Z.rotrSH=Z.rotrBL=Z.rotrBH=Z.rotr32L=Z.rotr32H=Z.rotlSL=Z.rotlSH=Z.rotlBL=Z.rotlBH=Z.add5L=Z.add5H=Z.add4L=Z.add4H=Z.add3L=Z.add3H=void 0;Z.add=Nr;Z.fromBig=Bn;Z.split=Er;var Ut=BigInt(2**32-1),_n=BigInt(32);function Bn(e,t=!1){return t?{h:Number(e&Ut),l:Number(e>>_n&Ut)}:{h:Number(e>>_n&Ut)|0,l:Number(e&Ut)|0}}function Er(e,t=!1){let r=e.length,n=new Uint32Array(r),s=new Uint32Array(r);for(let o=0;o<r;o++){let{h:i,l:a}=Bn(e[o],t);[n[o],s[o]]=[i,a]}return[n,s]}var vr=(e,t)=>BigInt(e>>>0)<<_n|BigInt(t>>>0);Z.toBig=vr;var Sr=(e,t,r)=>e>>>r;Z.shrSH=Sr;var Ar=(e,t,r)=>e<<32-r|t>>>r;Z.shrSL=Ar;var Ir=(e,t,r)=>e>>>r|t<<32-r;Z.rotrSH=Ir;var Hr=(e,t,r)=>e<<32-r|t>>>r;Z.rotrSL=Hr;var Or=(e,t,r)=>e<<64-r|t>>>r-32;Z.rotrBH=Or;var Tr=(e,t,r)=>e>>>r-32|t<<64-r;Z.rotrBL=Tr;var Rr=(e,t)=>t;Z.rotr32H=Rr;var Lr=(e,t)=>e;Z.rotr32L=Lr;var qr=(e,t,r)=>e<<r|t>>>32-r;Z.rotlSH=qr;var Mr=(e,t,r)=>t<<r|e>>>32-r;Z.rotlSL=Mr;var Pr=(e,t,r)=>t<<r-32|e>>>64-r;Z.rotlBH=Pr;var Cr=(e,t,r)=>e<<r-32|t>>>64-r;Z.rotlBL=Cr;function Nr(e,t,r,n){let s=(t>>>0)+(n>>>0);return{h:e+r+(s/2**32|0)|0,l:s|0}}var Kr=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0);Z.add3L=Kr;var Ur=(e,t,r,n)=>t+r+n+(e/2**32|0)|0;Z.add3H=Ur;var Vr=(e,t,r,n)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0);Z.add4L=Vr;var jr=(e,t,r,n,s)=>t+r+n+s+(e/2**32|0)|0;Z.add4H=jr;var Dr=(e,t,r,n,s)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0)+(s>>>0);Z.add5L=Dr;var Zr=(e,t,r,n,s,o)=>t+r+n+s+o+(e/2**32|0)|0;Z.add5H=Zr;var Vo={fromBig:Bn,split:Er,toBig:vr,shrSH:Sr,shrSL:Ar,rotrSH:Ir,rotrSL:Hr,rotrBH:Or,rotrBL:Tr,rotr32H:Rr,rotr32L:Lr,rotlSH:qr,rotlSL:Mr,rotlBH:Pr,rotlBL:Cr,add:Nr,add3L:Kr,add3H:Ur,add4L:Vr,add4H:jr,add5H:Zr,add5L:Dr};Z.default=Vo});var Yt=ne(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.sha512_224=ee.sha512_256=ee.sha384=ee.sha512=ee.sha224=ee.sha256=ee.SHA512_256=ee.SHA512_224=ee.SHA384=ee.SHA512=ee.SHA224=ee.SHA256=void 0;var P=xr(),k=Yr(),ie=Ie(),jo=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ze=new Uint32Array(64),Bt=class extends P.HashMD{constructor(t=32){super(64,t,8,!1),this.A=P.SHA256_IV[0]|0,this.B=P.SHA256_IV[1]|0,this.C=P.SHA256_IV[2]|0,this.D=P.SHA256_IV[3]|0,this.E=P.SHA256_IV[4]|0,this.F=P.SHA256_IV[5]|0,this.G=P.SHA256_IV[6]|0,this.H=P.SHA256_IV[7]|0}get(){let{A:t,B:r,C:n,D:s,E:o,F:i,G:a,H:c}=this;return[t,r,n,s,o,i,a,c]}set(t,r,n,s,o,i,a,c){this.A=t|0,this.B=r|0,this.C=n|0,this.D=s|0,this.E=o|0,this.F=i|0,this.G=a|0,this.H=c|0}process(t,r){for(let h=0;h<16;h++,r+=4)Ze[h]=t.getUint32(r,!1);for(let h=16;h<64;h++){let u=Ze[h-15],l=Ze[h-2],y=(0,ie.rotr)(u,7)^(0,ie.rotr)(u,18)^u>>>3,B=(0,ie.rotr)(l,17)^(0,ie.rotr)(l,19)^l>>>10;Ze[h]=B+Ze[h-7]+y+Ze[h-16]|0}let{A:n,B:s,C:o,D:i,E:a,F:c,G:f,H:d}=this;for(let h=0;h<64;h++){let u=(0,ie.rotr)(a,6)^(0,ie.rotr)(a,11)^(0,ie.rotr)(a,25),l=d+u+(0,P.Chi)(a,c,f)+jo[h]+Ze[h]|0,B=((0,ie.rotr)(n,2)^(0,ie.rotr)(n,13)^(0,ie.rotr)(n,22))+(0,P.Maj)(n,s,o)|0;d=f,f=c,c=a,a=i+l|0,i=o,o=s,s=n,n=l+B|0}n=n+this.A|0,s=s+this.B|0,o=o+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,f=f+this.G|0,d=d+this.H|0,this.set(n,s,o,i,a,c,f,d)}roundClean(){(0,ie.clean)(Ze)}destroy(){this.set(0,0,0,0,0,0,0,0),(0,ie.clean)(this.buffer)}};ee.SHA256=Bt;var Vt=class extends Bt{constructor(){super(28),this.A=P.SHA224_IV[0]|0,this.B=P.SHA224_IV[1]|0,this.C=P.SHA224_IV[2]|0,this.D=P.SHA224_IV[3]|0,this.E=P.SHA224_IV[4]|0,this.F=P.SHA224_IV[5]|0,this.G=P.SHA224_IV[6]|0,this.H=P.SHA224_IV[7]|0}};ee.SHA224=Vt;var kr=k.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(e=>BigInt(e))),Do=kr[0],Zo=kr[1],Ye=new Uint32Array(80),ke=new Uint32Array(80),$e=class extends P.HashMD{constructor(t=64){super(128,t,16,!1),this.Ah=P.SHA512_IV[0]|0,this.Al=P.SHA512_IV[1]|0,this.Bh=P.SHA512_IV[2]|0,this.Bl=P.SHA512_IV[3]|0,this.Ch=P.SHA512_IV[4]|0,this.Cl=P.SHA512_IV[5]|0,this.Dh=P.SHA512_IV[6]|0,this.Dl=P.SHA512_IV[7]|0,this.Eh=P.SHA512_IV[8]|0,this.El=P.SHA512_IV[9]|0,this.Fh=P.SHA512_IV[10]|0,this.Fl=P.SHA512_IV[11]|0,this.Gh=P.SHA512_IV[12]|0,this.Gl=P.SHA512_IV[13]|0,this.Hh=P.SHA512_IV[14]|0,this.Hl=P.SHA512_IV[15]|0}get(){let{Ah:t,Al:r,Bh:n,Bl:s,Ch:o,Cl:i,Dh:a,Dl:c,Eh:f,El:d,Fh:h,Fl:u,Gh:l,Gl:y,Hh:B,Hl:x}=this;return[t,r,n,s,o,i,a,c,f,d,h,u,l,y,B,x]}set(t,r,n,s,o,i,a,c,f,d,h,u,l,y,B,x){this.Ah=t|0,this.Al=r|0,this.Bh=n|0,this.Bl=s|0,this.Ch=o|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=f|0,this.El=d|0,this.Fh=h|0,this.Fl=u|0,this.Gh=l|0,this.Gl=y|0,this.Hh=B|0,this.Hl=x|0}process(t,r){for(let g=0;g<16;g++,r+=4)Ye[g]=t.getUint32(r),ke[g]=t.getUint32(r+=4);for(let g=16;g<80;g++){let I=Ye[g-15]|0,N=ke[g-15]|0,Y=k.rotrSH(I,N,1)^k.rotrSH(I,N,8)^k.shrSH(I,N,7),X=k.rotrSL(I,N,1)^k.rotrSL(I,N,8)^k.shrSL(I,N,7),j=Ye[g-2]|0,_=ke[g-2]|0,R=k.rotrSH(j,_,19)^k.rotrBH(j,_,61)^k.shrSH(j,_,6),K=k.rotrSL(j,_,19)^k.rotrBL(j,_,61)^k.shrSL(j,_,6),L=k.add4L(X,K,ke[g-7],ke[g-16]),b=k.add4H(L,Y,R,Ye[g-7],Ye[g-16]);Ye[g]=b|0,ke[g]=L|0}let{Ah:n,Al:s,Bh:o,Bl:i,Ch:a,Cl:c,Dh:f,Dl:d,Eh:h,El:u,Fh:l,Fl:y,Gh:B,Gl:x,Hh:w,Hl:v}=this;for(let g=0;g<80;g++){let I=k.rotrSH(h,u,14)^k.rotrSH(h,u,18)^k.rotrBH(h,u,41),N=k.rotrSL(h,u,14)^k.rotrSL(h,u,18)^k.rotrBL(h,u,41),Y=h&l^~h&B,X=u&y^~u&x,j=k.add5L(v,N,X,Zo[g],ke[g]),_=k.add5H(j,w,I,Y,Do[g],Ye[g]),R=j|0,K=k.rotrSH(n,s,28)^k.rotrBH(n,s,34)^k.rotrBH(n,s,39),L=k.rotrSL(n,s,28)^k.rotrBL(n,s,34)^k.rotrBL(n,s,39),b=n&o^n&a^o&a,p=s&i^s&c^i&c;w=B|0,v=x|0,B=l|0,x=y|0,l=h|0,y=u|0,{h,l:u}=k.add(f|0,d|0,_|0,R|0),f=a|0,d=c|0,a=o|0,c=i|0,o=n|0,i=s|0;let m=k.add3L(R,L,p);n=k.add3H(m,_,K,b),s=m|0}({h:n,l:s}=k.add(this.Ah|0,this.Al|0,n|0,s|0)),{h:o,l:i}=k.add(this.Bh|0,this.Bl|0,o|0,i|0),{h:a,l:c}=k.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:f,l:d}=k.add(this.Dh|0,this.Dl|0,f|0,d|0),{h,l:u}=k.add(this.Eh|0,this.El|0,h|0,u|0),{h:l,l:y}=k.add(this.Fh|0,this.Fl|0,l|0,y|0),{h:B,l:x}=k.add(this.Gh|0,this.Gl|0,B|0,x|0),{h:w,l:v}=k.add(this.Hh|0,this.Hl|0,w|0,v|0),this.set(n,s,o,i,a,c,f,d,h,u,l,y,B,x,w,v)}roundClean(){(0,ie.clean)(Ye,ke)}destroy(){(0,ie.clean)(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};ee.SHA512=$e;var jt=class extends $e{constructor(){super(48),this.Ah=P.SHA384_IV[0]|0,this.Al=P.SHA384_IV[1]|0,this.Bh=P.SHA384_IV[2]|0,this.Bl=P.SHA384_IV[3]|0,this.Ch=P.SHA384_IV[4]|0,this.Cl=P.SHA384_IV[5]|0,this.Dh=P.SHA384_IV[6]|0,this.Dl=P.SHA384_IV[7]|0,this.Eh=P.SHA384_IV[8]|0,this.El=P.SHA384_IV[9]|0,this.Fh=P.SHA384_IV[10]|0,this.Fl=P.SHA384_IV[11]|0,this.Gh=P.SHA384_IV[12]|0,this.Gl=P.SHA384_IV[13]|0,this.Hh=P.SHA384_IV[14]|0,this.Hl=P.SHA384_IV[15]|0}};ee.SHA384=jt;var be=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),pe=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]),Dt=class extends $e{constructor(){super(28),this.Ah=be[0]|0,this.Al=be[1]|0,this.Bh=be[2]|0,this.Bl=be[3]|0,this.Ch=be[4]|0,this.Cl=be[5]|0,this.Dh=be[6]|0,this.Dl=be[7]|0,this.Eh=be[8]|0,this.El=be[9]|0,this.Fh=be[10]|0,this.Fl=be[11]|0,this.Gh=be[12]|0,this.Gl=be[13]|0,this.Hh=be[14]|0,this.Hl=be[15]|0}};ee.SHA512_224=Dt;var Zt=class extends $e{constructor(){super(32),this.Ah=pe[0]|0,this.Al=pe[1]|0,this.Bh=pe[2]|0,this.Bl=pe[3]|0,this.Ch=pe[4]|0,this.Cl=pe[5]|0,this.Dh=pe[6]|0,this.Dl=pe[7]|0,this.Eh=pe[8]|0,this.El=pe[9]|0,this.Fh=pe[10]|0,this.Fl=pe[11]|0,this.Gh=pe[12]|0,this.Gl=pe[13]|0,this.Hh=pe[14]|0,this.Hl=pe[15]|0}};ee.SHA512_256=Zt;ee.sha256=(0,ie.createHasher)(()=>new Bt);ee.sha224=(0,ie.createHasher)(()=>new Vt);ee.sha512=(0,ie.createHasher)(()=>new $e);ee.sha384=(0,ie.createHasher)(()=>new jt);ee.sha512_256=(0,ie.createHasher)(()=>new Zt);ee.sha512_224=(0,ie.createHasher)(()=>new Dt)});var xn=ne(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.hmac=Je.HMAC=void 0;var Qe=Ie(),xt=class extends Qe.Hash{constructor(t,r){super(),this.finished=!1,this.destroyed=!1,(0,Qe.ahash)(t);let n=(0,Qe.toBytes)(r);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let s=this.blockLen,o=new Uint8Array(s);o.set(n.length>s?t.create().update(n).digest():n);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=t.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),(0,Qe.clean)(o)}update(t){return(0,Qe.aexists)(this),this.iHash.update(t),this}digestInto(t){(0,Qe.aexists)(this),(0,Qe.abytes)(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:r,iHash:n,finished:s,destroyed:o,blockLen:i,outputLen:a}=this;return t=t,t.finished=s,t.destroyed=o,t.blockLen=i,t.outputLen=a,t.oHash=r._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}};Je.HMAC=xt;var Yo=(e,t,r)=>new xt(e,t).update(r).digest();Je.hmac=Yo;Je.hmac.create=(e,t)=>new xt(e,t)});var Ke=ne(U=>{"use strict";Object.defineProperty(U,"__esModule",{value:!0});U.notImplemented=U.bitMask=U.utf8ToBytes=U.randomBytes=U.isBytes=U.hexToBytes=U.concatBytes=U.bytesToUtf8=U.bytesToHex=U.anumber=U.abytes=void 0;U.abool=ko;U._abool2=Xo;U._abytes2=Go;U.numberToHexUnpadded=Xr;U.hexToNumber=vn;U.bytesToNumberBE=Fo;U.bytesToNumberLE=zo;U.numberToBytesBE=Gr;U.numberToBytesLE=Wo;U.numberToVarBytesBE=$o;U.ensureBytes=Qo;U.equalBytes=Jo;U.copyBytes=ei;U.asciiToBytes=ti;U.inRange=Fr;U.aInRange=ni;U.bitLen=ri;U.bitGet=si;U.bitSet=oi;U.createHmacDrbg=ci;U.validateObject=fi;U.isHash=ui;U._validateObject=di;U.memoized=hi;var Oe=Ie(),Ne=Ie();Object.defineProperty(U,"abytes",{enumerable:!0,get:function(){return Ne.abytes}});Object.defineProperty(U,"anumber",{enumerable:!0,get:function(){return Ne.anumber}});Object.defineProperty(U,"bytesToHex",{enumerable:!0,get:function(){return Ne.bytesToHex}});Object.defineProperty(U,"bytesToUtf8",{enumerable:!0,get:function(){return Ne.bytesToUtf8}});Object.defineProperty(U,"concatBytes",{enumerable:!0,get:function(){return Ne.concatBytes}});Object.defineProperty(U,"hexToBytes",{enumerable:!0,get:function(){return Ne.hexToBytes}});Object.defineProperty(U,"isBytes",{enumerable:!0,get:function(){return Ne.isBytes}});Object.defineProperty(U,"randomBytes",{enumerable:!0,get:function(){return Ne.randomBytes}});Object.defineProperty(U,"utf8ToBytes",{enumerable:!0,get:function(){return Ne.utf8ToBytes}});var kt=BigInt(0),Et=BigInt(1);function ko(e,t){if(typeof t!="boolean")throw new Error(e+" boolean expected, got "+t)}function Xo(e,t=""){if(typeof e!="boolean"){let r=t&&`"${t}"`;throw new Error(r+"expected boolean, got type="+typeof e)}return e}function Go(e,t,r=""){let n=(0,Oe.isBytes)(e),s=e?.length,o=t!==void 0;if(!n||o&&s!==t){let i=r&&`"${r}" `,a=o?` of length ${t}`:"",c=n?`length=${s}`:`type=${typeof e}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return e}function Xr(e){let t=e.toString(16);return t.length&1?"0"+t:t}function vn(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);return e===""?kt:BigInt("0x"+e)}function Fo(e){return vn((0,Oe.bytesToHex)(e))}function zo(e){return(0,Oe.abytes)(e),vn((0,Oe.bytesToHex)(Uint8Array.from(e).reverse()))}function Gr(e,t){return(0,Oe.hexToBytes)(e.toString(16).padStart(t*2,"0"))}function Wo(e,t){return Gr(e,t).reverse()}function $o(e){return(0,Oe.hexToBytes)(Xr(e))}function Qo(e,t,r){let n;if(typeof t=="string")try{n=(0,Oe.hexToBytes)(t)}catch(o){throw new Error(e+" must be hex string or Uint8Array, cause: "+o)}else if((0,Oe.isBytes)(t))n=Uint8Array.from(t);else throw new Error(e+" must be hex string or Uint8Array");let s=n.length;if(typeof r=="number"&&s!==r)throw new Error(e+" of length "+r+" expected, got "+s);return n}function Jo(e,t){if(e.length!==t.length)return!1;let r=0;for(let n=0;n<e.length;n++)r|=e[n]^t[n];return r===0}function ei(e){return Uint8Array.from(e)}function ti(e){return Uint8Array.from(e,(t,r)=>{let n=t.charCodeAt(0);if(t.length!==1||n>127)throw new Error(`string contains non-ASCII character "${e[r]}" with code ${n} at position ${r}`);return n})}var En=e=>typeof e=="bigint"&&kt<=e;function Fr(e,t,r){return En(e)&&En(t)&&En(r)&&t<=e&&e<r}function ni(e,t,r,n){if(!Fr(t,r,n))throw new Error("expected valid "+e+": "+r+" <= n < "+n+", got "+t)}function ri(e){let t;for(t=0;e>kt;e>>=Et,t+=1);return t}function si(e,t){return e>>BigInt(t)&Et}function oi(e,t,r){return e|(r?Et:kt)<<BigInt(t)}var ii=e=>(Et<<BigInt(e))-Et;U.bitMask=ii;function ci(e,t,r){if(typeof e!="number"||e<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof r!="function")throw new Error("hmacFn must be a function");let n=l=>new Uint8Array(l),s=l=>Uint8Array.of(l),o=n(e),i=n(e),a=0,c=()=>{o.fill(1),i.fill(0),a=0},f=(...l)=>r(i,o,...l),d=(l=n(0))=>{i=f(s(0),l),o=f(),l.length!==0&&(i=f(s(1),l),o=f())},h=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let l=0,y=[];for(;l<t;){o=f();let B=o.slice();y.push(B),l+=o.length}return(0,Oe.concatBytes)(...y)};return(l,y)=>{c(),d(l);let B;for(;!(B=y(h()));)d();return c(),B}}var ai={bigint:e=>typeof e=="bigint",function:e=>typeof e=="function",boolean:e=>typeof e=="boolean",string:e=>typeof e=="string",stringOrUint8Array:e=>typeof e=="string"||(0,Oe.isBytes)(e),isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>typeof e=="function"&&Number.isSafeInteger(e.outputLen)};function fi(e,t,r={}){let n=(s,o,i)=>{let a=ai[o];if(typeof a!="function")throw new Error("invalid validator function");let c=e[s];if(!(i&&c===void 0)&&!a(c,e))throw new Error("param "+String(s)+" is invalid. Expected "+o+", got "+c)};for(let[s,o]of Object.entries(t))n(s,o,!1);for(let[s,o]of Object.entries(r))n(s,o,!0);return e}function ui(e){return typeof e=="function"&&Number.isSafeInteger(e.outputLen)}function di(e,t,r={}){if(!e||typeof e!="object")throw new Error("expected valid options object");function n(s,o,i){let a=e[s];if(i&&a===void 0)return;let c=typeof a;if(c!==o||a===null)throw new Error(`param "${s}" is invalid: expected ${o}, got ${c}`)}Object.entries(t).forEach(([s,o])=>n(s,o,!1)),Object.entries(r).forEach(([s,o])=>n(s,o,!0))}var li=()=>{throw new Error("not implemented")};U.notImplemented=li;function hi(e){let t=new WeakMap;return(r,...n)=>{let s=t.get(r);if(s!==void 0)return s;let o=e(r,...n);return t.set(r,o),o}}});var Xe=ne(se=>{"use strict";Object.defineProperty(se,"__esModule",{value:!0});se.isNegativeLE=void 0;se.mod=_e;se.pow=pi;se.pow2=mi;se.invert=Xt;se.tonelliShanks=An;se.FpSqrt=ts;se.validateField=xi;se.FpPow=In;se.FpInvertBatch=ns;se.FpDiv=Ei;se.FpLegendre=Gt;se.FpIsSquare=vi;se.nLength=Hn;se.Field=Ft;se.FpSqrtOdd=Si;se.FpSqrtEven=Ai;se.hashToPrivateScalar=Ii;se.getFieldBytesLength=On;se.getMinHashLength=rs;se.mapHashToField=Hi;var Be=Ke(),ge=BigInt(0),ce=BigInt(1),et=BigInt(2),zr=BigInt(3),Wr=BigInt(4),$r=BigInt(5),yi=BigInt(7),Qr=BigInt(8),bi=BigInt(9),Jr=BigInt(16);function _e(e,t){let r=e%t;return r>=ge?r:t+r}function pi(e,t,r){return In(Ft(r),e,t)}function mi(e,t,r){let n=e;for(;t-- >ge;)n*=n,n%=r;return n}function Xt(e,t){if(e===ge)throw new Error("invert: expected non-zero number");if(t<=ge)throw new Error("invert: expected positive modulus, got "+t);let r=_e(e,t),n=t,s=ge,o=ce,i=ce,a=ge;for(;r!==ge;){let f=n/r,d=n%r,h=s-i*f,u=o-a*f;n=r,r=d,s=i,o=a,i=h,a=u}if(n!==ce)throw new Error("invert: does not exist");return _e(s,t)}function Sn(e,t,r){if(!e.eql(e.sqr(t),r))throw new Error("Cannot find square root")}function es(e,t){let r=(e.ORDER+ce)/Wr,n=e.pow(t,r);return Sn(e,n,t),n}function gi(e,t){let r=(e.ORDER-$r)/Qr,n=e.mul(t,et),s=e.pow(n,r),o=e.mul(t,s),i=e.mul(e.mul(o,et),s),a=e.mul(o,e.sub(i,e.ONE));return Sn(e,a,t),a}function wi(e){let t=Ft(e),r=An(e),n=r(t,t.neg(t.ONE)),s=r(t,n),o=r(t,t.neg(n)),i=(e+yi)/Jr;return(a,c)=>{let f=a.pow(c,i),d=a.mul(f,n),h=a.mul(f,s),u=a.mul(f,o),l=a.eql(a.sqr(d),c),y=a.eql(a.sqr(h),c);f=a.cmov(f,d,l),d=a.cmov(u,h,y);let B=a.eql(a.sqr(d),c),x=a.cmov(f,d,B);return Sn(a,x,c),x}}function An(e){if(e<zr)throw new Error("sqrt is not defined for small field");let t=e-ce,r=0;for(;t%et===ge;)t/=et,r++;let n=et,s=Ft(e);for(;Gt(s,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return es;let o=s.pow(n,t),i=(t+ce)/et;return function(c,f){if(c.is0(f))return f;if(Gt(c,f)!==1)throw new Error("Cannot find square root");let d=r,h=c.mul(c.ONE,o),u=c.pow(f,t),l=c.pow(f,i);for(;!c.eql(u,c.ONE);){if(c.is0(u))return c.ZERO;let y=1,B=c.sqr(u);for(;!c.eql(B,c.ONE);)if(y++,B=c.sqr(B),y===d)throw new Error("Cannot find square root");let x=ce<<BigInt(d-y-1),w=c.pow(h,x);d=y,h=c.sqr(w),u=c.mul(u,h),l=c.mul(l,w)}return l}}function ts(e){return e%Wr===zr?es:e%Qr===$r?gi:e%Jr===bi?wi(e):An(e)}var _i=(e,t)=>(_e(e,t)&ce)===ce;se.isNegativeLE=_i;var Bi=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function xi(e){let t={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},r=Bi.reduce((n,s)=>(n[s]="function",n),t);return(0,Be._validateObject)(e,r),e}function In(e,t,r){if(r<ge)throw new Error("invalid exponent, negatives unsupported");if(r===ge)return e.ONE;if(r===ce)return t;let n=e.ONE,s=t;for(;r>ge;)r&ce&&(n=e.mul(n,s)),s=e.sqr(s),r>>=ce;return n}function ns(e,t,r=!1){let n=new Array(t.length).fill(r?e.ZERO:void 0),s=t.reduce((i,a,c)=>e.is0(a)?i:(n[c]=i,e.mul(i,a)),e.ONE),o=e.inv(s);return t.reduceRight((i,a,c)=>e.is0(a)?i:(n[c]=e.mul(i,n[c]),e.mul(i,a)),o),n}function Ei(e,t,r){return e.mul(t,typeof r=="bigint"?Xt(r,e.ORDER):e.inv(r))}function Gt(e,t){let r=(e.ORDER-ce)/et,n=e.pow(t,r),s=e.eql(n,e.ONE),o=e.eql(n,e.ZERO),i=e.eql(n,e.neg(e.ONE));if(!s&&!o&&!i)throw new Error("invalid Legendre symbol result");return s?1:o?0:-1}function vi(e,t){return Gt(e,t)===1}function Hn(e,t){t!==void 0&&(0,Be.anumber)(t);let r=t!==void 0?t:e.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}function Ft(e,t,r=!1,n={}){if(e<=ge)throw new Error("invalid field: expected ORDER > 0, got "+e);let s,o,i=!1,a;if(typeof t=="object"&&t!=null){if(n.sqrt||r)throw new Error("cannot specify opts in two arguments");let u=t;u.BITS&&(s=u.BITS),u.sqrt&&(o=u.sqrt),typeof u.isLE=="boolean"&&(r=u.isLE),typeof u.modFromBytes=="boolean"&&(i=u.modFromBytes),a=u.allowedLengths}else typeof t=="number"&&(s=t),n.sqrt&&(o=n.sqrt);let{nBitLength:c,nByteLength:f}=Hn(e,s);if(f>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d,h=Object.freeze({ORDER:e,isLE:r,BITS:c,BYTES:f,MASK:(0,Be.bitMask)(c),ZERO:ge,ONE:ce,allowedLengths:a,create:u=>_e(u,e),isValid:u=>{if(typeof u!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof u);return ge<=u&&u<e},is0:u=>u===ge,isValidNot0:u=>!h.is0(u)&&h.isValid(u),isOdd:u=>(u&ce)===ce,neg:u=>_e(-u,e),eql:(u,l)=>u===l,sqr:u=>_e(u*u,e),add:(u,l)=>_e(u+l,e),sub:(u,l)=>_e(u-l,e),mul:(u,l)=>_e(u*l,e),pow:(u,l)=>In(h,u,l),div:(u,l)=>_e(u*Xt(l,e),e),sqrN:u=>u*u,addN:(u,l)=>u+l,subN:(u,l)=>u-l,mulN:(u,l)=>u*l,inv:u=>Xt(u,e),sqrt:o||(u=>(d||(d=ts(e)),d(h,u))),toBytes:u=>r?(0,Be.numberToBytesLE)(u,f):(0,Be.numberToBytesBE)(u,f),fromBytes:(u,l=!0)=>{if(a){if(!a.includes(u.length)||u.length>f)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+u.length);let B=new Uint8Array(f);B.set(u,r?0:B.length-u.length),u=B}if(u.length!==f)throw new Error("Field.fromBytes: expected "+f+" bytes, got "+u.length);let y=r?(0,Be.bytesToNumberLE)(u):(0,Be.bytesToNumberBE)(u);if(i&&(y=_e(y,e)),!l&&!h.isValid(y))throw new Error("invalid field element: outside of range 0..ORDER");return y},invertBatch:u=>ns(h,u),cmov:(u,l,y)=>y?l:u});return Object.freeze(h)}function Si(e,t){if(!e.isOdd)throw new Error("Field doesn't have isOdd");let r=e.sqrt(t);return e.isOdd(r)?r:e.neg(r)}function Ai(e,t){if(!e.isOdd)throw new Error("Field doesn't have isOdd");let r=e.sqrt(t);return e.isOdd(r)?e.neg(r):r}function Ii(e,t,r=!1){e=(0,Be.ensureBytes)("privateHash",e);let n=e.length,s=Hn(t).nByteLength+8;if(s<24||n<s||n>1024)throw new Error("hashToPrivateScalar: expected "+s+"-1024 bytes of input, got "+n);let o=r?(0,Be.bytesToNumberLE)(e):(0,Be.bytesToNumberBE)(e);return _e(o,t-ce)+ce}function On(e){if(typeof e!="bigint")throw new Error("field order must be bigint");let t=e.toString(2).length;return Math.ceil(t/8)}function rs(e){let t=On(e);return t+Math.ceil(t/2)}function Hi(e,t,r=!1){let n=e.length,s=On(t),o=rs(t);if(n<16||n<o||n>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+n);let i=r?(0,Be.bytesToNumberLE)(e):(0,Be.bytesToNumberBE)(e),a=_e(i,t-ce)+ce;return r?(0,Be.numberToBytesLE)(a,s):(0,Be.numberToBytesBE)(a,s)}});var zt=ne(ve=>{"use strict";Object.defineProperty(ve,"__esModule",{value:!0});ve.wNAF=void 0;ve.negateCt=qn;ve.normalizeZ=Oi;ve.mulEndoUnsafe=Ti;ve.pippenger=Ri;ve.precomputeMSMUnsafe=Li;ve.validateBasic=qi;ve._createCurveFields=Mi;var vt=Ke(),St=Xe(),ft=BigInt(0),tt=BigInt(1);function qn(e,t){let r=t.negate();return e?r:t}function Oi(e,t){let r=(0,St.FpInvertBatch)(e.Fp,t.map(n=>n.Z));return t.map((n,s)=>e.fromAffine(n.toAffine(r[s])))}function Pn(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+e)}function Tn(e,t){Pn(e,t);let r=Math.ceil(t/e)+1,n=2**(e-1),s=2**e,o=(0,vt.bitMask)(e),i=BigInt(e);return{windows:r,windowSize:n,mask:o,maxNumber:s,shiftBy:i}}function ss(e,t,r){let{windowSize:n,mask:s,maxNumber:o,shiftBy:i}=r,a=Number(e&s),c=e>>i;a>n&&(a-=o,c+=tt);let f=t*n,d=f+Math.abs(a)-1,h=a===0,u=a<0,l=t%2!==0;return{nextN:c,offset:d,isZero:h,isNeg:u,isNegF:l,offsetF:f}}function cs(e,t){if(!Array.isArray(e))throw new Error("array expected");e.forEach((r,n)=>{if(!(r instanceof t))throw new Error("invalid point at index "+n)})}function as(e,t){if(!Array.isArray(e))throw new Error("array of scalars expected");e.forEach((r,n)=>{if(!t.isValid(r))throw new Error("invalid scalar at index "+n)})}var Rn=new WeakMap,fs=new WeakMap;function Ln(e){return fs.get(e)||1}function os(e){if(e!==ft)throw new Error("invalid wNAF")}var Mn=class{constructor(t,r){this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=r}_unsafeLadder(t,r,n=this.ZERO){let s=t;for(;r>ft;)r&tt&&(n=n.add(s)),s=s.double(),r>>=tt;return n}precomputeWindow(t,r){let{windows:n,windowSize:s}=Tn(r,this.bits),o=[],i=t,a=i;for(let c=0;c<n;c++){a=i,o.push(a);for(let f=1;f<s;f++)a=a.add(i),o.push(a);i=a.double()}return o}wNAF(t,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let s=this.ZERO,o=this.BASE,i=Tn(t,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:f,isZero:d,isNeg:h,isNegF:u,offsetF:l}=ss(n,a,i);n=c,d?o=o.add(qn(u,r[l])):s=s.add(qn(h,r[f]))}return os(n),{p:s,f:o}}wNAFUnsafe(t,r,n,s=this.ZERO){let o=Tn(t,this.bits);for(let i=0;i<o.windows&&n!==ft;i++){let{nextN:a,offset:c,isZero:f,isNeg:d}=ss(n,i,o);if(n=a,!f){let h=r[c];s=s.add(d?h.negate():h)}}return os(n),s}getPrecomputes(t,r,n){let s=Rn.get(r);return s||(s=this.precomputeWindow(r,t),t!==1&&(typeof n=="function"&&(s=n(s)),Rn.set(r,s))),s}cached(t,r,n){let s=Ln(t);return this.wNAF(s,this.getPrecomputes(s,t,n),r)}unsafe(t,r,n,s){let o=Ln(t);return o===1?this._unsafeLadder(t,r,s):this.wNAFUnsafe(o,this.getPrecomputes(o,t,n),r,s)}createCache(t,r){Pn(r,this.bits),fs.set(t,r),Rn.delete(t)}hasCache(t){return Ln(t)!==1}};ve.wNAF=Mn;function Ti(e,t,r,n){let s=t,o=e.ZERO,i=e.ZERO;for(;r>ft||n>ft;)r&tt&&(o=o.add(s)),n&tt&&(i=i.add(s)),s=s.double(),r>>=tt,n>>=tt;return{p1:o,p2:i}}function Ri(e,t,r,n){cs(r,e),as(n,t);let s=r.length,o=n.length;if(s!==o)throw new Error("arrays of points and scalars must have equal length");let i=e.ZERO,a=(0,vt.bitLen)(BigInt(s)),c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);let f=(0,vt.bitMask)(c),d=new Array(Number(f)+1).fill(i),h=Math.floor((t.BITS-1)/c)*c,u=i;for(let l=h;l>=0;l-=c){d.fill(i);for(let B=0;B<o;B++){let x=n[B],w=Number(x>>BigInt(l)&f);d[w]=d[w].add(r[B])}let y=i;for(let B=d.length-1,x=i;B>0;B--)x=x.add(d[B]),y=y.add(x);if(u=u.add(y),l!==0)for(let B=0;B<c;B++)u=u.double()}return u}function Li(e,t,r,n){Pn(n,t.BITS),cs(r,e);let s=e.ZERO,o=2**n-1,i=Math.ceil(t.BITS/n),a=(0,vt.bitMask)(n),c=r.map(f=>{let d=[];for(let h=0,u=f;h<o;h++)d.push(u),u=u.add(f);return d});return f=>{if(as(f,t),f.length>r.length)throw new Error("array of scalars must be smaller than array of points");let d=s;for(let h=0;h<i;h++){if(d!==s)for(let l=0;l<n;l++)d=d.double();let u=BigInt(i*n-(h+1)*n);for(let l=0;l<f.length;l++){let y=f[l],B=Number(y>>u&a);B&&(d=d.add(c[l][B-1]))}}return d}}function qi(e){return(0,St.validateField)(e.Fp),(0,vt.validateObject)(e,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...(0,St.nLength)(e.n,e.nBitLength),...e,p:e.Fp.ORDER})}function is(e,t,r){if(t){if(t.ORDER!==e)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return(0,St.validateField)(t),t}else return(0,St.Field)(e,{isLE:r})}function Mi(e,t,r={},n){if(n===void 0&&(n=e==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${e} CURVE object`);for(let c of["p","n","h"]){let f=t[c];if(!(typeof f=="bigint"&&f>ft))throw new Error(`CURVE.${c} must be positive bigint`)}let s=is(t.p,r.Fp,n),o=is(t.n,r.Fn,n),a=["Gx","Gy","a",e==="weierstrass"?"b":"d"];for(let c of a)if(!s.isValid(t[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:s,Fn:o}}});var Vn=ne(re=>{"use strict";Object.defineProperty(re,"__esModule",{value:!0});re.DER=re.DERErr=void 0;re._splitEndoScalar=ds;re._normFnElement=Ge;re.weierstrassN=Un;re.SWUFpSqrtRatio=hs;re.mapToCurveSimpleSWU=Ni;re.ecdh=bs;re.ecdsa=ps;re.weierstrassPoints=Ki;re._legacyHelperEquat=gs;re.weierstrass=Di;var Pi=xn(),Ci=Ie(),q=Ke(),Ue=zt(),dt=Xe(),us=(e,t)=>(e+(e>=0?t:-t)/Te)/t;function ds(e,t,r){let[[n,s],[o,i]]=t,a=us(i*e,r),c=us(-s*e,r),f=e-a*n-c*o,d=-a*s-c*i,h=f<Se,u=d<Se;h&&(f=-f),u&&(d=-d);let l=(0,q.bitMask)(Math.ceil((0,q.bitLen)(r)/2))+de;if(f<Se||f>=l||d<Se||d>=l)throw new Error("splitScalar (endomorphism): failed, k="+e);return{k1neg:h,k1:f,k2neg:u,k2:d}}function Nn(e){if(!["compact","recovered","der"].includes(e))throw new Error('Signature format must be "compact", "recovered", or "der"');return e}function Cn(e,t){let r={};for(let n of Object.keys(t))r[n]=e[n]===void 0?t[n]:e[n];return(0,q._abool2)(r.lowS,"lowS"),(0,q._abool2)(r.prehash,"prehash"),r.format!==void 0&&Nn(r.format),r}var Wt=class extends Error{constructor(t=""){super(t)}};re.DERErr=Wt;re.DER={Err:Wt,_tlv:{encode:(e,t)=>{let{Err:r}=re.DER;if(e<0||e>256)throw new r("tlv.encode: wrong tag");if(t.length&1)throw new r("tlv.encode: unpadded data");let n=t.length/2,s=(0,q.numberToHexUnpadded)(n);if(s.length/2&128)throw new r("tlv.encode: long form length too big");let o=n>127?(0,q.numberToHexUnpadded)(s.length/2|128):"";return(0,q.numberToHexUnpadded)(e)+o+s+t},decode(e,t){let{Err:r}=re.DER,n=0;if(e<0||e>256)throw new r("tlv.encode: wrong tag");if(t.length<2||t[n++]!==e)throw new r("tlv.decode: wrong tlv");let s=t[n++],o=!!(s&128),i=0;if(!o)i=s;else{let c=s&127;if(!c)throw new r("tlv.decode(long): indefinite length not supported");if(c>4)throw new r("tlv.decode(long): byte length is too big");let f=t.subarray(n,n+c);if(f.length!==c)throw new r("tlv.decode: length bytes not complete");if(f[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(let d of f)i=i<<8|d;if(n+=c,i<128)throw new r("tlv.decode(long): not minimal encoding")}let a=t.subarray(n,n+i);if(a.length!==i)throw new r("tlv.decode: wrong value length");return{v:a,l:t.subarray(n+i)}}},_int:{encode(e){let{Err:t}=re.DER;if(e<Se)throw new t("integer: negative integers are not allowed");let r=(0,q.numberToHexUnpadded)(e);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new t("unexpected DER parsing assertion: unpadded hex");return r},decode(e){let{Err:t}=re.DER;if(e[0]&128)throw new t("invalid signature integer: negative");if(e[0]===0&&!(e[1]&128))throw new t("invalid signature integer: unnecessary leading zero");return(0,q.bytesToNumberBE)(e)}},toSig(e){let{Err:t,_int:r,_tlv:n}=re.DER,s=(0,q.ensureBytes)("signature",e),{v:o,l:i}=n.decode(48,s);if(i.length)throw new t("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,o),{v:f,l:d}=n.decode(2,c);if(d.length)throw new t("invalid signature: left bytes after parsing");return{r:r.decode(a),s:r.decode(f)}},hexFromSig(e){let{_tlv:t,_int:r}=re.DER,n=t.encode(2,r.encode(e.r)),s=t.encode(2,r.encode(e.s)),o=n+s;return t.encode(48,o)}};var Se=BigInt(0),de=BigInt(1),Te=BigInt(2),ut=BigInt(3),Kn=BigInt(4);function Ge(e,t){let{BYTES:r}=e,n;if(typeof t=="bigint")n=t;else{let s=(0,q.ensureBytes)("private key",t);try{n=e.fromBytes(s)}catch{throw new Error(`invalid private key: expected ui8a of size ${r}, got ${typeof t}`)}}if(!e.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function Un(e,t={}){let r=(0,Ue._createCurveFields)("weierstrass",e,t),{Fp:n,Fn:s}=r,o=r.CURVE,{h:i,n:a}=o;(0,q._validateObject)(t,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:c}=t;if(c&&(!n.is0(o.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let f=ys(n,s);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function h(L,b,p){let{x:m,y:E}=b.toAffine(),A=n.toBytes(m);if((0,q._abool2)(p,"isCompressed"),p){d();let T=!n.isOdd(E);return(0,q.concatBytes)(ls(T),A)}else return(0,q.concatBytes)(Uint8Array.of(4),A,n.toBytes(E))}function u(L){(0,q._abytes2)(L,void 0,"Point");let{publicKey:b,publicKeyUncompressed:p}=f,m=L.length,E=L[0],A=L.subarray(1);if(m===b&&(E===2||E===3)){let T=n.fromBytes(A);if(!n.isValid(T))throw new Error("bad point: is not on curve, wrong x");let H=B(T),O;try{O=n.sqrt(H)}catch(Q){let $=Q instanceof Error?": "+Q.message:"";throw new Error("bad point: is not on curve, sqrt error"+$)}d();let M=n.isOdd(O);return(E&1)===1!==M&&(O=n.neg(O)),{x:T,y:O}}else if(m===p&&E===4){let T=n.BYTES,H=n.fromBytes(A.subarray(0,T)),O=n.fromBytes(A.subarray(T,T*2));if(!x(H,O))throw new Error("bad point: is not on curve");return{x:H,y:O}}else throw new Error(`bad point: got length ${m}, expected compressed=${b} or uncompressed=${p}`)}let l=t.toBytes||h,y=t.fromBytes||u;function B(L){let b=n.sqr(L),p=n.mul(b,L);return n.add(n.add(p,n.mul(L,o.a)),o.b)}function x(L,b){let p=n.sqr(b),m=B(L);return n.eql(p,m)}if(!x(o.Gx,o.Gy))throw new Error("bad curve params: generator point");let w=n.mul(n.pow(o.a,ut),Kn),v=n.mul(n.sqr(o.b),BigInt(27));if(n.is0(n.add(w,v)))throw new Error("bad curve params: a or b");function g(L,b,p=!1){if(!n.isValid(b)||p&&n.is0(b))throw new Error(`bad point coordinate ${L}`);return b}function I(L){if(!(L instanceof _))throw new Error("ProjectivePoint expected")}function N(L){if(!c||!c.basises)throw new Error("no endo");return ds(L,c.basises,s.ORDER)}let Y=(0,q.memoized)((L,b)=>{let{X:p,Y:m,Z:E}=L;if(n.eql(E,n.ONE))return{x:p,y:m};let A=L.is0();b==null&&(b=A?n.ONE:n.inv(E));let T=n.mul(p,b),H=n.mul(m,b),O=n.mul(E,b);if(A)return{x:n.ZERO,y:n.ZERO};if(!n.eql(O,n.ONE))throw new Error("invZ was invalid");return{x:T,y:H}}),X=(0,q.memoized)(L=>{if(L.is0()){if(t.allowInfinityPoint&&!n.is0(L.Y))return;throw new Error("bad point: ZERO")}let{x:b,y:p}=L.toAffine();if(!n.isValid(b)||!n.isValid(p))throw new Error("bad point: x or y not field elements");if(!x(b,p))throw new Error("bad point: equation left != right");if(!L.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function j(L,b,p,m,E){return p=new _(n.mul(p.X,L),p.Y,p.Z),b=(0,Ue.negateCt)(m,b),p=(0,Ue.negateCt)(E,p),b.add(p)}class _{constructor(b,p,m){this.X=g("x",b),this.Y=g("y",p,!0),this.Z=g("z",m),Object.freeze(this)}static CURVE(){return o}static fromAffine(b){let{x:p,y:m}=b||{};if(!b||!n.isValid(p)||!n.isValid(m))throw new Error("invalid affine point");if(b instanceof _)throw new Error("projective point not allowed");return n.is0(p)&&n.is0(m)?_.ZERO:new _(p,m,n.ONE)}static fromBytes(b){let p=_.fromAffine(y((0,q._abytes2)(b,void 0,"point")));return p.assertValidity(),p}static fromHex(b){return _.fromBytes((0,q.ensureBytes)("pointHex",b))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(b=8,p=!0){return K.createCache(this,b),p||this.multiply(ut),this}assertValidity(){X(this)}hasEvenY(){let{y:b}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(b)}equals(b){I(b);let{X:p,Y:m,Z:E}=this,{X:A,Y:T,Z:H}=b,O=n.eql(n.mul(p,H),n.mul(A,E)),M=n.eql(n.mul(m,H),n.mul(T,E));return O&&M}negate(){return new _(this.X,n.neg(this.Y),this.Z)}double(){let{a:b,b:p}=o,m=n.mul(p,ut),{X:E,Y:A,Z:T}=this,H=n.ZERO,O=n.ZERO,M=n.ZERO,D=n.mul(E,E),Q=n.mul(A,A),$=n.mul(T,T),G=n.mul(E,A);return G=n.add(G,G),M=n.mul(E,T),M=n.add(M,M),H=n.mul(b,M),O=n.mul(m,$),O=n.add(H,O),H=n.sub(Q,O),O=n.add(Q,O),O=n.mul(H,O),H=n.mul(G,H),M=n.mul(m,M),$=n.mul(b,$),G=n.sub(D,$),G=n.mul(b,G),G=n.add(G,M),M=n.add(D,D),D=n.add(M,D),D=n.add(D,$),D=n.mul(D,G),O=n.add(O,D),$=n.mul(A,T),$=n.add($,$),D=n.mul($,G),H=n.sub(H,D),M=n.mul($,Q),M=n.add(M,M),M=n.add(M,M),new _(H,O,M)}add(b){I(b);let{X:p,Y:m,Z:E}=this,{X:A,Y:T,Z:H}=b,O=n.ZERO,M=n.ZERO,D=n.ZERO,Q=o.a,$=n.mul(o.b,ut),G=n.mul(p,A),J=n.mul(m,T),oe=n.mul(E,H),ue=n.add(p,m),te=n.add(A,T);ue=n.mul(ue,te),te=n.add(G,J),ue=n.sub(ue,te),te=n.add(p,E);let ae=n.add(A,H);return te=n.mul(te,ae),ae=n.add(G,oe),te=n.sub(te,ae),ae=n.add(m,E),O=n.add(T,H),ae=n.mul(ae,O),O=n.add(J,oe),ae=n.sub(ae,O),D=n.mul(Q,te),O=n.mul($,oe),D=n.add(O,D),O=n.sub(J,D),D=n.add(J,D),M=n.mul(O,D),J=n.add(G,G),J=n.add(J,G),oe=n.mul(Q,oe),te=n.mul($,te),J=n.add(J,oe),oe=n.sub(G,oe),oe=n.mul(Q,oe),te=n.add(te,oe),G=n.mul(J,te),M=n.add(M,G),G=n.mul(ae,te),O=n.mul(ue,O),O=n.sub(O,G),G=n.mul(ue,J),D=n.mul(ae,D),D=n.add(D,G),new _(O,M,D)}subtract(b){return this.add(b.negate())}is0(){return this.equals(_.ZERO)}multiply(b){let{endo:p}=t;if(!s.isValidNot0(b))throw new Error("invalid scalar: out of range");let m,E,A=T=>K.cached(this,T,H=>(0,Ue.normalizeZ)(_,H));if(p){let{k1neg:T,k1:H,k2neg:O,k2:M}=N(b),{p:D,f:Q}=A(H),{p:$,f:G}=A(M);E=Q.add(G),m=j(p.beta,D,$,T,O)}else{let{p:T,f:H}=A(b);m=T,E=H}return(0,Ue.normalizeZ)(_,[m,E])[0]}multiplyUnsafe(b){let{endo:p}=t,m=this;if(!s.isValid(b))throw new Error("invalid scalar: out of range");if(b===Se||m.is0())return _.ZERO;if(b===de)return m;if(K.hasCache(this))return this.multiply(b);if(p){let{k1neg:E,k1:A,k2neg:T,k2:H}=N(b),{p1:O,p2:M}=(0,Ue.mulEndoUnsafe)(_,m,A,H);return j(p.beta,O,M,E,T)}else return K.unsafe(m,b)}multiplyAndAddUnsafe(b,p,m){let E=this.multiplyUnsafe(p).add(b.multiplyUnsafe(m));return E.is0()?void 0:E}toAffine(b){return Y(this,b)}isTorsionFree(){let{isTorsionFree:b}=t;return i===de?!0:b?b(_,this):K.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:b}=t;return i===de?this:b?b(_,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(b=!0){return(0,q._abool2)(b,"isCompressed"),this.assertValidity(),l(_,this,b)}toHex(b=!0){return(0,q.bytesToHex)(this.toBytes(b))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(b=!0){return this.toBytes(b)}_setWindowSize(b){this.precompute(b)}static normalizeZ(b){return(0,Ue.normalizeZ)(_,b)}static msm(b,p){return(0,Ue.pippenger)(_,s,b,p)}static fromPrivateKey(b){return _.BASE.multiply(Ge(s,b))}}_.BASE=new _(o.Gx,o.Gy,n.ONE),_.ZERO=new _(n.ZERO,n.ONE,n.ZERO),_.Fp=n,_.Fn=s;let R=s.BITS,K=new Ue.wNAF(_,t.endo?Math.ceil(R/2):R);return _.BASE.precompute(8),_}function ls(e){return Uint8Array.of(e?2:3)}function hs(e,t){let r=e.ORDER,n=Se;for(let y=r-de;y%Te===Se;y/=Te)n+=de;let s=n,o=Te<<s-de-de,i=o*Te,a=(r-de)/i,c=(a-de)/Te,f=i-de,d=o,h=e.pow(t,a),u=e.pow(t,(a+de)/Te),l=(y,B)=>{let x=h,w=e.pow(B,f),v=e.sqr(w);v=e.mul(v,B);let g=e.mul(y,v);g=e.pow(g,c),g=e.mul(g,w),w=e.mul(g,B),v=e.mul(g,y);let I=e.mul(v,w);g=e.pow(I,d);let N=e.eql(g,e.ONE);w=e.mul(v,u),g=e.mul(I,x),v=e.cmov(w,v,N),I=e.cmov(g,I,N);for(let Y=s;Y>de;Y--){let X=Y-Te;X=Te<<X-de;let j=e.pow(I,X),_=e.eql(j,e.ONE);w=e.mul(v,x),x=e.mul(x,x),j=e.mul(I,x),v=e.cmov(w,v,_),I=e.cmov(j,I,_)}return{isValid:N,value:v}};if(e.ORDER%Kn===ut){let y=(e.ORDER-ut)/Kn,B=e.sqrt(e.neg(t));l=(x,w)=>{let v=e.sqr(w),g=e.mul(x,w);v=e.mul(v,g);let I=e.pow(v,y);I=e.mul(I,g);let N=e.mul(I,B),Y=e.mul(e.sqr(I),w),X=e.eql(Y,x),j=e.cmov(N,I,X);return{isValid:X,value:j}}}return l}function Ni(e,t){(0,dt.validateField)(e);let{A:r,B:n,Z:s}=t;if(!e.isValid(r)||!e.isValid(n)||!e.isValid(s))throw new Error("mapToCurveSimpleSWU: invalid opts");let o=hs(e,s);if(!e.isOdd)throw new Error("Field does not have .isOdd()");return i=>{let a,c,f,d,h,u,l,y;a=e.sqr(i),a=e.mul(a,s),c=e.sqr(a),c=e.add(c,a),f=e.add(c,e.ONE),f=e.mul(f,n),d=e.cmov(s,e.neg(c),!e.eql(c,e.ZERO)),d=e.mul(d,r),c=e.sqr(f),u=e.sqr(d),h=e.mul(u,r),c=e.add(c,h),c=e.mul(c,f),u=e.mul(u,d),h=e.mul(u,n),c=e.add(c,h),l=e.mul(a,f);let{isValid:B,value:x}=o(c,u);y=e.mul(a,i),y=e.mul(y,x),l=e.cmov(l,f,B),y=e.cmov(y,x,B);let w=e.isOdd(i)===e.isOdd(y);y=e.cmov(e.neg(y),y,w);let v=(0,dt.FpInvertBatch)(e,[d],!0)[0];return l=e.mul(l,v),{x:l,y}}}function ys(e,t){return{secretKey:t.BYTES,publicKey:1+e.BYTES,publicKeyUncompressed:1+2*e.BYTES,publicKeyHasPrefix:!0,signature:2*t.BYTES}}function bs(e,t={}){let{Fn:r}=e,n=t.randomBytes||q.randomBytes,s=Object.assign(ys(e.Fp,r),{seed:(0,dt.getMinHashLength)(r.ORDER)});function o(l){try{return!!Ge(r,l)}catch{return!1}}function i(l,y){let{publicKey:B,publicKeyUncompressed:x}=s;try{let w=l.length;return y===!0&&w!==B||y===!1&&w!==x?!1:!!e.fromBytes(l)}catch{return!1}}function a(l=n(s.seed)){return(0,dt.mapHashToField)((0,q._abytes2)(l,s.seed,"seed"),r.ORDER)}function c(l,y=!0){return e.BASE.multiply(Ge(r,l)).toBytes(y)}function f(l){let y=a(l);return{secretKey:y,publicKey:c(y)}}function d(l){if(typeof l=="bigint")return!1;if(l instanceof e)return!0;let{secretKey:y,publicKey:B,publicKeyUncompressed:x}=s;if(r.allowedLengths||y===B)return;let w=(0,q.ensureBytes)("key",l).length;return w===B||w===x}function h(l,y,B=!0){if(d(l)===!0)throw new Error("first arg must be private key");if(d(y)===!1)throw new Error("second arg must be public key");let x=Ge(r,l);return e.fromHex(y).multiply(x).toBytes(B)}return Object.freeze({getPublicKey:c,getSharedSecret:h,keygen:f,Point:e,utils:{isValidSecretKey:o,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:o,randomPrivateKey:a,normPrivateKeyToScalar:l=>Ge(r,l),precompute(l=8,y=e.BASE){return y.precompute(l,!1)}},lengths:s})}function ps(e,t,r={}){(0,Ci.ahash)(t),(0,q._validateObject)(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let n=r.randomBytes||q.randomBytes,s=r.hmac||((p,...m)=>(0,Pi.hmac)(t,p,(0,q.concatBytes)(...m))),{Fp:o,Fn:i}=e,{ORDER:a,BITS:c}=i,{keygen:f,getPublicKey:d,getSharedSecret:h,utils:u,lengths:l}=bs(e,r),y={prehash:!1,lowS:typeof r.lowS=="boolean"?r.lowS:!1,format:void 0,extraEntropy:!1},B="compact";function x(p){let m=a>>de;return p>m}function w(p,m){if(!i.isValidNot0(m))throw new Error(`invalid signature ${p}: out of range 1..Point.Fn.ORDER`);return m}function v(p,m){Nn(m);let E=l.signature,A=m==="compact"?E:m==="recovered"?E+1:void 0;return(0,q._abytes2)(p,A,`${m} signature`)}class g{constructor(m,E,A){this.r=w("r",m),this.s=w("s",E),A!=null&&(this.recovery=A),Object.freeze(this)}static fromBytes(m,E=B){v(m,E);let A;if(E==="der"){let{r:M,s:D}=re.DER.toSig((0,q._abytes2)(m));return new g(M,D)}E==="recovered"&&(A=m[0],E="compact",m=m.subarray(1));let T=i.BYTES,H=m.subarray(0,T),O=m.subarray(T,T*2);return new g(i.fromBytes(H),i.fromBytes(O),A)}static fromHex(m,E){return this.fromBytes((0,q.hexToBytes)(m),E)}addRecoveryBit(m){return new g(this.r,this.s,m)}recoverPublicKey(m){let E=o.ORDER,{r:A,s:T,recovery:H}=this;if(H==null||![0,1,2,3].includes(H))throw new Error("recovery id invalid");if(a*Te<E&&H>1)throw new Error("recovery id is ambiguous for h>1 curve");let M=H===2||H===3?A+a:A;if(!o.isValid(M))throw new Error("recovery id 2 or 3 invalid");let D=o.toBytes(M),Q=e.fromBytes((0,q.concatBytes)(ls((H&1)===0),D)),$=i.inv(M),G=N((0,q.ensureBytes)("msgHash",m)),J=i.create(-G*$),oe=i.create(T*$),ue=e.BASE.multiplyUnsafe(J).add(Q.multiplyUnsafe(oe));if(ue.is0())throw new Error("point at infinify");return ue.assertValidity(),ue}hasHighS(){return x(this.s)}toBytes(m=B){if(Nn(m),m==="der")return(0,q.hexToBytes)(re.DER.hexFromSig(this));let E=i.toBytes(this.r),A=i.toBytes(this.s);if(m==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return(0,q.concatBytes)(Uint8Array.of(this.recovery),E,A)}return(0,q.concatBytes)(E,A)}toHex(m){return(0,q.bytesToHex)(this.toBytes(m))}assertValidity(){}static fromCompact(m){return g.fromBytes((0,q.ensureBytes)("sig",m),"compact")}static fromDER(m){return g.fromBytes((0,q.ensureBytes)("sig",m),"der")}normalizeS(){return this.hasHighS()?new g(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return(0,q.bytesToHex)(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return(0,q.bytesToHex)(this.toBytes("compact"))}}let I=r.bits2int||function(m){if(m.length>8192)throw new Error("input is too large");let E=(0,q.bytesToNumberBE)(m),A=m.length*8-c;return A>0?E>>BigInt(A):E},N=r.bits2int_modN||function(m){return i.create(I(m))},Y=(0,q.bitMask)(c);function X(p){return(0,q.aInRange)("num < 2^"+c,p,Se,Y),i.toBytes(p)}function j(p,m){return(0,q._abytes2)(p,void 0,"message"),m?(0,q._abytes2)(t(p),void 0,"prehashed message"):p}function _(p,m,E){if(["recovered","canonical"].some(J=>J in E))throw new Error("sign() legacy options not supported");let{lowS:A,prehash:T,extraEntropy:H}=Cn(E,y);p=j(p,T);let O=N(p),M=Ge(i,m),D=[X(M),X(O)];if(H!=null&&H!==!1){let J=H===!0?n(l.secretKey):H;D.push((0,q.ensureBytes)("extraEntropy",J))}let Q=(0,q.concatBytes)(...D),$=O;function G(J){let oe=I(J);if(!i.isValidNot0(oe))return;let ue=i.inv(oe),te=e.BASE.multiply(oe).toAffine(),ae=i.create(te.x);if(ae===Se)return;let it=i.create(ue*i.create($+ae*M));if(it===Se)return;let wt=(te.x===ae?0:2)|Number(te.y&de),_t=it;return A&&x(it)&&(_t=i.neg(it),wt^=1),new g(ae,_t,wt)}return{seed:Q,k2sig:G}}function R(p,m,E={}){p=(0,q.ensureBytes)("message",p);let{seed:A,k2sig:T}=_(p,m,E);return(0,q.createHmacDrbg)(t.outputLen,i.BYTES,s)(A,T)}function K(p){let m,E=typeof p=="string"||(0,q.isBytes)(p),A=!E&&p!==null&&typeof p=="object"&&typeof p.r=="bigint"&&typeof p.s=="bigint";if(!E&&!A)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(A)m=new g(p.r,p.s);else if(E){try{m=g.fromBytes((0,q.ensureBytes)("sig",p),"der")}catch(T){if(!(T instanceof re.DER.Err))throw T}if(!m)try{m=g.fromBytes((0,q.ensureBytes)("sig",p),"compact")}catch{return!1}}return m||!1}function L(p,m,E,A={}){let{lowS:T,prehash:H,format:O}=Cn(A,y);if(E=(0,q.ensureBytes)("publicKey",E),m=j((0,q.ensureBytes)("message",m),H),"strict"in A)throw new Error("options.strict was renamed to lowS");let M=O===void 0?K(p):g.fromBytes((0,q.ensureBytes)("sig",p),O);if(M===!1)return!1;try{let D=e.fromBytes(E);if(T&&M.hasHighS())return!1;let{r:Q,s:$}=M,G=N(m),J=i.inv($),oe=i.create(G*J),ue=i.create(Q*J),te=e.BASE.multiplyUnsafe(oe).add(D.multiplyUnsafe(ue));return te.is0()?!1:i.create(te.x)===Q}catch{return!1}}function b(p,m,E={}){let{prehash:A}=Cn(E,y);return m=j(m,A),g.fromBytes(p,"recovered").recoverPublicKey(m).toBytes()}return Object.freeze({keygen:f,getPublicKey:d,getSharedSecret:h,utils:u,lengths:l,Point:e,sign:R,verify:L,recoverPublicKey:b,Signature:g,hash:t})}function Ki(e){let{CURVE:t,curveOpts:r}=ms(e),n=Un(t,r);return Vi(e,n)}function ms(e){let t={a:e.a,b:e.b,p:e.Fp.ORDER,n:e.n,h:e.h,Gx:e.Gx,Gy:e.Gy},r=e.Fp,n=e.allowedPrivateKeyLengths?Array.from(new Set(e.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0,s=(0,dt.Field)(t.n,{BITS:e.nBitLength,allowedLengths:n,modFromBytes:e.wrapPrivateKey}),o={Fp:r,Fn:s,allowInfinityPoint:e.allowInfinityPoint,endo:e.endo,isTorsionFree:e.isTorsionFree,clearCofactor:e.clearCofactor,fromBytes:e.fromBytes,toBytes:e.toBytes};return{CURVE:t,curveOpts:o}}function Ui(e){let{CURVE:t,curveOpts:r}=ms(e),n={hmac:e.hmac,randomBytes:e.randomBytes,lowS:e.lowS,bits2int:e.bits2int,bits2int_modN:e.bits2int_modN};return{CURVE:t,curveOpts:r,hash:e.hash,ecdsaOpts:n}}function gs(e,t,r){function n(s){let o=e.sqr(s),i=e.mul(o,s);return e.add(e.add(i,e.mul(s,t)),r)}return n}function Vi(e,t){let{Fp:r,Fn:n}=t;function s(i){return(0,q.inRange)(i,de,n.ORDER)}let o=gs(r,e.a,e.b);return Object.assign({},{CURVE:e,Point:t,ProjectivePoint:t,normPrivateKeyToScalar:i=>Ge(n,i),weierstrassEquation:o,isWithinCurveOrder:s})}function ji(e,t){let r=t.Point;return Object.assign({},t,{ProjectivePoint:r,CURVE:Object.assign({},e,(0,dt.nLength)(r.Fn.ORDER,r.Fn.BITS))})}function Di(e){let{CURVE:t,curveOpts:r,hash:n,ecdsaOpts:s}=Ui(e),o=Un(t,r),i=ps(o,n,s);return ji(e,i)}});var ws=ne($t=>{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.getHash=Yi;$t.createCurve=ki;var Zi=Vn();function Yi(e){return{hash:e}}function ki(e,t){let r=n=>(0,Zi.weierstrass)({...e,hash:n});return{...r(t),create:r}}});var jn=ne(Re=>{"use strict";Object.defineProperty(Re,"__esModule",{value:!0});Re._DST_scalar=void 0;Re.expand_message_xmd=xs;Re.expand_message_xof=Es;Re.hash_to_field=Qt;Re.isogenyMap=Fi;Re.createHasher=zi;var le=Ke(),_s=Xe(),Xi=le.bytesToNumberBE;function Fe(e,t){if(At(e),At(t),e<0||e>=1<<8*t)throw new Error("invalid I2OSP input: "+e);let r=Array.from({length:t}).fill(0);for(let n=t-1;n>=0;n--)r[n]=e&255,e>>>=8;return new Uint8Array(r)}function Gi(e,t){let r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n]^t[n];return r}function At(e){if(!Number.isSafeInteger(e))throw new Error("number expected")}function Bs(e){if(!(0,le.isBytes)(e)&&typeof e!="string")throw new Error("DST must be Uint8Array or string");return typeof e=="string"?(0,le.utf8ToBytes)(e):e}function xs(e,t,r,n){(0,le.abytes)(e),At(r),t=Bs(t),t.length>255&&(t=n((0,le.concatBytes)((0,le.utf8ToBytes)("H2C-OVERSIZE-DST-"),t)));let{outputLen:s,blockLen:o}=n,i=Math.ceil(r/s);if(r>65535||i>255)throw new Error("expand_message_xmd: invalid lenInBytes");let a=(0,le.concatBytes)(t,Fe(t.length,1)),c=Fe(0,o),f=Fe(r,2),d=new Array(i),h=n((0,le.concatBytes)(c,e,f,Fe(0,1),a));d[0]=n((0,le.concatBytes)(h,Fe(1,1),a));for(let l=1;l<=i;l++){let y=[Gi(h,d[l-1]),Fe(l+1,1),a];d[l]=n((0,le.concatBytes)(...y))}return(0,le.concatBytes)(...d).slice(0,r)}function Es(e,t,r,n,s){if((0,le.abytes)(e),At(r),t=Bs(t),t.length>255){let o=Math.ceil(2*n/8);t=s.create({dkLen:o}).update((0,le.utf8ToBytes)("H2C-OVERSIZE-DST-")).update(t).digest()}if(r>65535||t.length>255)throw new Error("expand_message_xof: invalid lenInBytes");return s.create({dkLen:r}).update(e).update(Fe(r,2)).update(t).update(Fe(t.length,1)).digest()}function Qt(e,t,r){(0,le._validateObject)(r,{p:"bigint",m:"number",k:"number",hash:"function"});let{p:n,k:s,m:o,hash:i,expand:a,DST:c}=r;if(!(0,le.isHash)(r.hash))throw new Error("expected valid hash");(0,le.abytes)(e),At(t);let f=n.toString(2).length,d=Math.ceil((f+s)/8),h=t*o*d,u;if(a==="xmd")u=xs(e,c,h,i);else if(a==="xof")u=Es(e,c,h,s,i);else if(a==="_internal_pass")u=e;else throw new Error('expand must be "xmd" or "xof"');let l=new Array(t);for(let y=0;y<t;y++){let B=new Array(o);for(let x=0;x<o;x++){let w=d*(x+y*o),v=u.subarray(w,w+d);B[x]=(0,_s.mod)(Xi(v),n)}l[y]=B}return l}function Fi(e,t){let r=t.map(n=>Array.from(n).reverse());return(n,s)=>{let[o,i,a,c]=r.map(h=>h.reduce((u,l)=>e.add(e.mul(u,n),l))),[f,d]=(0,_s.FpInvertBatch)(e,[i,c],!0);return n=e.mul(o,f),s=e.mul(s,e.mul(a,d)),{x:n,y:s}}}Re._DST_scalar=(0,le.utf8ToBytes)("HashToScalar-");function zi(e,t,r){if(typeof t!="function")throw new Error("mapToCurve() must be defined");function n(o){return e.fromAffine(t(o))}function s(o){let i=o.clearCofactor();return i.equals(e.ZERO)?e.ZERO:(i.assertValidity(),i)}return{defaults:r,hashToCurve(o,i){let a=Object.assign({},r,i),c=Qt(o,2,a),f=n(c[0]),d=n(c[1]);return s(f.add(d))},encodeToCurve(o,i){let a=r.encodeDST?{DST:r.encodeDST}:{},c=Object.assign({},r,a,i),f=Qt(o,1,c),d=n(f[0]);return s(d)},mapToCurve(o){if(!Array.isArray(o))throw new Error("expected array of bigints");for(let i of o)if(typeof i!="bigint")throw new Error("expected array of bigints");return s(n(o))},hashToScalar(o,i){let a=e.Fn.ORDER,c=Object.assign({},r,{p:a,m:1,DST:Re._DST_scalar},i);return Qt(o,1,c)[0][0]}}}});var qs=ne(he=>{"use strict";Object.defineProperty(he,"__esModule",{value:!0});he.encodeToCurve=he.hashToCurve=he.secp256k1_hasher=he.schnorr=he.secp256k1=void 0;var Jt=Yt(),Is=Ie(),Wi=ws(),Hs=jn(),we=Xe(),Os=Vn(),Ee=Ke(),lt={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},$i={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Qi=BigInt(0),vs=BigInt(1),Dn=BigInt(2);function Ji(e){let t=lt.p,r=BigInt(3),n=BigInt(6),s=BigInt(11),o=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),f=e*e*e%t,d=f*f*e%t,h=(0,we.pow2)(d,r,t)*d%t,u=(0,we.pow2)(h,r,t)*d%t,l=(0,we.pow2)(u,Dn,t)*f%t,y=(0,we.pow2)(l,s,t)*l%t,B=(0,we.pow2)(y,o,t)*y%t,x=(0,we.pow2)(B,a,t)*B%t,w=(0,we.pow2)(x,c,t)*x%t,v=(0,we.pow2)(w,a,t)*B%t,g=(0,we.pow2)(v,r,t)*d%t,I=(0,we.pow2)(g,i,t)*y%t,N=(0,we.pow2)(I,n,t)*f%t,Y=(0,we.pow2)(N,Dn,t);if(!Ve.eql(Ve.sqr(Y),e))throw new Error("Cannot find square root");return Y}var Ve=(0,we.Field)(lt.p,{sqrt:Ji});he.secp256k1=(0,Wi.createCurve)({...lt,Fp:Ve,lowS:!0,endo:$i},Jt.sha256);var Ss={};function en(e,...t){let r=Ss[e];if(r===void 0){let n=(0,Jt.sha256)((0,Ee.utf8ToBytes)(e));r=(0,Ee.concatBytes)(n,n),Ss[e]=r}return(0,Jt.sha256)((0,Ee.concatBytes)(r,...t))}var Yn=e=>e.toBytes(!0).slice(1),ht=he.secp256k1.Point,kn=e=>e%Dn===Qi;function Zn(e){let{Fn:t,BASE:r}=ht,n=(0,Os._normFnElement)(t,e),s=r.multiply(n);return{scalar:kn(s.y)?n:t.neg(n),bytes:Yn(s)}}function Ts(e){let t=Ve;if(!t.isValidNot0(e))throw new Error("invalid x: Fail if x \u2265 p");let r=t.create(e*e),n=t.create(r*e+BigInt(7)),s=t.sqrt(n);kn(s)||(s=t.neg(s));let o=ht.fromAffine({x:e,y:s});return o.assertValidity(),o}var It=Ee.bytesToNumberBE;function Rs(...e){return ht.Fn.create(It(en("BIP0340/challenge",...e)))}function As(e){return Zn(e).bytes}function ec(e,t,r=(0,Is.randomBytes)(32)){let{Fn:n}=ht,s=(0,Ee.ensureBytes)("message",e),{bytes:o,scalar:i}=Zn(t),a=(0,Ee.ensureBytes)("auxRand",r,32),c=n.toBytes(i^It(en("BIP0340/aux",a))),f=en("BIP0340/nonce",c,o,s),{bytes:d,scalar:h}=Zn(f),u=Rs(d,o,s),l=new Uint8Array(64);if(l.set(d,0),l.set(n.toBytes(n.create(h+u*i)),32),!Ls(l,s,o))throw new Error("sign: Invalid signature produced");return l}function Ls(e,t,r){let{Fn:n,BASE:s}=ht,o=(0,Ee.ensureBytes)("signature",e,64),i=(0,Ee.ensureBytes)("message",t),a=(0,Ee.ensureBytes)("publicKey",r,32);try{let c=Ts(It(a)),f=It(o.subarray(0,32));if(!(0,Ee.inRange)(f,vs,lt.p))return!1;let d=It(o.subarray(32,64));if(!(0,Ee.inRange)(d,vs,lt.n))return!1;let h=Rs(n.toBytes(f),Yn(c),i),u=s.multiplyUnsafe(d).add(c.multiplyUnsafe(n.neg(h))),{x:l,y}=u.toAffine();return!(u.is0()||!kn(y)||l!==f)}catch{return!1}}he.schnorr=(()=>{let r=(s=(0,Is.randomBytes)(48))=>(0,we.mapHashToField)(s,lt.n);he.secp256k1.utils.randomSecretKey;function n(s){let o=r(s);return{secretKey:o,publicKey:As(o)}}return{keygen:n,getPublicKey:As,sign:ec,verify:Ls,Point:ht,utils:{randomSecretKey:r,randomPrivateKey:r,taggedHash:en,lift_x:Ts,pointToBytes:Yn,numberToBytesBE:Ee.numberToBytesBE,bytesToNumberBE:Ee.bytesToNumberBE,mod:we.mod},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var tc=(0,Hs.isogenyMap)(Ve,[["0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7","0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581","0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262","0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c"],["0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b","0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14","0x0000000000000000000000000000000000000000000000000000000000000001"],["0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c","0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3","0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931","0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84"],["0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b","0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573","0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f","0x0000000000000000000000000000000000000000000000000000000000000001"]].map(e=>e.map(t=>BigInt(t)))),nc=(0,Os.mapToCurveSimpleSWU)(Ve,{A:BigInt("0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533"),B:BigInt("1771"),Z:Ve.create(BigInt("-11"))});he.secp256k1_hasher=(0,Hs.createHasher)(he.secp256k1.Point,e=>{let{x:t,y:r}=nc(Ve.create(e[0]));return tc(t,r)},{DST:"secp256k1_XMD:SHA-256_SSWU_RO_",encodeDST:"secp256k1_XMD:SHA-256_SSWU_NU_",p:Ve.ORDER,m:1,k:128,expand:"xmd",hash:Jt.sha256});he.hashToCurve=he.secp256k1_hasher.hashToCurve;he.encodeToCurve=he.secp256k1_hasher.encodeToCurve});var Gn=ne(bt=>{"use strict";Object.defineProperty(bt,"__esModule",{value:!0});bt.hkdf=void 0;bt.extract=Cs;bt.expand=Ns;var Ps=xn(),yt=Ie();function Cs(e,t,r){return(0,yt.ahash)(e),r===void 0&&(r=new Uint8Array(e.outputLen)),(0,Ps.hmac)(e,(0,yt.toBytes)(r),(0,yt.toBytes)(t))}var Xn=Uint8Array.from([0]),Ms=Uint8Array.of();function Ns(e,t,r,n=32){(0,yt.ahash)(e),(0,yt.anumber)(n);let s=e.outputLen;if(n>255*s)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/s);r===void 0&&(r=Ms);let i=new Uint8Array(o*s),a=Ps.hmac.create(e,t),c=a._cloneInto(),f=new Uint8Array(a.outputLen);for(let d=0;d<o;d++)Xn[0]=d+1,c.update(d===0?Ms:f).update(r).update(Xn).digestInto(f),i.set(f,s*d),a._cloneInto(c);return a.destroy(),c.destroy(),(0,yt.clean)(f,Xn),i.slice(0,n)}var rc=(e,t,r,n,s)=>Ns(e,Cs(e,t,r),n,s);bt.hkdf=rc});var Fn=ne(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.sha224=Le.SHA224=Le.sha256=Le.SHA256=void 0;var tn=Yt();Le.SHA256=tn.SHA256;Le.sha256=tn.sha256;Le.SHA224=tn.SHA224;Le.sha224=tn.sha224});var Wn=ne(ye=>{"use strict";var sc=ye&&ye.__createBinding||(Object.create?(function(e,t,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}):(function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]})),oc=ye&&ye.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),ic=ye&&ye.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var n=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[n.length]=s);return n},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var n=e(t),s=0;s<n.length;s++)n[s]!=="default"&&sc(r,t,n[s]);return oc(r,t),r}})();Object.defineProperty(ye,"__esModule",{value:!0});ye.KEY_ALGORITHM=ye.KEY_ALGORITHM_SECP256K1=void 0;ye.wrapKey=dc;ye.unwrapKey=lc;ye.publicKeyFromPrivate=hc;var zn=ic(We("crypto")),Ot=qs(),cc=Gn(),ac=Fn();ye.KEY_ALGORITHM_SECP256K1="ecies-secp256k1-aes256gcm";ye.KEY_ALGORITHM=ye.KEY_ALGORITHM_SECP256K1;var fc=32,Ht=12,Ks=16,uc=Buffer.from("neozipkit-pro/ecies/v1","utf8");function Us(e){let t=e.slice(1),r=(0,cc.hkdf)(ac.sha256,t,void 0,uc,fc);return Buffer.from(r)}function dc(e,t){let r=nn(e),n=Ot.secp256k1.utils.randomPrivateKey(),s=Ot.secp256k1.getPublicKey(n,!1),o=Ot.secp256k1.getSharedSecret(n,r,!1),i=Us(o),a=zn.randomBytes(Ht),c=zn.createCipheriv("aes-256-gcm",i,a),f=Buffer.concat([c.update(t),c.final()]),d=c.getAuthTag();return{ciphertext:Buffer.concat([a,d,f]).toString("base64"),ephemeralPublicKey:Buffer.from(s).toString("hex"),keyAlgorithm:ye.KEY_ALGORITHM}}function lc(e,t,r){let n=nn(e),s=nn(r),o=Ot.secp256k1.getSharedSecret(n,s,!1),i=Us(o),a=Buffer.from(t,"base64"),c=a.subarray(0,Ht),f=a.subarray(Ht,Ht+Ks),d=a.subarray(Ht+Ks),h=zn.createDecipheriv("aes-256-gcm",i,c);return h.setAuthTag(f),Buffer.concat([h.update(d),h.final()])}function hc(e){let t=nn(e),r=Ot.secp256k1.getPublicKey(t,!1);return Buffer.from(r).toString("hex")}function nn(e){let t=e.startsWith("0x")?e.slice(2):e;return Uint8Array.from(Buffer.from(t,"hex"))}});var Ds=ne(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.PrimeEdwardsPoint=void 0;rt.edwards=Vs;rt.eddsa=js;rt.twistedEdwards=wc;var F=Ke(),nt=zt(),yc=Xe(),ze=BigInt(0),fe=BigInt(1),$n=BigInt(2),bc=BigInt(8);function pc(e,t,r,n){let s=e.sqr(r),o=e.sqr(n),i=e.add(e.mul(t.a,s),o),a=e.add(e.ONE,e.mul(t.d,e.mul(s,o)));return e.eql(i,a)}function Vs(e,t={}){let r=(0,nt._createCurveFields)("edwards",e,t,t.FpFnLE),{Fp:n,Fn:s}=r,o=r.CURVE,{h:i}=o;(0,F._validateObject)(t,{},{uvRatio:"function"});let a=$n<<BigInt(s.BYTES*8)-fe,c=x=>n.create(x),f=t.uvRatio||((x,w)=>{try{return{isValid:!0,value:n.sqrt(n.div(x,w))}}catch{return{isValid:!1,value:ze}}});if(!pc(n,o,o.Gx,o.Gy))throw new Error("bad curve params: generator point");function d(x,w,v=!1){let g=v?fe:ze;return(0,F.aInRange)("coordinate "+x,w,g,a),w}function h(x){if(!(x instanceof y))throw new Error("ExtendedPoint expected")}let u=(0,F.memoized)((x,w)=>{let{X:v,Y:g,Z:I}=x,N=x.is0();w==null&&(w=N?bc:n.inv(I));let Y=c(v*w),X=c(g*w),j=n.mul(I,w);if(N)return{x:ze,y:fe};if(j!==fe)throw new Error("invZ was invalid");return{x:Y,y:X}}),l=(0,F.memoized)(x=>{let{a:w,d:v}=o;if(x.is0())throw new Error("bad point: ZERO");let{X:g,Y:I,Z:N,T:Y}=x,X=c(g*g),j=c(I*I),_=c(N*N),R=c(_*_),K=c(X*w),L=c(_*c(K+j)),b=c(R+c(v*c(X*j)));if(L!==b)throw new Error("bad point: equation left != right (1)");let p=c(g*I),m=c(N*Y);if(p!==m)throw new Error("bad point: equation left != right (2)");return!0});class y{constructor(w,v,g,I){this.X=d("x",w),this.Y=d("y",v),this.Z=d("z",g,!0),this.T=d("t",I),Object.freeze(this)}static CURVE(){return o}static fromAffine(w){if(w instanceof y)throw new Error("extended point not allowed");let{x:v,y:g}=w||{};return d("x",v),d("y",g),new y(v,g,fe,c(v*g))}static fromBytes(w,v=!1){let g=n.BYTES,{a:I,d:N}=o;w=(0,F.copyBytes)((0,F._abytes2)(w,g,"point")),(0,F._abool2)(v,"zip215");let Y=(0,F.copyBytes)(w),X=w[g-1];Y[g-1]=X&-129;let j=(0,F.bytesToNumberLE)(Y),_=v?a:n.ORDER;(0,F.aInRange)("point.y",j,ze,_);let R=c(j*j),K=c(R-fe),L=c(N*R-I),{isValid:b,value:p}=f(K,L);if(!b)throw new Error("bad point: invalid y coordinate");let m=(p&fe)===fe,E=(X&128)!==0;if(!v&&p===ze&&E)throw new Error("bad point: x=0 and x_0=1");return E!==m&&(p=c(-p)),y.fromAffine({x:p,y:j})}static fromHex(w,v=!1){return y.fromBytes((0,F.ensureBytes)("point",w),v)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,v=!0){return B.createCache(this,w),v||this.multiply($n),this}assertValidity(){l(this)}equals(w){h(w);let{X:v,Y:g,Z:I}=this,{X:N,Y,Z:X}=w,j=c(v*X),_=c(N*I),R=c(g*X),K=c(Y*I);return j===_&&R===K}is0(){return this.equals(y.ZERO)}negate(){return new y(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:w}=o,{X:v,Y:g,Z:I}=this,N=c(v*v),Y=c(g*g),X=c($n*c(I*I)),j=c(w*N),_=v+g,R=c(c(_*_)-N-Y),K=j+Y,L=K-X,b=j-Y,p=c(R*L),m=c(K*b),E=c(R*b),A=c(L*K);return new y(p,m,A,E)}add(w){h(w);let{a:v,d:g}=o,{X:I,Y:N,Z:Y,T:X}=this,{X:j,Y:_,Z:R,T:K}=w,L=c(I*j),b=c(N*_),p=c(X*g*K),m=c(Y*R),E=c((I+N)*(j+_)-L-b),A=m-p,T=m+p,H=c(b-v*L),O=c(E*A),M=c(T*H),D=c(E*H),Q=c(A*T);return new y(O,M,Q,D)}subtract(w){return this.add(w.negate())}multiply(w){if(!s.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:v,f:g}=B.cached(this,w,I=>(0,nt.normalizeZ)(y,I));return(0,nt.normalizeZ)(y,[v,g])[0]}multiplyUnsafe(w,v=y.ZERO){if(!s.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===ze?y.ZERO:this.is0()||w===fe?this:B.unsafe(this,w,g=>(0,nt.normalizeZ)(y,g),v)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return B.unsafe(this,o.n).is0()}toAffine(w){return u(this,w)}clearCofactor(){return i===fe?this:this.multiplyUnsafe(i)}toBytes(){let{x:w,y:v}=this.toAffine(),g=n.toBytes(v);return g[g.length-1]|=w&fe?128:0,g}toHex(){return(0,F.bytesToHex)(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(w){return(0,nt.normalizeZ)(y,w)}static msm(w,v){return(0,nt.pippenger)(y,s,w,v)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}y.BASE=new y(o.Gx,o.Gy,fe,c(o.Gx*o.Gy)),y.ZERO=new y(ze,fe,fe,ze),y.Fp=n,y.Fn=s;let B=new nt.wNAF(y,s.BITS);return y.BASE.precompute(8),y}var Qn=class{constructor(t){this.ep=t}static fromBytes(t){(0,F.notImplemented)()}static fromHex(t){(0,F.notImplemented)()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(t){return this.ep.toAffine(t)}toHex(){return(0,F.bytesToHex)(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(t){return this.assertSame(t),this.init(this.ep.add(t.ep))}subtract(t){return this.assertSame(t),this.init(this.ep.subtract(t.ep))}multiply(t){return this.init(this.ep.multiply(t))}multiplyUnsafe(t){return this.init(this.ep.multiplyUnsafe(t))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(t,r){return this.init(this.ep.precompute(t,r))}toRawBytes(){return this.toBytes()}};rt.PrimeEdwardsPoint=Qn;function js(e,t,r={}){if(typeof t!="function")throw new Error('"hash" function param is required');(0,F._validateObject)(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=r,{BASE:s,Fp:o,Fn:i}=e,a=r.randomBytes||F.randomBytes,c=r.adjustScalarBytes||(_=>_),f=r.domain||((_,R,K)=>{if((0,F._abool2)(K,"phflag"),R.length||K)throw new Error("Contexts/pre-hash are not supported");return _});function d(_){return i.create((0,F.bytesToNumberLE)(_))}function h(_){let R=g.secretKey;_=(0,F.ensureBytes)("private key",_,R);let K=(0,F.ensureBytes)("hashed private key",t(_),2*R),L=c(K.slice(0,R)),b=K.slice(R,2*R),p=d(L);return{head:L,prefix:b,scalar:p}}function u(_){let{head:R,prefix:K,scalar:L}=h(_),b=s.multiply(L),p=b.toBytes();return{head:R,prefix:K,scalar:L,point:b,pointBytes:p}}function l(_){return u(_).pointBytes}function y(_=Uint8Array.of(),...R){let K=(0,F.concatBytes)(...R);return d(t(f(K,(0,F.ensureBytes)("context",_),!!n)))}function B(_,R,K={}){_=(0,F.ensureBytes)("message",_),n&&(_=n(_));let{prefix:L,scalar:b,pointBytes:p}=u(R),m=y(K.context,L,_),E=s.multiply(m).toBytes(),A=y(K.context,E,p,_),T=i.create(m+A*b);if(!i.isValid(T))throw new Error("sign failed: invalid s");let H=(0,F.concatBytes)(E,i.toBytes(T));return(0,F._abytes2)(H,g.signature,"result")}let x={zip215:!0};function w(_,R,K,L=x){let{context:b,zip215:p}=L,m=g.signature;_=(0,F.ensureBytes)("signature",_,m),R=(0,F.ensureBytes)("message",R),K=(0,F.ensureBytes)("publicKey",K,g.publicKey),p!==void 0&&(0,F._abool2)(p,"zip215"),n&&(R=n(R));let E=m/2,A=_.subarray(0,E),T=(0,F.bytesToNumberLE)(_.subarray(E,m)),H,O,M;try{H=e.fromBytes(K,p),O=e.fromBytes(A,p),M=s.multiplyUnsafe(T)}catch{return!1}if(!p&&H.isSmallOrder())return!1;let D=y(b,O.toBytes(),H.toBytes(),R);return O.add(H.multiplyUnsafe(D)).subtract(M).clearCofactor().is0()}let v=o.BYTES,g={secretKey:v,publicKey:v,signature:2*v,seed:v};function I(_=a(g.seed)){return(0,F._abytes2)(_,g.seed,"seed")}function N(_){let R=j.randomSecretKey(_);return{secretKey:R,publicKey:l(R)}}function Y(_){return(0,F.isBytes)(_)&&_.length===i.BYTES}function X(_,R){try{return!!e.fromBytes(_,R)}catch{return!1}}let j={getExtendedPublicKey:u,randomSecretKey:I,isValidSecretKey:Y,isValidPublicKey:X,toMontgomery(_){let{y:R}=e.fromBytes(_),K=g.publicKey,L=K===32;if(!L&&K!==57)throw new Error("only defined for 25519 and 448");let b=L?o.div(fe+R,fe-R):o.div(R-fe,R+fe);return o.toBytes(b)},toMontgomerySecret(_){let R=g.secretKey;(0,F._abytes2)(_,R);let K=t(_.subarray(0,R));return c(K).subarray(0,R)},randomPrivateKey:I,precompute(_=8,R=e.BASE){return R.precompute(_,!1)}};return Object.freeze({keygen:N,getPublicKey:l,sign:B,verify:w,utils:j,Point:e,lengths:g})}function mc(e){let t={a:e.a,d:e.d,p:e.Fp.ORDER,n:e.n,h:e.h,Gx:e.Gx,Gy:e.Gy},r=e.Fp,n=(0,yc.Field)(t.n,e.nBitLength,!0),s={Fp:r,Fn:n,uvRatio:e.uvRatio},o={randomBytes:e.randomBytes,adjustScalarBytes:e.adjustScalarBytes,domain:e.domain,prehash:e.prehash,mapToCurve:e.mapToCurve};return{CURVE:t,curveOpts:s,hash:e.hash,eddsaOpts:o}}function gc(e,t){let r=t.Point;return Object.assign({},t,{ExtendedPoint:r,CURVE:e,nBitLength:r.Fn.BITS,nByteLength:r.Fn.BYTES})}function wc(e){let{CURVE:t,curveOpts:r,hash:n,eddsaOpts:s}=mc(e),o=Vs(t,r),i=js(o,n,s);return gc(e,i)}});var Zs=ne(Jn=>{"use strict";Object.defineProperty(Jn,"__esModule",{value:!0});Jn.montgomery=xc;var qe=Ke(),_c=Xe(),Tt=BigInt(0),pt=BigInt(1),rn=BigInt(2);function Bc(e){return(0,qe._validateObject)(e,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...e})}function xc(e){let t=Bc(e),{P:r,type:n,adjustScalarBytes:s,powPminus2:o,randomBytes:i}=t,a=n==="x25519";if(!a&&n!=="x448")throw new Error("invalid type");let c=i||qe.randomBytes,f=a?255:448,d=a?32:56,h=BigInt(a?9:5),u=BigInt(a?121665:39081),l=a?rn**BigInt(254):rn**BigInt(447),y=a?BigInt(8)*rn**BigInt(251)-pt:BigInt(4)*rn**BigInt(445)-pt,B=l+y+pt,x=b=>(0,_c.mod)(b,r),w=v(h);function v(b){return(0,qe.numberToBytesLE)(x(b),d)}function g(b){let p=(0,qe.ensureBytes)("u coordinate",b,d);return a&&(p[31]&=127),x((0,qe.bytesToNumberLE)(p))}function I(b){return(0,qe.bytesToNumberLE)(s((0,qe.ensureBytes)("scalar",b,d)))}function N(b,p){let m=j(g(p),I(b));if(m===Tt)throw new Error("invalid private or public key received");return v(m)}function Y(b){return N(b,w)}function X(b,p,m){let E=x(b*(p-m));return p=x(p-E),m=x(m+E),{x_2:p,x_3:m}}function j(b,p){(0,qe.aInRange)("u",b,Tt,r),(0,qe.aInRange)("scalar",p,l,B);let m=p,E=b,A=pt,T=Tt,H=b,O=pt,M=Tt;for(let Q=BigInt(f-1);Q>=Tt;Q--){let $=m>>Q&pt;M^=$,{x_2:A,x_3:H}=X(M,A,H),{x_2:T,x_3:O}=X(M,T,O),M=$;let G=A+T,J=x(G*G),oe=A-T,ue=x(oe*oe),te=J-ue,ae=H+O,it=H-O,wt=x(it*G),_t=x(ae*oe),ur=wt+_t,dr=wt-_t;H=x(ur*ur),O=x(E*x(dr*dr)),A=x(J*ue),T=x(te*(J+x(u*te)))}({x_2:A,x_3:H}=X(M,A,H)),{x_2:T,x_3:O}=X(M,T,O);let D=o(T);return x(A*D)}let _={secretKey:d,publicKey:d,seed:d},R=(b=c(d))=>((0,qe.abytes)(b,_.seed),b);function K(b){let p=R(b);return{secretKey:p,publicKey:Y(p)}}return{keygen:K,getSharedSecret:(b,p)=>N(b,p),getPublicKey:b=>Y(b),scalarMult:N,scalarMultBase:Y,utils:{randomSecretKey:R,randomPrivateKey:R},GuBytes:w.slice(),lengths:_}}});var to=ne(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.hash_to_ristretto255=V.hashToRistretto255=V.encodeToCurve=V.hashToCurve=V.RistrettoPoint=V.edwardsToMontgomery=V.ED25519_TORSION_SUBGROUP=V.ristretto255_hasher=V.ristretto255=V.ed25519_hasher=V.x25519=V.ed25519ph=V.ed25519ctx=V.ed25519=void 0;V.edwardsToMontgomeryPub=eo;V.edwardsToMontgomeryPriv=Cc;var Rt=Yt(),on=Ie(),Ec=zt(),an=Ds(),sn=jn(),z=Xe(),vc=Zs(),st=Ke(),Sc=BigInt(0),Me=BigInt(1),cn=BigInt(2),Gs=BigInt(3),Fs=BigInt(5),rr=BigInt(8),je=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Lt={p:je,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:rr,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function zs(e){let t=BigInt(10),r=BigInt(20),n=BigInt(40),s=BigInt(80),o=je,a=e*e%o*e%o,c=(0,z.pow2)(a,cn,o)*a%o,f=(0,z.pow2)(c,Me,o)*e%o,d=(0,z.pow2)(f,Fs,o)*f%o,h=(0,z.pow2)(d,t,o)*d%o,u=(0,z.pow2)(h,r,o)*h%o,l=(0,z.pow2)(u,n,o)*u%o,y=(0,z.pow2)(l,s,o)*l%o,B=(0,z.pow2)(y,s,o)*l%o,x=(0,z.pow2)(B,t,o)*d%o;return{pow_p_5_8:(0,z.pow2)(x,cn,o)*e%o,b2:a}}function Ws(e){return e[0]&=248,e[31]&=127,e[31]|=64,e}var er=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function sr(e,t){let r=je,n=(0,z.mod)(t*t*t,r),s=(0,z.mod)(n*n*t,r),o=zs(e*s).pow_p_5_8,i=(0,z.mod)(e*n*o,r),a=(0,z.mod)(t*i*i,r),c=i,f=(0,z.mod)(i*er,r),d=a===e,h=a===(0,z.mod)(-e,r),u=a===(0,z.mod)(-e*er,r);return d&&(i=c),(h||u)&&(i=f),(0,z.isNegativeLE)(i,r)&&(i=(0,z.mod)(-i,r)),{isValid:d||h,value:i}}var S=(0,z.Field)(Lt.p,{isLE:!0}),$s=(0,z.Field)(Lt.n,{isLE:!0}),or={...Lt,Fp:S,hash:Rt.sha512,adjustScalarBytes:Ws,uvRatio:sr};V.ed25519=(0,an.twistedEdwards)(or);function Qs(e,t,r){if(t.length>255)throw new Error("Context is too big");return(0,on.concatBytes)((0,on.utf8ToBytes)("SigEd25519 no Ed25519 collisions"),new Uint8Array([r?1:0,t.length]),t,e)}V.ed25519ctx=(0,an.twistedEdwards)({...or,domain:Qs});V.ed25519ph=(0,an.twistedEdwards)(Object.assign({},or,{domain:Qs,prehash:Rt.sha512}));V.x25519=(()=>{let e=S.ORDER;return(0,vc.montgomery)({P:e,type:"x25519",powPminus2:t=>{let{pow_p_5_8:r,b2:n}=zs(t);return(0,z.mod)((0,z.pow2)(r,Gs,e)*n,e)},adjustScalarBytes:Ws})})();var Ac=(je+Gs)/rr,Ic=S.pow(cn,Ac),Ys=S.sqrt(S.neg(S.ONE));function Hc(e){let t=(je-Fs)/rr,r=BigInt(486662),n=S.sqr(e);n=S.mul(n,cn);let s=S.add(n,S.ONE),o=S.neg(r),i=S.sqr(s),a=S.mul(i,s),c=S.mul(n,r);c=S.mul(c,o),c=S.add(c,i),c=S.mul(c,o);let f=S.sqr(a);i=S.sqr(f),f=S.mul(f,a),f=S.mul(f,c),i=S.mul(i,f);let d=S.pow(i,t);d=S.mul(d,f);let h=S.mul(d,Ys);i=S.sqr(d),i=S.mul(i,a);let u=S.eql(i,c),l=S.cmov(h,d,u),y=S.mul(o,n),B=S.mul(d,e);B=S.mul(B,Ic);let x=S.mul(B,Ys),w=S.mul(c,n);i=S.sqr(B),i=S.mul(i,a);let v=S.eql(i,w),g=S.cmov(x,B,v);i=S.sqr(l),i=S.mul(i,a);let I=S.eql(i,c),N=S.cmov(y,o,I),Y=S.cmov(g,l,I),X=S.isOdd(Y);return Y=S.cmov(Y,S.neg(Y),I!==X),{xMn:N,xMd:s,yMn:Y,yMd:Me}}var Oc=(0,z.FpSqrtEven)(S,S.neg(BigInt(486664)));function Tc(e){let{xMn:t,xMd:r,yMn:n,yMd:s}=Hc(e),o=S.mul(t,s);o=S.mul(o,Oc);let i=S.mul(r,n),a=S.sub(t,r),c=S.add(t,r),f=S.mul(i,c),d=S.eql(f,S.ZERO);o=S.cmov(o,S.ZERO,d),i=S.cmov(i,S.ONE,d),a=S.cmov(a,S.ONE,d),c=S.cmov(c,S.ONE,d);let[h,u]=(0,z.FpInvertBatch)(S,[i,c],!0);return{x:S.mul(o,h),y:S.mul(a,u)}}V.ed25519_hasher=(0,sn.createHasher)(V.ed25519.Point,e=>Tc(e[0]),{DST:"edwards25519_XMD:SHA-512_ELL2_RO_",encodeDST:"edwards25519_XMD:SHA-512_ELL2_NU_",p:je,m:1,k:128,expand:"xmd",hash:Rt.sha512});var tr=er,Rc=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),Lc=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),qc=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),Mc=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),ks=e=>sr(Me,e),Pc=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),nr=e=>V.ed25519.Point.Fp.create((0,st.bytesToNumberLE)(e)&Pc);function Xs(e){let{d:t}=Lt,r=je,n=w=>S.create(w),s=n(tr*e*e),o=n((s+Me)*qc),i=BigInt(-1),a=n((i-t*s)*n(s+t)),{isValid:c,value:f}=sr(o,a),d=n(f*e);(0,z.isNegativeLE)(d,r)||(d=n(-d)),c||(f=d),c||(i=s);let h=n(i*(s-Me)*Mc-a),u=f*f,l=n((f+f)*a),y=n(h*Rc),B=n(Me-u),x=n(Me+u);return new V.ed25519.Point(n(l*x),n(B*y),n(y*x),n(l*B))}function Js(e){(0,on.abytes)(e,64);let t=nr(e.subarray(0,32)),r=Xs(t),n=nr(e.subarray(32,64)),s=Xs(n);return new Ae(r.add(s))}var Ae=class e extends an.PrimeEdwardsPoint{constructor(t){super(t)}static fromAffine(t){return new e(V.ed25519.Point.fromAffine(t))}assertSame(t){if(!(t instanceof e))throw new Error("RistrettoPoint expected")}init(t){return new e(t)}static hashToCurve(t){return Js((0,st.ensureBytes)("ristrettoHash",t,64))}static fromBytes(t){(0,on.abytes)(t,32);let{a:r,d:n}=Lt,s=je,o=I=>S.create(I),i=nr(t);if(!(0,st.equalBytes)(S.toBytes(i),t)||(0,z.isNegativeLE)(i,s))throw new Error("invalid ristretto255 encoding 1");let a=o(i*i),c=o(Me+r*a),f=o(Me-r*a),d=o(c*c),h=o(f*f),u=o(r*n*d-h),{isValid:l,value:y}=ks(o(u*h)),B=o(y*f),x=o(y*B*u),w=o((i+i)*B);(0,z.isNegativeLE)(w,s)&&(w=o(-w));let v=o(c*x),g=o(w*v);if(!l||(0,z.isNegativeLE)(g,s)||v===Sc)throw new Error("invalid ristretto255 encoding 2");return new e(new V.ed25519.Point(w,v,Me,g))}static fromHex(t){return e.fromBytes((0,st.ensureBytes)("ristrettoHex",t,32))}static msm(t,r){return(0,Ec.pippenger)(e,V.ed25519.Point.Fn,t,r)}toBytes(){let{X:t,Y:r,Z:n,T:s}=this.ep,o=je,i=x=>S.create(x),a=i(i(n+r)*i(n-r)),c=i(t*r),f=i(c*c),{value:d}=ks(i(a*f)),h=i(d*a),u=i(d*c),l=i(h*u*s),y;if((0,z.isNegativeLE)(s*l,o)){let x=i(r*tr),w=i(t*tr);t=x,r=w,y=i(h*Lc)}else y=u;(0,z.isNegativeLE)(t*l,o)&&(r=i(-r));let B=i((n-r)*y);return(0,z.isNegativeLE)(B,o)&&(B=i(-B)),S.toBytes(B)}equals(t){this.assertSame(t);let{X:r,Y:n}=this.ep,{X:s,Y:o}=t.ep,i=f=>S.create(f),a=i(r*o)===i(n*s),c=i(n*o)===i(r*s);return a||c}is0(){return this.equals(e.ZERO)}};Ae.BASE=new Ae(V.ed25519.Point.BASE);Ae.ZERO=new Ae(V.ed25519.Point.ZERO);Ae.Fp=S;Ae.Fn=$s;V.ristretto255={Point:Ae};V.ristretto255_hasher={hashToCurve(e,t){let r=t?.DST||"ristretto255_XMD:SHA-512_R255MAP_RO_",n=(0,sn.expand_message_xmd)(e,r,64,Rt.sha512);return Js(n)},hashToScalar(e,t={DST:sn._DST_scalar}){let r=(0,sn.expand_message_xmd)(e,t.DST,64,Rt.sha512);return $s.create((0,st.bytesToNumberLE)(r))}};V.ED25519_TORSION_SUBGROUP=["0100000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a","0000000000000000000000000000000000000000000000000000000000000080","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05","ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85","0000000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa"];function eo(e){return V.ed25519.utils.toMontgomery((0,st.ensureBytes)("pub",e))}V.edwardsToMontgomery=eo;function Cc(e){return V.ed25519.utils.toMontgomerySecret((0,st.ensureBytes)("pub",e))}V.RistrettoPoint=Ae;V.hashToCurve=V.ed25519_hasher.hashToCurve;V.encodeToCurve=V.ed25519_hasher.encodeToCurve;V.hashToRistretto255=V.ristretto255_hasher.hashToCurve;V.hash_to_ristretto255=V.ristretto255_hasher.hashToCurve});var cr=ne(xe=>{"use strict";var Nc=xe&&xe.__createBinding||(Object.create?(function(e,t,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}):(function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]})),Kc=xe&&xe.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Uc=xe&&xe.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var n=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[n.length]=s);return n},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var n=e(t),s=0;s<n.length;s++)n[s]!=="default"&&Nc(r,t,n[s]);return Kc(r,t),r}})();Object.defineProperty(xe,"__esModule",{value:!0});xe.KEY_ALGORITHM_X25519=void 0;xe.wrapKeyX25519=Yc;xe.unwrapKeyX25519=kc;xe.publicKeyFromPrivateX25519=Xc;var ir=Uc(We("crypto")),Mt=to(),Vc=Gn(),jc=Fn();xe.KEY_ALGORITHM_X25519="ecies-x25519-aes256gcm";var Dc=32,qt=12,no=16,Zc=Buffer.from("neozipkit-pro/ecies-x25519/v1","utf8");function ro(e){let t=(0,Vc.hkdf)(jc.sha256,e,void 0,Zc,Dc);return Buffer.from(t)}function Yc(e,t){let r=e.startsWith("0x")?e.slice(2):e,n=Uint8Array.from(Buffer.from(r,"hex")),s=Mt.x25519.utils.randomPrivateKey(),o=Mt.x25519.getPublicKey(s),i=Mt.x25519.getSharedSecret(s,n),a=ro(i),c=ir.randomBytes(qt),f=ir.createCipheriv("aes-256-gcm",a,c),d=Buffer.concat([f.update(t),f.final()]),h=f.getAuthTag();return{ciphertext:Buffer.concat([c,h,d]).toString("base64"),ephemeralPublicKey:Buffer.from(o).toString("hex"),keyAlgorithm:xe.KEY_ALGORITHM_X25519}}function kc(e,t,r){let n=e.startsWith("0x")?e.slice(2):e,s=r.startsWith("0x")?r.slice(2):r,o=Uint8Array.from(Buffer.from(n,"hex")),i=Uint8Array.from(Buffer.from(s,"hex")),a=Mt.x25519.getSharedSecret(o,i),c=ro(a),f=Buffer.from(t,"base64"),d=f.subarray(0,qt),h=f.subarray(qt,qt+no),u=f.subarray(qt+no),l=ir.createDecipheriv("aes-256-gcm",c,d);return l.setAuthTag(h),Buffer.concat([l.update(u),l.final()])}function Xc(e){let t=e.startsWith("0x")?e.slice(2):e,r=Uint8Array.from(Buffer.from(t,"hex")),n=Mt.x25519.getPublicKey(r);return Buffer.from(n).toString("hex")}});var so=ne(fn=>{"use strict";Object.defineProperty(fn,"__esModule",{value:!0});fn.VERSION=void 0;fn.VERSION="0.1.0"});var oo=ne(mt=>{"use strict";Object.defineProperty(mt,"__esModule",{value:!0});mt.IDENTITY_TYPES=void 0;mt.isIdentityType=Gc;mt.IDENTITY_TYPES=["ens","address","did","lit-pkp","zipstamp"];function Gc(e){return mt.IDENTITY_TYPES.includes(e)}});var ar=ne(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.ACCESS_NZIP_PATH=void 0;ot.buildAccessMetadata=Wc;ot.serializeAccessMetadata=$c;ot.parseAccessMetadata=Qc;var Fc=so(),zc=oo();ot.ACCESS_NZIP_PATH="META-INF/ACCESS.NZIP";function Wc(e,t="ens-hybrid",r="neo-aes256"){let n=r==="aes256"?{method:"aes-256-winzip",note:"AES key derived via PBKDF2 from wrapped password (neozipkit AE-1)"}:{method:"neo-aes256",note:"NeoEncrypt (NEO extra 0x024E); AES-256 via PBKDF2 from wrapped password (neozipkit)"},s=e.map(({resolved:o,wrapped:i})=>({identity:o.identity,identityType:o.identityType,resolvedAddress:o.address,publicKeyHex:o.publicKeyHex,wrappedKey:i.ciphertext,ephemeralPublicKey:i.ephemeralPublicKey,keyAlgorithm:i.keyAlgorithm}));return{version:"1.0",scheme:t,recipients:s,encryption:n,created:new Date().toISOString(),proVersion:Fc.VERSION}}function $c(e){return Buffer.from(JSON.stringify(e,null,2),"utf8")}function Qc(e){let t=typeof e=="string"?e:e.toString("utf8"),r=JSON.parse(t);if(!r.version||!r.scheme||!Array.isArray(r.recipients))throw new Error("Invalid ACCESS.NZIP: missing version, scheme, or recipients");for(let n of r.recipients){if(!n.identityType||!(0,zc.isIdentityType)(n.identityType))throw new Error(`Invalid ACCESS.NZIP recipient "${n.identity??"?"}": unknown or missing identityType`);if(!n.wrappedKey||!n.ephemeralPublicKey||!n.keyAlgorithm)throw new Error(`Invalid ACCESS.NZIP recipient "${n.identity}": missing wrappedKey, ephemeralPublicKey, or keyAlgorithm`)}return r}});var ao=ne(Pe=>{"use strict";var Jc=Pe&&Pe.__createBinding||(Object.create?(function(e,t,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}):(function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]})),ea=Pe&&Pe.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),ln=Pe&&Pe.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var n=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[n.length]=s);return n},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var n=e(t),s=0;s<n.length;s++)n[s]!=="default"&&Jc(r,t,n[s]);return ea(r,t),r}})();Object.defineProperty(Pe,"__esModule",{value:!0});Pe.encryptForRecipients=ia;Pe.decryptAsRecipient=ca;var ta=ln(We("crypto")),fr=ln(We("fs")),io=ln(We("path")),na=ln(We("os")),un=Wn(),dn=cr(),gt=ar();function ra(e){return e.length===0?[]:typeof e[0]=="string"?e.map(r=>({path:r})):e}function sa(e){let t=e[0].identityType;for(let r=1;r<e.length;r++)if(e[r].identityType!==t)throw new Error(`All recipients must use the same identityType (got "${t}" and "${e[r].identityType}"). Mixing Lit PKP with ENS/address recipients in one archive is not supported.`)}function oa(e){sa(e);let t=e[0].identityType;return t==="lit-pkp"?"lit-protocol":`${t}-hybrid`}async function co(e){typeof e.closeFile=="function"&&await e.closeFile()}async function ia(e,t,r,n,s){if(n.length===0)throw new Error("At least one recipient is required");let o=oa(n),i=ta.randomBytes(32).toString("hex"),a=s?.zipEncryptionMethod??"neo-aes256",c={password:i,encryptionMethod:a,level:s?.level??6,useSHA256:s?.useSHA256??!0,useZstd:s?.useZstd??!1},f=await e.initializeZipFile(r);try{for(let g of ra(t)){let I=await e.prepareEntryFromFile(g.path,g.entryName);g.entryName&&(I.filename=g.entryName),await e.writeZipEntry(f,I,g.path,c)}let d=Buffer.from(i,"utf8"),h=n.map(g=>{let N=g.keyFormat==="x25519"||g.keyFormat===void 0&&g.publicKeyHex.replace(/^0x/,"").length===64?(0,dn.wrapKeyX25519)(g.publicKeyHex,d):(0,un.wrapKey)(g.publicKeyHex,d);return{resolved:g,wrapped:N}}),u=(0,gt.buildAccessMetadata)(h,o,a),l=(0,gt.serializeAccessMetadata)(u),y=fr.mkdtempSync(io.join(na.tmpdir(),"nzp-")),B=io.join(y,"ACCESS.NZIP");try{fr.writeFileSync(B,l);let g=await e.prepareEntryFromFile(B);g.filename=gt.ACCESS_NZIP_PATH,g.cmpMethod=0,g.compressedSize=l.length,g.uncompressedSize=l.length,await e.writeZipEntry(f,g,B,{level:0,useZstd:!1,useSHA256:!1})}finally{fr.rmSync(y,{recursive:!0,force:!0})}let x=e.getDirectory(),w=f.currentPosition,v=await e.writeCentralDirectory(f,x);await e.writeEndOfCentralDirectory(f,x.length,v,w)}finally{await e.finalizeZipFile(f)}}async function ca(e,t,r){await co(e),await e.loadZipFile(t);try{let n=e.getZipEntry(gt.ACCESS_NZIP_PATH);if(!n)throw new Error(`"${gt.ACCESS_NZIP_PATH}" not found in archive. This file does not appear to be recipient-encrypted.`);let s=await e.extractToBuffer(n,{skipHashCheck:!0}),o=(0,gt.parseAccessMetadata)(s),i=r.startsWith("0x")?r.slice(2):r,a=(0,un.publicKeyFromPrivate)(i),c=(0,dn.publicKeyFromPrivateX25519)(i),f=o.recipients.find(u=>{let l=u.publicKeyHex.toLowerCase();return l===a.toLowerCase()||l===c.toLowerCase()});if(!f)throw new Error(`No matching recipient found for the provided private key. Recipients: ${o.recipients.map(u=>u.identity).join(", ")}`);let d;if(f.keyAlgorithm===dn.KEY_ALGORITHM_X25519)d=(0,dn.unwrapKeyX25519)(i,f.wrappedKey,f.ephemeralPublicKey);else if(f.keyAlgorithm===un.KEY_ALGORITHM_SECP256K1||f.keyAlgorithm==="ecies-secp256k1-aes256gcm")d=(0,un.unwrapKey)(i,f.wrappedKey,f.ephemeralPublicKey);else throw new Error(`Unsupported key algorithm in ACCESS.NZIP: ${f.keyAlgorithm}`);let h=d.toString("utf8");return e.password=h,e}catch(n){throw await co(e),n}}});var uo=ne(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.decryptAsRecipient=W.encryptForRecipients=W.parseAccessMetadata=W.serializeAccessMetadata=W.buildAccessMetadata=W.ACCESS_NZIP_PATH=W.KEY_ALGORITHM_X25519=W.publicKeyFromPrivateX25519=W.unwrapKeyX25519=W.wrapKeyX25519=W.KEY_ALGORITHM_SECP256K1=W.KEY_ALGORITHM=W.publicKeyFromPrivate=W.unwrapKey=W.wrapKey=void 0;var Pt=Wn();Object.defineProperty(W,"wrapKey",{enumerable:!0,get:function(){return Pt.wrapKey}});Object.defineProperty(W,"unwrapKey",{enumerable:!0,get:function(){return Pt.unwrapKey}});Object.defineProperty(W,"publicKeyFromPrivate",{enumerable:!0,get:function(){return Pt.publicKeyFromPrivate}});Object.defineProperty(W,"KEY_ALGORITHM",{enumerable:!0,get:function(){return Pt.KEY_ALGORITHM}});Object.defineProperty(W,"KEY_ALGORITHM_SECP256K1",{enumerable:!0,get:function(){return Pt.KEY_ALGORITHM_SECP256K1}});var hn=cr();Object.defineProperty(W,"wrapKeyX25519",{enumerable:!0,get:function(){return hn.wrapKeyX25519}});Object.defineProperty(W,"unwrapKeyX25519",{enumerable:!0,get:function(){return hn.unwrapKeyX25519}});Object.defineProperty(W,"publicKeyFromPrivateX25519",{enumerable:!0,get:function(){return hn.publicKeyFromPrivateX25519}});Object.defineProperty(W,"KEY_ALGORITHM_X25519",{enumerable:!0,get:function(){return hn.KEY_ALGORITHM_X25519}});var yn=ar();Object.defineProperty(W,"ACCESS_NZIP_PATH",{enumerable:!0,get:function(){return yn.ACCESS_NZIP_PATH}});Object.defineProperty(W,"buildAccessMetadata",{enumerable:!0,get:function(){return yn.buildAccessMetadata}});Object.defineProperty(W,"serializeAccessMetadata",{enumerable:!0,get:function(){return yn.serializeAccessMetadata}});Object.defineProperty(W,"parseAccessMetadata",{enumerable:!0,get:function(){return yn.parseAccessMetadata}});var fo=ao();Object.defineProperty(W,"encryptForRecipients",{enumerable:!0,get:function(){return fo.encryptForRecipients}});Object.defineProperty(W,"decryptAsRecipient",{enumerable:!0,get:function(){return fo.decryptAsRecipient}})});var Ct=go(uo(),1);var export_ACCESS_NZIP_PATH=Ct.ACCESS_NZIP_PATH;var export_decryptAsRecipient=Ct.decryptAsRecipient;var export_encryptForRecipients=Ct.encryptForRecipients;var export_parseAccessMetadata=Ct.parseAccessMetadata;var export_publicKeyFromPrivateX25519=Ct.publicKeyFromPrivateX25519;export{export_ACCESS_NZIP_PATH as ACCESS_NZIP_PATH,export_decryptAsRecipient as decryptAsRecipient,export_encryptForRecipients as encryptForRecipients,export_parseAccessMetadata as parseAccessMetadata,export_publicKeyFromPrivateX25519 as publicKeyFromPrivateX25519};
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# NeoZip Connect — connection store
|
|
2
|
+
|
|
3
|
+
This document describes how **`neozip-connect`** persists account data on disk, what each field means, and how **Token Services**, **workspaces**, and **multiple accounts** fit together.
|
|
4
|
+
|
|
5
|
+
The MCP server (`neozip-mcp`) reads this store at startup. It does not shell out to the CLI during normal operation.
|
|
6
|
+
|
|
7
|
+
For setup commands, see [NEOZIP_CONNECT_CLI.md](./NEOZIP_CONNECT_CLI.md). For Cursor setup, see the package README and [`.cursor/mcp.json.global.example`](../.cursor/mcp.json.global.example).
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
`neozip-connect` runs the same onboarding chain as NeoZip Desktop:
|
|
14
|
+
|
|
15
|
+
1. Choose a **Token Service** deployment (testnet, production, local, or custom URL).
|
|
16
|
+
2. Register and verify **email** (6-digit OTP in the terminal).
|
|
17
|
+
3. Create or import a **Data Wallet** (EVM key).
|
|
18
|
+
4. **Link** the wallet on the Token Service (signed challenges).
|
|
19
|
+
5. Provision an **X25519 identity key** (wallet-encrypted on the server).
|
|
20
|
+
|
|
21
|
+
The result is a **connection** — one NeoZip account bound to one Token Service origin. You can save **many connections** on one machine (different emails, different deployments, or multiple accounts on the same deployment).
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Where data is stored
|
|
26
|
+
|
|
27
|
+
| Item | Default path |
|
|
28
|
+
|------|----------------|
|
|
29
|
+
| Connection store root | `~/.neozip/connection/` |
|
|
30
|
+
| Override | Set `NEOZIP_CONNECTION_DIR` |
|
|
31
|
+
|
|
32
|
+
Legacy profiles under `~/.neozip/mcp/` are migrated automatically into the connection store on first use.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Directory layout
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
~/.neozip/connection/
|
|
40
|
+
├── manifest.json # Global index + active account
|
|
41
|
+
└── connections/
|
|
42
|
+
└── <connection-uuid>/
|
|
43
|
+
├── public.json # Non-secret metadata (plain JSON)
|
|
44
|
+
└── secrets.enc # Encrypted credentials (AES-256-GCM)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Each **connection** is a UUID directory. The **manifest** tracks which connections exist, grouped by Token Service, and which one is **active** for MCP and CLI.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## `manifest.json`
|
|
52
|
+
|
|
53
|
+
The manifest is the top-level index. It does not contain secrets.
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"version": 1,
|
|
58
|
+
"activeConnectionId": "71725972-096b-498e-bdee-71a9fe3ebabb",
|
|
59
|
+
"workspaces": {
|
|
60
|
+
"https://testnet.token-service.neozip.io": {
|
|
61
|
+
"connectionIds": ["71725972-096b-498e-bdee-71a9fe3ebabb"],
|
|
62
|
+
"activeConnectionId": "71725972-096b-498e-bdee-71a9fe3ebabb"
|
|
63
|
+
},
|
|
64
|
+
"http://localhost:14789": {
|
|
65
|
+
"connectionIds": ["1c8aee67-9785-4603-a143-e972447162df"],
|
|
66
|
+
"activeConnectionId": "1c8aee67-9785-4603-a143-e972447162df"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
| Field | Meaning |
|
|
73
|
+
|-------|---------|
|
|
74
|
+
| `version` | Schema version (currently `1`). |
|
|
75
|
+
| `activeConnectionId` | The connection MCP and `neozip-connect` use by default. |
|
|
76
|
+
| `workspaces` | Map of **Token Service origin → workspace**. |
|
|
77
|
+
| `workspaces[<origin>].connectionIds` | All account IDs registered for that deployment. |
|
|
78
|
+
| `workspaces[<origin>].activeConnectionId` | Last-selected account for that deployment (may differ from global active when you switch). |
|
|
79
|
+
|
|
80
|
+
**Workspace key** = normalized Token Service URL (scheme, host, port, path; trailing slashes removed). Example: `http://localhost:14789`.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## `public.json` (per connection)
|
|
85
|
+
|
|
86
|
+
Plain JSON metadata for one account. Safe to inspect; never contains Bearer tokens or private keys.
|
|
87
|
+
|
|
88
|
+
| Field | Meaning |
|
|
89
|
+
|-------|---------|
|
|
90
|
+
| `id` | Connection UUID (matches directory name). |
|
|
91
|
+
| `label` | Display name (e.g. `NeoZip Testnet`, `Local Development`, or custom URL). |
|
|
92
|
+
| `tokenServiceOrigin` | Base URL of the Token Service this account belongs to. |
|
|
93
|
+
| `email` | Verified email on the Token Service (null until verified). |
|
|
94
|
+
| `emailVerified` | Whether email OTP completed. |
|
|
95
|
+
| `emailVerifiedAt` | ISO timestamp of verification. |
|
|
96
|
+
| `evmAddress` | Data Wallet EVM address (`0x…`). |
|
|
97
|
+
| `walletId` | Token Service wallet id after link step. |
|
|
98
|
+
| `linkId` | Token Service wallet-link id. |
|
|
99
|
+
| `identityKeyId` | Token Service identity key id after provision step. |
|
|
100
|
+
| `x25519PublicKeySpkiB64` | Base64 SPKI public key for recipient encryption. |
|
|
101
|
+
| `x25519Fingerprint` | Short fingerprint for display (masked in status output). |
|
|
102
|
+
| `onboardingCompleteAt` | ISO timestamp when identity provisioning finished (`phase: ready`). |
|
|
103
|
+
| `phoneE164` | Verified phone (E.164), when Token Service requires phone OTP. |
|
|
104
|
+
| `phoneVerifiedAt` | ISO timestamp of phone verification (Desktop or CLI). |
|
|
105
|
+
| `onboardingExitToAppAt` | Desktop: user entered basic mode without full setup (preserved by MCP). |
|
|
106
|
+
| `identitySetupDeferralReason` | Desktop: deferred identity setup reason (preserved by MCP). |
|
|
107
|
+
| `createdAt` / `updatedAt` | Connection lifecycle timestamps. |
|
|
108
|
+
|
|
109
|
+
When `onboardingCompleteAt` is set and wallet/identity ids are present, the connection is **ready** for MCP.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## `secrets.enc` (per connection)
|
|
114
|
+
|
|
115
|
+
Encrypted blob (AES-256-GCM). Decrypted JSON shape:
|
|
116
|
+
|
|
117
|
+
| Field | Meaning |
|
|
118
|
+
|-------|---------|
|
|
119
|
+
| `accessToken` | Token Service Bearer JWT (from email verification). |
|
|
120
|
+
| `accessTokenObtainedAt` | Unix ms when token was stored. |
|
|
121
|
+
| `accessTokenExpiresAt` | Optional expiry (Unix ms). |
|
|
122
|
+
| `evmPrivateKeyHex` | Data Wallet private key (hex, no `0x` prefix in storage). |
|
|
123
|
+
|
|
124
|
+
**Never** commit or paste `secrets.enc` contents. The `neozip-connect dump` command prints only `public.json` and the manifest.
|
|
125
|
+
|
|
126
|
+
### Encryption key
|
|
127
|
+
|
|
128
|
+
| Mode | How |
|
|
129
|
+
|------|-----|
|
|
130
|
+
| **Default** | Machine-local key derived from `hostname:username:neozip-connection`. No extra setup on a trusted workstation. |
|
|
131
|
+
| **Optional** | Set `NEOZIP_UNLOCK_PASSPHRASE` in the environment (same value for `neozip-connect` and MCP if you use a custom passphrase). |
|
|
132
|
+
|
|
133
|
+
This unlock passphrase is **not** the wallet **recovery phrase** shown when you create a new Data Wallet. The recovery phrase restores the wallet; the unlock passphrase only encrypts files under `~/.neozip/connection/`.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Token Service deployments
|
|
138
|
+
|
|
139
|
+
During setup, `neozip-connect` offers these presets (plus custom URL):
|
|
140
|
+
|
|
141
|
+
| Label | Origin | Purpose |
|
|
142
|
+
|-------|--------|---------|
|
|
143
|
+
| **NeoZip Testnet** | `https://testnet.token-service.neozip.io` | Default; shared test environment. |
|
|
144
|
+
| **NeoZip Production** | `https://token-service.neozip.io` | Production Token Service. |
|
|
145
|
+
| **Local Development** | `http://localhost:14789` | Local `neozip-token-service` (must be running). |
|
|
146
|
+
| **Custom URL** | User-entered | Any compatible Token Service base URL. |
|
|
147
|
+
|
|
148
|
+
Each deployment is a separate **workspace**. Accounts on testnet and localhost are independent: different emails, wallets, and identity keys, even on the same machine.
|
|
149
|
+
|
|
150
|
+
Environment variable `TOKEN_SERVICE_URL` can suggest a default during setup; it does not replace the saved `tokenServiceOrigin` on each connection.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Multiple accounts
|
|
155
|
+
|
|
156
|
+
You can store **several connections**:
|
|
157
|
+
|
|
158
|
+
- **Same Token Service, different accounts** — e.g. two testnet users (`test@neozip.io` and `dev@example.com`). Both appear under the same workspace key.
|
|
159
|
+
- **Different Token Services** — e.g. testnet + local dev. Each has its own workspace entry in `manifest.json`.
|
|
160
|
+
|
|
161
|
+
Only one connection is **globally active** at a time (`manifest.activeConnectionId`). MCP loads credentials from the active connection when the account gate is enabled.
|
|
162
|
+
|
|
163
|
+
### Switching and cleanup
|
|
164
|
+
|
|
165
|
+
In the interactive wizard (when at least one account is ready):
|
|
166
|
+
|
|
167
|
+
- **Switch active account** — pick another saved connection.
|
|
168
|
+
- **Delete an account** — removes that connection directory and updates the manifest.
|
|
169
|
+
- **Add another account** — same or different Token Service; runs email → wallet → link → identity again.
|
|
170
|
+
|
|
171
|
+
If setup fails mid-way (e.g. local Token Service not running), the wizard rolls back to the previous ready account and removes the incomplete shell when possible.
|
|
172
|
+
|
|
173
|
+
At MCP startup, if the active connection is incomplete but another connection is **ready**, MCP automatically switches to a ready account (preferring one whose `tokenServiceOrigin` matches `TOKEN_SERVICE_URL` in `mcp.json` when set).
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Onboarding phases
|
|
178
|
+
|
|
179
|
+
Each connection progresses through phases until **ready**:
|
|
180
|
+
|
|
181
|
+
| Phase | Meaning |
|
|
182
|
+
|-------|---------|
|
|
183
|
+
| `no_profile` | No connection or empty shell. |
|
|
184
|
+
| `email_unverified` | Connection created; email not verified yet. |
|
|
185
|
+
| `phone_required` | Email verified; Token Service requires SMS OTP (`phoneE164` / `phoneVerifiedAt`). |
|
|
186
|
+
| `no_wallet` | Email (and phone if required) verified; Data Wallet not saved. |
|
|
187
|
+
| `wallet_unlinked` | Wallet exists locally; not linked on Token Service. |
|
|
188
|
+
| `identity_missing` | Linked; X25519 identity not provisioned. |
|
|
189
|
+
| `ready` | Full onboarding complete; MCP can start (when account gate is on). |
|
|
190
|
+
| `degraded` | Token Service unreachable (status probe only; not stored on disk). |
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## How MCP uses the store
|
|
195
|
+
|
|
196
|
+
1. On spawn, `neozip-mcp` may migrate legacy `~/.neozip/mcp/` data.
|
|
197
|
+
2. If account is required, it promotes a ready connection when needed, then checks `phase === ready`.
|
|
198
|
+
3. **`applyActiveConnectionToEnv()`** merges active connection into process env when not overridden:
|
|
199
|
+
- `TOKEN_SERVICE_URL` ← `tokenServiceOrigin`
|
|
200
|
+
- `NEOZIP_TOKEN_SERVICE_ACCESS_TOKEN` ← Bearer
|
|
201
|
+
- `NEOZIP_WALLET_PASSKEY` ← EVM private key
|
|
202
|
+
- `NEOZIP_RECIPIENT_EMAIL` ← email
|
|
203
|
+
|
|
204
|
+
Values already set in `mcp.json` are not overwritten.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Inspecting the store
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
neozip-connect dump
|
|
212
|
+
neozip-connect dump --connection-id <uuid>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Prints `connectionDir`, global `phase`, full `manifest`, and every `public.json` (no secrets). Useful for debugging multi-account setups.
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
neozip-connect status --json
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Returns phase and connection id without dumping full JSON files.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Security notes
|
|
226
|
+
|
|
227
|
+
- File modes: directories `0700`, files `0600` under `~/.neozip/connection/`.
|
|
228
|
+
- Recovery phrase is shown **once** in the terminal when creating a wallet; it is **not** written to the connection store.
|
|
229
|
+
- `logout` clears secrets and resets public onboarding fields but keeps the connection shell.
|
|
230
|
+
- `delete` removes the connection directory entirely.
|
|
231
|
+
- `reset --force` removes the whole connection store (and legacy MCP profiles).
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Related docs
|
|
236
|
+
|
|
237
|
+
- [NEOZIP_CONNECT_CLI.md](./NEOZIP_CONNECT_CLI.md) — CLI commands and wizard flow.
|
|
238
|
+
- Canonical schema reference (token-service repo): `NEOZIP_CONNECTION_FILE.md` in [neozip-token-service](https://github.com/neoware/neozip-token-service).
|