@bsv/sdk 1.1.30 → 1.1.32
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/dist/cjs/package.json +1 -1
- package/dist/cjs/src/transaction/Beef.js +161 -45
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefParty.js +16 -0
- package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
- package/dist/cjs/src/transaction/BeefTx.js +6 -1
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +12 -6
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/transaction/Beef.js +160 -44
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefParty.js +16 -0
- package/dist/esm/src/transaction/BeefParty.js.map +1 -1
- package/dist/esm/src/transaction/BeefTx.js +6 -1
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +12 -6
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/transaction/Beef.d.ts +44 -3
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefParty.d.ts +11 -0
- package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefTx.d.ts +6 -1
- package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
- package/dist/types/src/transaction/Transaction.d.ts +8 -2
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/transaction.md +141 -9
- package/package.json +1 -1
- package/src/transaction/Beef.ts +186 -47
- package/src/transaction/BeefParty.ts +17 -0
- package/src/transaction/BeefTx.ts +6 -1
- package/src/transaction/Transaction.ts +12 -6
- package/src/transaction/__tests/Beef.test.ts +55 -10
package/dist/umd/bundle.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bsv=e():t.bsv=e()}(this,(()=>(()=>{"use strict";var t={d:(e,r)=>{for(var i in r)t.o(r,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:r[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{ARC:()=>qe,BSM:()=>o,Beef:()=>Ye,BeefParty:()=>tr,BeefTx:()=>$e,BigNumber:()=>c,Curve:()=>qt,ECDSA:()=>s,ECIES:()=>wr,EncryptedMessage:()=>a,FetchHttpClient:()=>Le,HD:()=>ur,Hash:()=>r,KeyShares:()=>Jt,LockingScript:()=>xe,MerklePath:()=>Ue,Mnemonic:()=>fr,NodejsHttpClient:()=>He,OP:()=>Ie,P2PKH:()=>Te,Point:()=>Dt,PointInFiniteField:()=>Zt,Polynomial:()=>Qt,PrivateKey:()=>te,PublicKey:()=>Xt,RPuzzle:()=>Be,Random:()=>Yt,SatoshisPerKilobyte:()=>Re,Schnorr:()=>Pe,Script:()=>_e,Signature:()=>Vt,SignedMessage:()=>n,Spend:()=>Fe,SymmetricKey:()=>ke,TOTP:()=>vr,Transaction:()=>Ze,TransactionSignature:()=>Oe,UnlockingScript:()=>Se,Utils:()=>i,WhatsOnChain:()=>Ke,WhatsOnChainBroadcaster:()=>er,defaultBroadcaster:()=>Ve,defaultChainTracker:()=>ze,defaultHttpClient:()=>De,fromUtxo:()=>yr,isBroadcastFailure:()=>Je,isBroadcastResponse:()=>Qe});var r={};t.r(r),t.d(r,{RIPEMD160:()=>Z,SHA1:()=>J,SHA1HMAC:()=>bt,SHA256:()=>Q,SHA256HMAC:()=>ft,SHA512:()=>tt,SHA512HMAC:()=>pt,hash160:()=>kt,hash256:()=>vt,pbkdf2:()=>Et,ripemd160:()=>mt,sha1:()=>gt,sha256:()=>wt,sha256hmac:()=>Ot,sha512:()=>yt,sha512hmac:()=>Pt,toArray:()=>w});var i={};t.r(i),t.d(i,{Reader:()=>Ht,Writer:()=>Ut,encode:()=>Mt,fromBase58:()=>Ft,fromBase58Check:()=>Rt,minimallyEncode:()=>Lt,toArray:()=>xt,toBase58:()=>Tt,toBase58Check:()=>Bt,toBase64:()=>At,toHex:()=>_t,toUTF8:()=>St,zero2:()=>It});var s={};t.r(s),t.d(s,{sign:()=>$t,verify:()=>jt});var n={};t.r(n),t.d(n,{sign:()=>ir,verify:()=>sr});var a={};t.r(a),t.d(a,{decrypt:()=>or,encrypt:()=>ar});var o={};t.r(o),t.d(o,{magicHash:()=>cr,sign:()=>hr,verify:()=>dr});class c{static zeros=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"];static groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];static groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];static wordSize=26;negative;words;length;red;static isBN(t){return t instanceof c||null!==t&&"object"==typeof t&&t.constructor.wordSize===c.wordSize&&Array.isArray(t.words)}static max(t,e){return t.cmp(e)>0?t:e}static min(t,e){return t.cmp(e)<0?t:e}constructor(t=0,e=10,r="be"){if(this.negative=0,this.words=[],this.length=0,this.red=null,null!==t){if("le"!==e&&"be"!==e||(r=e,e=10),"number"==typeof t)return this.initNumber(t,e,r);if("object"==typeof t)return this.initArray(t,r);"hex"===e&&(e=16),this.assert(e===(0|e)&&e>=2&&e<=36);let i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<t.length&&(16===e?this.parseHex(t,i,r):(this.parseBase(t,e,i),"le"===r&&this.initArray(this.toArray(),r)))}}assert(t,e="Assertion failed"){if(!t)throw new Error(e)}initNumber(t,e,r){return t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(this.assert(t<9007199254740992,"The number is larger than 2 ^ 53 (unsafe)"),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"!==r||this.initArray(this.toArray(),r),this}initArray(t,e){if(this.assert("number"==typeof t.length,"The number must have a length"),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);let r,i,s=0;for(;s<this.length;s++)this.words[s]=0;let n=0;if("be"===e)for(s=t.length-1,r=0;s>=0;s-=3)i=t[s]|t[s-1]<<8|t[s-2]<<16,this.words[r]|=i<<n&67108863,this.words[r+1]=i>>>26-n&67108863,n+=24,n>=26&&(n-=26,r++);else if("le"===e)for(s=0,r=0;s<t.length;s+=3)i=t[s]|t[s+1]<<8|t[s+2]<<16,this.words[r]|=i<<n&67108863,this.words[r+1]=i>>>26-n&67108863,n+=24,n>=26&&(n-=26,r++);return this.strip()}parseHex4Bits(t,e){const r=t.charCodeAt(e);if(r>=48&&r<=57)return r-48;if(r>=65&&r<=70)return r-55;if(r>=97&&r<=102)return r-87;throw new Error("Invalid character in "+t)}parseHexByte(t,e,r){let i=this.parseHex4Bits(t,r);return r-1>=e&&(i|=this.parseHex4Bits(t,r-1)<<4),i}parseHex(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);let i=0;for(;i<this.length;i++)this.words[i]=0;let s,n=0,a=0;if("be"===r)for(i=t.length-1;i>=e;i-=2)s=this.parseHexByte(t,e,i)<<n,this.words[a]|=67108863&s,n>=18?(n-=18,a+=1,this.words[a]|=s>>>26):n+=8;else for(i=(t.length-e)%2==0?e+1:e;i<t.length;i+=2)s=this.parseHexByte(t,e,i)<<n,this.words[a]|=67108863&s,n>=18?(n-=18,a+=1,this.words[a]|=s>>>26):n+=8;return this.strip()}parseBaseWord(t,e,r,i){let s=0,n=0;const a=Math.min(t.length,r);for(let r=e;r<a;r++){const e=t.charCodeAt(r)-48;s*=i,n=e>=49?e-49+10:e>=17?e-17+10:e,this.assert(e>=0&&n<i,"Invalid character"),s+=n}return s}parseBase(t,e,r){this.words=[0],this.length=1;let i=0,s=1;for(;s<=67108863;s*=e)i++;i--,s=s/e|0;const n=t.length-r,a=n%i,o=Math.min(n,n-a)+r;let c=0,h=r;for(;h<o;h+=i)c=this.parseBaseWord(t,h,h+i,e),this.imuln(s),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==a){let r=1;for(c=this.parseBaseWord(t,h,t.length,e),h=0;h<a;h++)r*=e;this.imuln(r),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}return this.strip()}copy(t){t.words=new Array(this.length);for(let e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red}static move(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}clone(){const t=new c;return this.copy(t),t}expand(t){for(;this.length<t;)this.words[this.length++]=0;return this}strip(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this.normSign()}normSign(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this}inspect(){return(null!==this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}toString(t=10,e=1){let r;if(16===t||"hex"===t){r="";let t=0,i=0;for(let e=0;e<this.length;e++){const s=this.words[e],n=(16777215&(s<<t|i)).toString(16);i=s>>>24-t&16777215,t+=2,t>=26&&(t-=26,e--),r=0!==i||e!==this.length-1?c.zeros[6-n.length]+n+r:n+r}if(0!==i&&(r=i.toString(16)+r),0===e&&"0"===r)return"";for(;r.length%e!=0&&0!==e;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){const i=c.groupSizes[t],s=c.groupBases[t];r="";let n=this.clone();for(n.negative=0;!n.isZero();){const e=n.modrn(s).toString(t);n=n.idivn(s),r=n.isZero()?e+r:c.zeros[i-e.length]+e+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}throw new Error("Base should be between 2 and 36")}toNumber(){let t=this.words[0];if(2===this.length)t+=67108864*this.words[1];else if(3===this.length&&1===this.words[2])t+=4503599627370496+67108864*this.words[1];else if(this.length>2)throw new Error("Number can only safely store up to 53 bits");return 0!==this.negative?-t:t}toJSON(){return this.toString(16)}toArrayLikeLE(t,e){let r=0,i=0;for(let e=0,s=0;e<this.length;e++){const n=this.words[e]<<s|i;t[r++]=255&n,r<t.length&&(t[r++]=n>>8&255),r<t.length&&(t[r++]=n>>16&255),6===s?(r<t.length&&(t[r++]=n>>24&255),i=0,s=0):(i=n>>>24,s+=2)}if(r<t.length)for(t[r++]=i;r<t.length;)t[r++]=0}toArrayLikeBE(t,e){let r=t.length-1,i=0;for(let e=0,s=0;e<this.length;e++){const n=this.words[e]<<s|i;t[r--]=255&n,r>=0&&(t[r--]=n>>8&255),r>=0&&(t[r--]=n>>16&255),6===s?(r>=0&&(t[r--]=n>>24&255),i=0,s=0):(i=n>>>24,s+=2)}if(r>=0)for(t[r--]=i;r>=0;)t[r--]=0}toArray(t="be",e){this.strip();const r=this.byteLength(),i=e??Math.max(1,r);this.assert(r<=i,"byte array longer than desired length"),this.assert(i>0,"Requested array length <= 0");const s=new Array(i);return"le"===t?this.toArrayLikeLE(s,r):this.toArrayLikeBE(s,r),s}countWordBits(t){if("function"==typeof Math.clz32)return 32-Math.clz32(t);let e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e}zeroWordBits(t){if(0===t)return 26;let e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r}bitLength(){const t=this.words[this.length-1],e=this.countWordBits(t);return 26*(this.length-1)+e}static toBitArray(t){const e=new Array(t.bitLength());for(let r=0;r<e.length;r++){const i=r/26|0,s=r%26;e[r]=t.words[i]>>>s&1}return e}toBitArray(){return c.toBitArray(this)}zeroBits(){if(this.isZero())return 0;let t=0;for(let e=0;e<this.length;e++){const r=this.zeroWordBits(this.words[e]);if(t+=r,26!==r)break}return t}byteLength(){return Math.ceil(this.bitLength()/8)}toTwos(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()}fromTwos(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()}isNeg(){return 0!==this.negative}neg(){return this.clone().ineg()}ineg(){return this.isZero()||(this.negative^=1),this}iuor(t){for(;this.length<t.length;)this.words[this.length++]=0;for(let e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()}ior(t){return this.assert(!(this.negative|t.negative)),this.iuor(t)}or(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)}uor(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)}iuand(t){const e=Math.min(this.length,t.length);for(let r=0;r<e;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e,this.strip()}iand(t){return this.assert(!(this.negative|t.negative)),this.iuand(t)}and(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)}uand(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)}iuxor(t){if(this.length>t.length)for(let e=0;e<t.length;e++)this.words[e]=this.words[e]^t.words[e];else{for(let e=0;e<this.length;e++)this.words[e]=this.words[e]^t.words[e];for(let e=this.length;e<t.length;e++)this.words[e]=t.words[e];this.length=t.length}return this.strip()}ixor(t){return this.assert(!(this.negative|t.negative),"Neither number can be negative"),this.iuxor(t)}xor(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)}uxor(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)}inotn(t){this.assert("number"==typeof t&&t>=0,"The width needs to be a number greater than zero");let e=0|Math.ceil(t/26);const r=t%26;this.expand(e),r>0&&e--;let i=0;for(;i<e;i++)this.words[i]=67108863&~this.words[i];return r>0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()}notn(t){return this.clone().inotn(t)}setn(t,e){this.assert("number"==typeof t&&t>=0);const r=t/26|0,i=t%26;return this.expand(r+1),this.words[r]=1===e||!0===e?this.words[r]|1<<i:this.words[r]&~(1<<i),this.strip()}iadd(t){let e,r,i;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this.normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e.normSign();this.length>t.length?(r=this,i=t):(r=t,i=this);let s=0,n=0;for(;n<i.length;n++)e=(0|r.words[n])+(0|i.words[n])+s,this.words[n]=67108863&e,s=e>>>26;for(;0!==s&&n<r.length;n++)e=(0|r.words[n])+s,this.words[n]=67108863&e,s=e>>>26;if(this.length=r.length,0!==s)this.words[this.length]=s,this.length++;else if(r!==this)for(;n<r.length;n++)this.words[n]=r.words[n];return this}add(t){let e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)}isub(t){let e;if(0!==t.negative)return t.negative=0,e=this.iadd(t),t.negative=1,e.normSign();if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this.normSign();const r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;let i,s;r>0?(i=this,s=t):(i=t,s=this);let n=0,a=0;for(;a<s.length;a++)e=(0|i.words[a])-(0|s.words[a])+n,n=e>>26,this.words[a]=67108863&e;for(;0!==n&&a<i.length;a++)e=(0|i.words[a])+n,n=e>>26,this.words[a]=67108863&e;if(0===n&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this.strip()}sub(t){return this.clone().isub(t)}smallMulTo(t,e,r){r.negative=e.negative^t.negative;let i=t.length+e.length|0;r.length=i,i=i-1|0;let s=0|t.words[0],n=0|e.words[0],a=s*n;const o=67108863&a;let c=a/67108864|0;r.words[0]=o;let h=1;for(;h<i;h++){let i=c>>>26,o=67108863&c;const d=Math.min(h,e.length-1);for(let r=Math.max(0,h-t.length+1);r<=d;r++){const c=h-r|0;s=0|t.words[c],n=0|e.words[r],a=s*n+o,i+=a/67108864|0,o=67108863&a}r.words[h]=0|o,c=0|i}return 0!==c?r.words[h]=0|c:r.length--,r.strip()}comb10MulTo(t,e,r){const i=t.words,s=e.words,n=r.words;let a,o,c,h=0;const d=0|i[0],u=8191&d,l=d>>>13,f=0|i[1],b=8191&f,p=f>>>13,m=0|i[2],g=8191&m,w=m>>>13,y=0|i[3],v=8191&y,k=y>>>13,O=0|i[4],P=8191&O,E=O>>>13,I=0|i[5],_=8191&I,x=I>>>13,S=0|i[6],M=8191&S,A=S>>>13,N=0|i[7],F=8191&N,T=N>>>13,B=0|i[8],R=8191&B,U=B>>>13,H=0|i[9],L=8191&H,D=H>>>13,C=0|s[0],q=8191&C,V=C>>>13,K=0|s[1],z=8191&K,$=K>>>13,j=0|s[2],X=8191&j,G=j>>>13,W=0|s[3],Y=8191&W,Z=W>>>13,Q=0|s[4],J=8191&Q,tt=Q>>>13,et=0|s[5],rt=8191&et,it=et>>>13,st=0|s[6],nt=8191&st,at=st>>>13,ot=0|s[7],ct=8191&ot,ht=ot>>>13,dt=0|s[8],ut=8191&dt,lt=dt>>>13,ft=0|s[9],bt=8191&ft,pt=ft>>>13;r.negative=t.negative^e.negative,r.length=19,a=Math.imul(u,q),o=Math.imul(u,V),o=o+Math.imul(l,q)|0,c=Math.imul(l,V);let mt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(mt>>>26)|0,mt&=67108863,a=Math.imul(b,q),o=Math.imul(b,V),o=o+Math.imul(p,q)|0,c=Math.imul(p,V),a=a+Math.imul(u,z)|0,o=o+Math.imul(u,$)|0,o=o+Math.imul(l,z)|0,c=c+Math.imul(l,$)|0;let gt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(gt>>>26)|0,gt&=67108863,a=Math.imul(g,q),o=Math.imul(g,V),o=o+Math.imul(w,q)|0,c=Math.imul(w,V),a=a+Math.imul(b,z)|0,o=o+Math.imul(b,$)|0,o=o+Math.imul(p,z)|0,c=c+Math.imul(p,$)|0,a=a+Math.imul(u,X)|0,o=o+Math.imul(u,G)|0,o=o+Math.imul(l,X)|0,c=c+Math.imul(l,G)|0;let wt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(wt>>>26)|0,wt&=67108863,a=Math.imul(v,q),o=Math.imul(v,V),o=o+Math.imul(k,q)|0,c=Math.imul(k,V),a=a+Math.imul(g,z)|0,o=o+Math.imul(g,$)|0,o=o+Math.imul(w,z)|0,c=c+Math.imul(w,$)|0,a=a+Math.imul(b,X)|0,o=o+Math.imul(b,G)|0,o=o+Math.imul(p,X)|0,c=c+Math.imul(p,G)|0,a=a+Math.imul(u,Y)|0,o=o+Math.imul(u,Z)|0,o=o+Math.imul(l,Y)|0,c=c+Math.imul(l,Z)|0;let yt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(yt>>>26)|0,yt&=67108863,a=Math.imul(P,q),o=Math.imul(P,V),o=o+Math.imul(E,q)|0,c=Math.imul(E,V),a=a+Math.imul(v,z)|0,o=o+Math.imul(v,$)|0,o=o+Math.imul(k,z)|0,c=c+Math.imul(k,$)|0,a=a+Math.imul(g,X)|0,o=o+Math.imul(g,G)|0,o=o+Math.imul(w,X)|0,c=c+Math.imul(w,G)|0,a=a+Math.imul(b,Y)|0,o=o+Math.imul(b,Z)|0,o=o+Math.imul(p,Y)|0,c=c+Math.imul(p,Z)|0,a=a+Math.imul(u,J)|0,o=o+Math.imul(u,tt)|0,o=o+Math.imul(l,J)|0,c=c+Math.imul(l,tt)|0;let vt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(vt>>>26)|0,vt&=67108863,a=Math.imul(_,q),o=Math.imul(_,V),o=o+Math.imul(x,q)|0,c=Math.imul(x,V),a=a+Math.imul(P,z)|0,o=o+Math.imul(P,$)|0,o=o+Math.imul(E,z)|0,c=c+Math.imul(E,$)|0,a=a+Math.imul(v,X)|0,o=o+Math.imul(v,G)|0,o=o+Math.imul(k,X)|0,c=c+Math.imul(k,G)|0,a=a+Math.imul(g,Y)|0,o=o+Math.imul(g,Z)|0,o=o+Math.imul(w,Y)|0,c=c+Math.imul(w,Z)|0,a=a+Math.imul(b,J)|0,o=o+Math.imul(b,tt)|0,o=o+Math.imul(p,J)|0,c=c+Math.imul(p,tt)|0,a=a+Math.imul(u,rt)|0,o=o+Math.imul(u,it)|0,o=o+Math.imul(l,rt)|0,c=c+Math.imul(l,it)|0;let kt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(kt>>>26)|0,kt&=67108863,a=Math.imul(M,q),o=Math.imul(M,V),o=o+Math.imul(A,q)|0,c=Math.imul(A,V),a=a+Math.imul(_,z)|0,o=o+Math.imul(_,$)|0,o=o+Math.imul(x,z)|0,c=c+Math.imul(x,$)|0,a=a+Math.imul(P,X)|0,o=o+Math.imul(P,G)|0,o=o+Math.imul(E,X)|0,c=c+Math.imul(E,G)|0,a=a+Math.imul(v,Y)|0,o=o+Math.imul(v,Z)|0,o=o+Math.imul(k,Y)|0,c=c+Math.imul(k,Z)|0,a=a+Math.imul(g,J)|0,o=o+Math.imul(g,tt)|0,o=o+Math.imul(w,J)|0,c=c+Math.imul(w,tt)|0,a=a+Math.imul(b,rt)|0,o=o+Math.imul(b,it)|0,o=o+Math.imul(p,rt)|0,c=c+Math.imul(p,it)|0,a=a+Math.imul(u,nt)|0,o=o+Math.imul(u,at)|0,o=o+Math.imul(l,nt)|0,c=c+Math.imul(l,at)|0;let Ot=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,a=Math.imul(F,q),o=Math.imul(F,V),o=o+Math.imul(T,q)|0,c=Math.imul(T,V),a=a+Math.imul(M,z)|0,o=o+Math.imul(M,$)|0,o=o+Math.imul(A,z)|0,c=c+Math.imul(A,$)|0,a=a+Math.imul(_,X)|0,o=o+Math.imul(_,G)|0,o=o+Math.imul(x,X)|0,c=c+Math.imul(x,G)|0,a=a+Math.imul(P,Y)|0,o=o+Math.imul(P,Z)|0,o=o+Math.imul(E,Y)|0,c=c+Math.imul(E,Z)|0,a=a+Math.imul(v,J)|0,o=o+Math.imul(v,tt)|0,o=o+Math.imul(k,J)|0,c=c+Math.imul(k,tt)|0,a=a+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0,o=o+Math.imul(w,rt)|0,c=c+Math.imul(w,it)|0,a=a+Math.imul(b,nt)|0,o=o+Math.imul(b,at)|0,o=o+Math.imul(p,nt)|0,c=c+Math.imul(p,at)|0,a=a+Math.imul(u,ct)|0,o=o+Math.imul(u,ht)|0,o=o+Math.imul(l,ct)|0,c=c+Math.imul(l,ht)|0;let Pt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,a=Math.imul(R,q),o=Math.imul(R,V),o=o+Math.imul(U,q)|0,c=Math.imul(U,V),a=a+Math.imul(F,z)|0,o=o+Math.imul(F,$)|0,o=o+Math.imul(T,z)|0,c=c+Math.imul(T,$)|0,a=a+Math.imul(M,X)|0,o=o+Math.imul(M,G)|0,o=o+Math.imul(A,X)|0,c=c+Math.imul(A,G)|0,a=a+Math.imul(_,Y)|0,o=o+Math.imul(_,Z)|0,o=o+Math.imul(x,Y)|0,c=c+Math.imul(x,Z)|0,a=a+Math.imul(P,J)|0,o=o+Math.imul(P,tt)|0,o=o+Math.imul(E,J)|0,c=c+Math.imul(E,tt)|0,a=a+Math.imul(v,rt)|0,o=o+Math.imul(v,it)|0,o=o+Math.imul(k,rt)|0,c=c+Math.imul(k,it)|0,a=a+Math.imul(g,nt)|0,o=o+Math.imul(g,at)|0,o=o+Math.imul(w,nt)|0,c=c+Math.imul(w,at)|0,a=a+Math.imul(b,ct)|0,o=o+Math.imul(b,ht)|0,o=o+Math.imul(p,ct)|0,c=c+Math.imul(p,ht)|0,a=a+Math.imul(u,ut)|0,o=o+Math.imul(u,lt)|0,o=o+Math.imul(l,ut)|0,c=c+Math.imul(l,lt)|0;let Et=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Et>>>26)|0,Et&=67108863,a=Math.imul(L,q),o=Math.imul(L,V),o=o+Math.imul(D,q)|0,c=Math.imul(D,V),a=a+Math.imul(R,z)|0,o=o+Math.imul(R,$)|0,o=o+Math.imul(U,z)|0,c=c+Math.imul(U,$)|0,a=a+Math.imul(F,X)|0,o=o+Math.imul(F,G)|0,o=o+Math.imul(T,X)|0,c=c+Math.imul(T,G)|0,a=a+Math.imul(M,Y)|0,o=o+Math.imul(M,Z)|0,o=o+Math.imul(A,Y)|0,c=c+Math.imul(A,Z)|0,a=a+Math.imul(_,J)|0,o=o+Math.imul(_,tt)|0,o=o+Math.imul(x,J)|0,c=c+Math.imul(x,tt)|0,a=a+Math.imul(P,rt)|0,o=o+Math.imul(P,it)|0,o=o+Math.imul(E,rt)|0,c=c+Math.imul(E,it)|0,a=a+Math.imul(v,nt)|0,o=o+Math.imul(v,at)|0,o=o+Math.imul(k,nt)|0,c=c+Math.imul(k,at)|0,a=a+Math.imul(g,ct)|0,o=o+Math.imul(g,ht)|0,o=o+Math.imul(w,ct)|0,c=c+Math.imul(w,ht)|0,a=a+Math.imul(b,ut)|0,o=o+Math.imul(b,lt)|0,o=o+Math.imul(p,ut)|0,c=c+Math.imul(p,lt)|0,a=a+Math.imul(u,bt)|0,o=o+Math.imul(u,pt)|0,o=o+Math.imul(l,bt)|0,c=c+Math.imul(l,pt)|0;let It=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(It>>>26)|0,It&=67108863,a=Math.imul(L,z),o=Math.imul(L,$),o=o+Math.imul(D,z)|0,c=Math.imul(D,$),a=a+Math.imul(R,X)|0,o=o+Math.imul(R,G)|0,o=o+Math.imul(U,X)|0,c=c+Math.imul(U,G)|0,a=a+Math.imul(F,Y)|0,o=o+Math.imul(F,Z)|0,o=o+Math.imul(T,Y)|0,c=c+Math.imul(T,Z)|0,a=a+Math.imul(M,J)|0,o=o+Math.imul(M,tt)|0,o=o+Math.imul(A,J)|0,c=c+Math.imul(A,tt)|0,a=a+Math.imul(_,rt)|0,o=o+Math.imul(_,it)|0,o=o+Math.imul(x,rt)|0,c=c+Math.imul(x,it)|0,a=a+Math.imul(P,nt)|0,o=o+Math.imul(P,at)|0,o=o+Math.imul(E,nt)|0,c=c+Math.imul(E,at)|0,a=a+Math.imul(v,ct)|0,o=o+Math.imul(v,ht)|0,o=o+Math.imul(k,ct)|0,c=c+Math.imul(k,ht)|0,a=a+Math.imul(g,ut)|0,o=o+Math.imul(g,lt)|0,o=o+Math.imul(w,ut)|0,c=c+Math.imul(w,lt)|0,a=a+Math.imul(b,bt)|0,o=o+Math.imul(b,pt)|0,o=o+Math.imul(p,bt)|0,c=c+Math.imul(p,pt)|0;let _t=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(_t>>>26)|0,_t&=67108863,a=Math.imul(L,X),o=Math.imul(L,G),o=o+Math.imul(D,X)|0,c=Math.imul(D,G),a=a+Math.imul(R,Y)|0,o=o+Math.imul(R,Z)|0,o=o+Math.imul(U,Y)|0,c=c+Math.imul(U,Z)|0,a=a+Math.imul(F,J)|0,o=o+Math.imul(F,tt)|0,o=o+Math.imul(T,J)|0,c=c+Math.imul(T,tt)|0,a=a+Math.imul(M,rt)|0,o=o+Math.imul(M,it)|0,o=o+Math.imul(A,rt)|0,c=c+Math.imul(A,it)|0,a=a+Math.imul(_,nt)|0,o=o+Math.imul(_,at)|0,o=o+Math.imul(x,nt)|0,c=c+Math.imul(x,at)|0,a=a+Math.imul(P,ct)|0,o=o+Math.imul(P,ht)|0,o=o+Math.imul(E,ct)|0,c=c+Math.imul(E,ht)|0,a=a+Math.imul(v,ut)|0,o=o+Math.imul(v,lt)|0,o=o+Math.imul(k,ut)|0,c=c+Math.imul(k,lt)|0,a=a+Math.imul(g,bt)|0,o=o+Math.imul(g,pt)|0,o=o+Math.imul(w,bt)|0,c=c+Math.imul(w,pt)|0;let xt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(xt>>>26)|0,xt&=67108863,a=Math.imul(L,Y),o=Math.imul(L,Z),o=o+Math.imul(D,Y)|0,c=Math.imul(D,Z),a=a+Math.imul(R,J)|0,o=o+Math.imul(R,tt)|0,o=o+Math.imul(U,J)|0,c=c+Math.imul(U,tt)|0,a=a+Math.imul(F,rt)|0,o=o+Math.imul(F,it)|0,o=o+Math.imul(T,rt)|0,c=c+Math.imul(T,it)|0,a=a+Math.imul(M,nt)|0,o=o+Math.imul(M,at)|0,o=o+Math.imul(A,nt)|0,c=c+Math.imul(A,at)|0,a=a+Math.imul(_,ct)|0,o=o+Math.imul(_,ht)|0,o=o+Math.imul(x,ct)|0,c=c+Math.imul(x,ht)|0,a=a+Math.imul(P,ut)|0,o=o+Math.imul(P,lt)|0,o=o+Math.imul(E,ut)|0,c=c+Math.imul(E,lt)|0,a=a+Math.imul(v,bt)|0,o=o+Math.imul(v,pt)|0,o=o+Math.imul(k,bt)|0,c=c+Math.imul(k,pt)|0;let St=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(St>>>26)|0,St&=67108863,a=Math.imul(L,J),o=Math.imul(L,tt),o=o+Math.imul(D,J)|0,c=Math.imul(D,tt),a=a+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,o=o+Math.imul(U,rt)|0,c=c+Math.imul(U,it)|0,a=a+Math.imul(F,nt)|0,o=o+Math.imul(F,at)|0,o=o+Math.imul(T,nt)|0,c=c+Math.imul(T,at)|0,a=a+Math.imul(M,ct)|0,o=o+Math.imul(M,ht)|0,o=o+Math.imul(A,ct)|0,c=c+Math.imul(A,ht)|0,a=a+Math.imul(_,ut)|0,o=o+Math.imul(_,lt)|0,o=o+Math.imul(x,ut)|0,c=c+Math.imul(x,lt)|0,a=a+Math.imul(P,bt)|0,o=o+Math.imul(P,pt)|0,o=o+Math.imul(E,bt)|0,c=c+Math.imul(E,pt)|0;let Mt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,a=Math.imul(L,rt),o=Math.imul(L,it),o=o+Math.imul(D,rt)|0,c=Math.imul(D,it),a=a+Math.imul(R,nt)|0,o=o+Math.imul(R,at)|0,o=o+Math.imul(U,nt)|0,c=c+Math.imul(U,at)|0,a=a+Math.imul(F,ct)|0,o=o+Math.imul(F,ht)|0,o=o+Math.imul(T,ct)|0,c=c+Math.imul(T,ht)|0,a=a+Math.imul(M,ut)|0,o=o+Math.imul(M,lt)|0,o=o+Math.imul(A,ut)|0,c=c+Math.imul(A,lt)|0,a=a+Math.imul(_,bt)|0,o=o+Math.imul(_,pt)|0,o=o+Math.imul(x,bt)|0,c=c+Math.imul(x,pt)|0;let At=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(At>>>26)|0,At&=67108863,a=Math.imul(L,nt),o=Math.imul(L,at),o=o+Math.imul(D,nt)|0,c=Math.imul(D,at),a=a+Math.imul(R,ct)|0,o=o+Math.imul(R,ht)|0,o=o+Math.imul(U,ct)|0,c=c+Math.imul(U,ht)|0,a=a+Math.imul(F,ut)|0,o=o+Math.imul(F,lt)|0,o=o+Math.imul(T,ut)|0,c=c+Math.imul(T,lt)|0,a=a+Math.imul(M,bt)|0,o=o+Math.imul(M,pt)|0,o=o+Math.imul(A,bt)|0,c=c+Math.imul(A,pt)|0;let Nt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,a=Math.imul(L,ct),o=Math.imul(L,ht),o=o+Math.imul(D,ct)|0,c=Math.imul(D,ht),a=a+Math.imul(R,ut)|0,o=o+Math.imul(R,lt)|0,o=o+Math.imul(U,ut)|0,c=c+Math.imul(U,lt)|0,a=a+Math.imul(F,bt)|0,o=o+Math.imul(F,pt)|0,o=o+Math.imul(T,bt)|0,c=c+Math.imul(T,pt)|0;let Ft=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,a=Math.imul(L,ut),o=Math.imul(L,lt),o=o+Math.imul(D,ut)|0,c=Math.imul(D,lt),a=a+Math.imul(R,bt)|0,o=o+Math.imul(R,pt)|0,o=o+Math.imul(U,bt)|0,c=c+Math.imul(U,pt)|0;let Tt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,a=Math.imul(L,bt),o=Math.imul(L,pt),o=o+Math.imul(D,bt)|0,c=Math.imul(D,pt);let Bt=(h+a|0)+((8191&o)<<13)|0;return h=(c+(o>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n[0]=mt,n[1]=gt,n[2]=wt,n[3]=yt,n[4]=vt,n[5]=kt,n[6]=Ot,n[7]=Pt,n[8]=Et,n[9]=It,n[10]=_t,n[11]=xt,n[12]=St,n[13]=Mt,n[14]=At,n[15]=Nt,n[16]=Ft,n[17]=Tt,n[18]=Bt,0!==h&&(n[19]=h,r.length++),r}bigMulTo(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;let i=0,s=0,n=0;for(;n<r.length-1;n++){let a=s;s=0;let o=67108863&i;const c=Math.min(n,e.length-1);for(let r=Math.max(0,n-t.length+1);r<=c;r++){const i=n-r,c=(0|t.words[i])*(0|e.words[r]);let h=67108863&c;a=a+(c/67108864|0)|0,h=h+o|0,o=67108863&h,a=a+(h>>>26)|0,s+=a>>>26,a&=67108863}r.words[n]=o,i=a,a=s}return 0!==i?r.words[n]=i:r.length--,r.strip()}mulTo(t,e){let r;const i=this.length+t.length;return r=10===this.length&&10===t.length?this.comb10MulTo(this,t,e):i<63?this.smallMulTo(this,t,e):this.bigMulTo(this,t,e),r}mul(t){const e=new c;return e.words=new Array(this.length+t.length),this.mulTo(t,e)}imul(t){return this.clone().mulTo(t,this)}imuln(t){const e=t<0;e&&(t=-t),this.assert("number"==typeof t),this.assert(t<67108864);let r=0,i=0;for(;i<this.length;i++){const e=(0|this.words[i])*t,s=(67108863&e)+(67108863&r);r>>=26,r+=e/67108864|0,r+=s>>>26,this.words[i]=67108863&s}return 0!==r&&(this.words[i]=r,this.length++),e?this.ineg():this}muln(t){return this.clone().imuln(t)}sqr(){return this.mul(this)}isqr(){return this.imul(this.clone())}pow(t){const e=c.toBitArray(t);if(0===e.length)return new c(1);let r=this,i=0;for(;i<e.length&&0===e[i];i++,r=r.sqr());if(++i<e.length)for(let t=r.sqr();i<e.length;i++,t=t.sqr())0!==e[i]&&(r=r.mul(t));return r}iushln(t){this.assert("number"==typeof t&&t>=0);const e=t%26,r=(t-e)/26,i=67108863>>>26-e<<26-e;let s;if(0!==e){let t=0;for(s=0;s<this.length;s++){const r=this.words[s]&i,n=(0|this.words[s])-r<<e;this.words[s]=n|t,t=r>>>26-e}0!==t&&(this.words[s]=t,this.length++)}if(0!==r){for(s=this.length-1;s>=0;s--)this.words[s+r]=this.words[s];for(s=0;s<r;s++)this.words[s]=0;this.length+=r}return this.strip()}ishln(t){return this.assert(0===this.negative),this.iushln(t)}iushrn(t,e,r){let i;this.assert("number"==typeof t&&t>=0),i="number"==typeof e&&0!==e?(e-e%26)/26:0;const s=t%26,n=Math.min((t-s)/26,this.length),a=67108863^67108863>>>s<<s,o=r;i-=n,i=Math.max(0,i);let c=0;if(void 0!==o){for(;c<n;c++)o.words[c]=this.words[c];o.length=n}if(0===n);else if(this.length>n)for(this.length-=n,c=0;c<this.length;c++)this.words[c]=this.words[c+n];else this.words[0]=0,this.length=1;let h=0;for(c=this.length-1;c>=0&&(0!==h||c>=i);c--){const t=0|this.words[c];this.words[c]=h<<26-s|t>>>s,h=t&a}return null!=o&&0!==h&&(o.words[o.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()}ishrn(t,e,r){return this.assert(0===this.negative),this.iushrn(t,e,r)}shln(t){return this.clone().ishln(t)}ushln(t){return this.clone().iushln(t)}shrn(t){return this.clone().ishrn(t)}ushrn(t){return this.clone().iushrn(t)}testn(t){this.assert("number"==typeof t&&t>=0);const e=t%26,r=(t-e)/26,i=1<<e;if(this.length<=r)return!1;const s=this.words[r];return Boolean(s&i)}imaskn(t){this.assert("number"==typeof t&&t>=0);const e=t%26;let r=(t-e)/26;if(this.assert(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){const t=67108863^67108863>>>e<<e;this.words[this.length-1]&=t}return this.strip()}maskn(t){return this.clone().imaskn(t)}iaddn(t){return this.assert("number"==typeof t),this.assert(t<67108864,"num is too large"),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)}_iaddn(t){this.words[0]+=t;let e=0;for(;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this}isubn(t){if(this.assert("number"==typeof t),this.assert(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(let t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this.strip()}addn(t){return this.clone().iaddn(t)}subn(t){return this.clone().isubn(t)}iabs(){return this.negative=0,this}abs(){return this.clone().iabs()}_ishlnsubmul(t,e,r){const i=t.length+r;let s,n;this.expand(i);let a=0;for(s=0;s<t.length;s++){n=(0|this.words[s+r])+a;const i=(0|t.words[s])*e;n-=67108863&i,a=(n>>26)-(i/67108864|0),this.words[s+r]=67108863&n}for(;s<this.length-r;s++)n=(0|this.words[s+r])+a,a=n>>26,this.words[s+r]=67108863&n;if(0===a)return this.strip();for(this.assert(-1===a,"carry must be -1"),a=0,s=0;s<this.length;s++)n=-(0|this.words[s])+a,a=n>>26,this.words[s]=67108863&n;return this.negative=1,this.strip()}wordDiv(t,e){let r=this.length-t.length,i=this.clone(),s=t,n=0|s.words[s.length-1];r=26-this.countWordBits(n),0!==r&&(s=s.ushln(r),i.iushln(r),n=0|s.words[s.length-1]);const a=i.length-s.length;let o;if("mod"!==e){o=new c,o.length=a+1,o.words=new Array(o.length);for(let t=0;t<o.length;t++)o.words[t]=0}const h=i.clone()._ishlnsubmul(s,1,a);0===h.negative&&(i=h,void 0!==o&&(o.words[a]=1));for(let t=a-1;t>=0;t--){let e=67108864*(0|i.words[s.length+t])+(0|i.words[s.length+t-1]);for(e=Math.min(e/n|0,67108863),i._ishlnsubmul(s,e,t);0!==i.negative;)e--,i.negative=0,i._ishlnsubmul(s,1,t),i.isZero()||(i.negative^=1);void 0!==o&&(o.words[t]=e)}return void 0!==o&&o.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:o??null,mod:i}}divmod(t,e,r){if(this.assert(!t.isZero()),this.isZero())return{div:new c(0),mod:new c(0)};let i,s,n;return 0!==this.negative&&0===t.negative?(n=this.neg().divmod(t,e),"mod"!==e&&(i=n.div.neg()),"div"!==e&&(s=n.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:i,mod:s}):0===this.negative&&0!==t.negative?(n=this.divmod(t.neg(),e),"mod"!==e&&(i=n.div.neg()),{div:i,mod:n.mod}):this.negative&t.negative?(n=this.neg().divmod(t.neg(),e),"div"!==e&&(s=n.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:n.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new c(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new c(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new c(this.modrn(t.words[0]))}:this.wordDiv(t,e)}div(t){return this.divmod(t,"div",!1).div}mod(t){return this.divmod(t,"mod",!1).mod}umod(t){return this.divmod(t,"mod",!0).mod}divRound(t){const e=this.divmod(t);if(e.mod.isZero())return e.div;const r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),s=t.andln(1),n=r.cmp(i);return n<0||1===s&&0===n?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)}modrn(t){const e=t<0;e&&(t=-t),this.assert(t<=67108863);const r=(1<<26)%t;let i=0;for(let e=this.length-1;e>=0;e--)i=(r*i+(0|this.words[e]))%t;return e?-i:i}idivn(t){const e=t<0;e&&(t=-t),this.assert(t<=67108863);let r=0;for(let e=this.length-1;e>=0;e--){const i=(0|this.words[e])+67108864*r;this.words[e]=i/t|0,r=i%t}return this.strip(),e?this.ineg():this}divn(t){return this.clone().idivn(t)}egcd(t){this.assert(0===t.negative,"p must not be negative"),this.assert(!t.isZero(),"p must not be zero");let e=this;const r=t.clone();e=0!==e.negative?e.umod(t):e.clone();const i=new c(1),s=new c(0),n=new c(0),a=new c(1);let o=0;for(;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++o;const h=r.clone(),d=e.clone();for(;!e.isZero();){let t=0,o=1;for(;!(e.words[0]&o)&&t<26;++t,o<<=1);if(t>0)for(e.iushrn(t);t-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(h),s.isub(d)),i.iushrn(1),s.iushrn(1);let c=0,u=1;for(;!(r.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(r.iushrn(c);c-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(h),a.isub(d)),n.iushrn(1),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(n),s.isub(a)):(r.isub(e),n.isub(i),a.isub(s))}return{a:n,b:a,gcd:r.iushln(o)}}_invmp(t){this.assert(0===t.negative,"p must not be negative"),this.assert(!t.isZero(),"p must not be zero");let e=this;const r=t.clone();e=0!==e.negative?e.umod(t):e.clone();const i=new c(1),s=new c(0),n=r.clone();for(;e.cmpn(1)>0&&r.cmpn(1)>0;){let t=0,a=1;for(;!(e.words[0]&a)&&t<26;++t,a<<=1);if(t>0)for(e.iushrn(t);t-- >0;)i.isOdd()&&i.iadd(n),i.iushrn(1);let o=0,c=1;for(;!(r.words[0]&c)&&o<26;++o,c<<=1);if(o>0)for(r.iushrn(o);o-- >0;)s.isOdd()&&s.iadd(n),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(s)):(r.isub(e),s.isub(i))}let a;return a=0===e.cmpn(1)?i:s,a.cmpn(0)<0&&a.iadd(t),a}gcd(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();let e=this.clone(),r=t.clone();e.negative=0,r.negative=0;let i=0;for(;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);const t=e.cmp(r);if(t<0){const t=e;e=r,r=t}else if(0===t||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)}invm(t){return this.egcd(t).a.umod(t)}isEven(){return!(1&this.words[0])}isOdd(){return!(1&~this.words[0])}andln(t){return this.words[0]&t}bincn(t){this.assert("number"==typeof t);const e=t%26,r=(t-e)/26,i=1<<e;if(this.length<=r)return this.expand(r+1),this.words[r]|=i,this;let s=i,n=r;for(;0!==s&&n<this.length;n++){let t=0|this.words[n];t+=s,s=t>>>26,t&=67108863,this.words[n]=t}return 0!==s&&(this.words[n]=s,this.length++),this}isZero(){return 1===this.length&&0===this.words[0]}cmpn(t){const e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;let r;if(this.strip(),this.length>1)r=1;else{e&&(t=-t),this.assert(t<=67108863,"Number is too big");const i=0|this.words[0];r=i===t?0:i<t?-1:1}return 0!==this.negative?0|-r:r}cmp(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;const e=this.ucmp(t);return 0!==this.negative?0|-e:e}ucmp(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;let e=0;for(let r=this.length-1;r>=0;r--){const i=0|this.words[r],s=0|t.words[r];if(i!==s){i<s?e=-1:i>s&&(e=1);break}}return e}gtn(t){return 1===this.cmpn(t)}gt(t){return 1===this.cmp(t)}gten(t){return this.cmpn(t)>=0}gte(t){return this.cmp(t)>=0}ltn(t){return-1===this.cmpn(t)}lt(t){return-1===this.cmp(t)}lten(t){return this.cmpn(t)<=0}lte(t){return this.cmp(t)<=0}eqn(t){return 0===this.cmpn(t)}eq(t){return 0===this.cmp(t)}toRed(t){return this.assert(null==this.red,"Already a number in reduction context"),this.assert(0===this.negative,"red works only with positives"),t.convertTo(this).forceRed(t)}fromRed(){return this.assert(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)}forceRed(t){return this.red=t,this}redAdd(t){return this.assert(this.red,"redAdd works only with red numbers"),this.red.add(this,t)}redIAdd(t){return this.assert(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)}redSub(t){return this.assert(this.red,"redSub works only with red numbers"),this.red.sub(this,t)}redISub(t){return this.assert(this.red,"redISub works only with red numbers"),this.red.isub(this,t)}redShl(t){return this.assert(this.red,"redShl works only with red numbers"),this.red.shl(this,t)}redMul(t){return this.assert(this.red,"redMul works only with red numbers"),this.red.verify2(this,t),this.red.mul(this,t)}redIMul(t){return this.assert(this.red,"redMul works only with red numbers"),this.red.verify2(this,t),this.red.imul(this,t)}redSqr(){return this.assert(this.red,"redSqr works only with red numbers"),this.red.verify1(this),this.red.sqr(this)}redISqr(){return this.assert(this.red,"redISqr works only with red numbers"),this.red.verify1(this),this.red.isqr(this)}redSqrt(){return this.assert(this.red,"redSqrt works only with red numbers"),this.red.verify1(this),this.red.sqrt(this)}redInvm(){return this.assert(this.red,"redInvm works only with red numbers"),this.red.verify1(this),this.red.invm(this)}redNeg(){return this.assert(this.red,"redNeg works only with red numbers"),this.red.verify1(this),this.red.neg(this)}redPow(t){return this.assert(null!=this.red&&null==t.red,"redPow(normalNum)"),this.red.verify1(this),this.red.pow(this,t)}static fromHex(t,e){return"big"===e?new c(t,16):new c(t,16,"le")}toHex(t=0){return this.toString("hex",2*t)}static fromJSON(t){return new c(t)}static fromNumber(t){return new c(t)}static fromString(t,e){return new c(t,e)}static fromSm(t,e="big"){let r=t;return 0===t.length?new c(0):("little"===e&&(r=[...r],r=r.reverse()),128&r[0]?(r=[...r],r[0]=127&r[0],new c(r).neg()):new c(r))}toSm(t="big"){let e;return-1===this.cmpn(0)?(e=this.neg().toArray(),128&e[0]?e=[128,...e]:e[0]=128|e[0]):(e=this.toArray(),128&e[0]&&(e=[0,...e])),1===e.length&&0===e[0]&&(e=[]),"little"===t&&(e=e.reverse()),e}static fromBits(t,e=!1){if(t=2147483648&t?t-4294967296:t,e&&8388608&t)throw new Error("negative bit set");const r=t>>24,i=8388607&t;let s=[i>>24&255,i>>16&255,i>>8&255,255&i];if(r<=3)s=s.slice(1,1+r);else for(let t=0;t<r-3;t++)s.push(0);return 8388608&t?new c(s).neg():new c(s)}toBits(){let t;for(t=this.ltn(0)?this.neg().toArray("be"):this.toArray("be");t.length<4;)t.unshift(0);if(t.every((t=>0===t)))return 0;for(;0===t[0];)t.shift();let e=t.length,r=t.slice(0,3).reduce(((t,e)=>256*t+e),0);8388608&r&&(t.unshift(0),e+=1,r>>>=8);let i=e<<24|r;return this.ltn(0)&&(i|=8388608),i>>>0}static fromScriptNum(t,e,r){if(void 0===r&&(r=Number.MAX_SAFE_INTEGER),t.length>r)throw new Error("script number overflow");if(e&&t.length>0&&!(127&t[t.length-1]||!(t.length<=1)&&128&t[t.length-2]))throw new Error("non-minimally encoded script number");return c.fromSm(t,"little")}toScriptNum(){return this.toSm("little")}}class h{name;p;k;n;tmp;constructor(t,e){this.name=t,this.p=new c(e,16),this.n=this.p.bitLength(),this.k=new c(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}_tmp(){const t=new c;return t.words=new Array(Math.ceil(this.n/13)),t}ireduce(t){let e,r=t;do{this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength()}while(e>this.n);const i=e<this.n?-1:r.ucmp(this.p);return 0===i?(r.words[0]=0,r.length=1):i>0?r.isub(this.p):(r.strip,r.strip()),r}split(t,e){t.iushrn(this.n,0,e)}imulK(t){return t.imul(this.k)}}class d extends h{constructor(){super("k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}split(t,e){const r=4194303,i=Math.min(t.length,9);let s=0;for(;s<i;s++)e.words[s]=t.words[s];if(e.length=i,t.length<=9)return t.words[0]=0,void(t.length=1);let n=t.words[9];for(e.words[e.length++]=n&r,s=10;s<t.length;s++){const e=0|t.words[s];t.words[s-10]=(e&r)<<4|n>>>22,n=e}n>>>=22,t.words[s-10]=n,0===n&&t.length>10?t.length-=10:t.length-=9}imulK(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;let e=0;for(let r=0;r<t.length;r++){const i=0|t.words[r];e+=977*i,t.words[r]=67108863&e,e=64*i+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t}}class u{prime;m;constructor(t){if("k256"===t){const t=new d;this.m=t.p,this.prime=t}else this.assert(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}assert(t,e="Assertion failed"){if(!t)throw new Error(e)}verify1(t){this.assert(0===t.negative,"red works only with positives"),this.assert(t.red,"red works only with red numbers")}verify2(t,e){this.assert(!(t.negative|e.negative),"red works only with positives"),this.assert(null!=t.red&&t.red===e.red,"red works only with red numbers")}imod(t){return null!=this.prime?this.prime.ireduce(t).forceRed(this):(c.move(t,t.umod(this.m).forceRed(this)),t)}neg(t){return t.isZero()?t.clone():this.m.sub(t).forceRed(this)}add(t,e){this.verify2(t,e);const r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r.forceRed(this)}iadd(t,e){this.verify2(t,e);const r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r}sub(t,e){this.verify2(t,e);const r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r.forceRed(this)}isub(t,e){this.verify2(t,e);const r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r}shl(t,e){return this.verify1(t),this.imod(t.ushln(e))}imul(t,e){return this.verify2(t,e),this.imod(t.imul(e))}mul(t,e){return this.verify2(t,e),this.imod(t.mul(e))}isqr(t){return this.imul(t,t.clone())}sqr(t){return this.mul(t,t)}sqrt(t){if(t.isZero())return t.clone();const e=this.m.andln(3);if(this.assert(e%2==1),3===e){const e=this.m.add(new c(1)).iushrn(2);return this.pow(t,e)}const r=this.m.subn(1);let i=0;for(;!r.isZero()&&0===r.andln(1);)i++,r.iushrn(1);this.assert(!r.isZero());const s=new c(1).toRed(this),n=s.redNeg(),a=this.m.subn(1).iushrn(1),o=this.m.bitLength(),h=new c(2*o*o).toRed(this);for(;0!==this.pow(h,a).cmp(n);)h.redIAdd(n);let d=this.pow(h,r),u=this.pow(t,r.addn(1).iushrn(1)),l=this.pow(t,r),f=i;for(;0!==l.cmp(s);){let t=l,e=0;for(;0!==t.cmp(s);e++)t=t.redSqr();this.assert(e<f);const r=this.pow(d,new c(1).iushln(f-e-1));u=u.redMul(r),d=r.redSqr(),l=l.redMul(d),f=e}return u}invm(t){const e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)}pow(t,e){if(e.isZero())return new c(1).toRed(this);if(0===e.cmpn(1))return t.clone();const r=new Array(16);r[0]=new c(1).toRed(this),r[1]=t;let i=2;for(;i<r.length;i++)r[i]=this.mul(r[i-1],t);let s=r[0],n=0,a=0,o=e.bitLength()%26;for(0===o&&(o=26),i=e.length-1;i>=0;i--){const t=e.words[i];for(let e=o-1;e>=0;e--){const o=t>>e&1;s!==r[0]&&(s=this.sqr(s)),0!==o||0!==n?(n<<=1,n|=o,a++,(4===a||0===i&&0===e)&&(s=this.mul(s,r[n]),a=0,n=0)):a=0}o=26}return s}convertTo(t){const e=t.umod(this.m);return e===t?e.clone():e}convertFrom(t){const e=t.clone();return e.red=null,e}}class l extends u{shift;r;r2;rinv;minv;constructor(t){super(t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new c(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}convertTo(t){return this.imod(t.ushln(this.shift))}convertFrom(t){const e=this.imod(t.mul(this.rinv));return e.red=null,e}imul(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;const r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(i).iushrn(this.shift);let n=s;return s.cmp(this.m)>=0?n=s.isub(this.m):s.cmpn(0)<0&&(n=s.iadd(this.m)),n.forceRed(this)}mul(t,e){if(t.isZero()||e.isZero())return new c(0).forceRed(this);const r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(i).iushrn(this.shift);let n=s;return s.cmp(this.m)>=0?n=s.isub(this.m):s.cmpn(0)<0&&(n=s.iadd(this.m)),n.forceRed(this)}invm(t){return this.imod(t._invmp(this.m).mul(this.r2)).forceRed(this)}}class f{curve;type;precomputed;constructor(t){this.curve=new qt,this.type=t,this.precomputed=null}}class b extends f{x;y;z;zOne;constructor(t,e,r){super("jacobian"),null===t&&null===e&&null===r?(this.x=this.curve.one,this.y=this.curve.one,this.z=new c(0)):(c.isBN(t)||(t=new c(t,16)),this.x=t,c.isBN(e)||(e=new c(e,16)),this.y=e,c.isBN(r)||(r=new c(r,16)),this.z=r),null==this.x.red&&(this.x=this.x.toRed(this.curve.red)),null==this.y.red&&(this.y=this.y.toRed(this.curve.red)),null==this.z.red&&(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}toP(){if(this.isInfinity())return new Dt(null,null);const t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return new Dt(r,i)}neg(){return new b(this.x,this.y.redNeg(),this.z)}add(t){if(this.isInfinity())return t;if(t.isInfinity())return this;const e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),s=t.x.redMul(r),n=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),o=i.redSub(s),c=n.redSub(a);if(0===o.cmpn(0))return 0!==c.cmpn(0)?new b(null,null,null):this.dbl();const h=o.redSqr(),d=h.redMul(o),u=i.redMul(h),l=c.redSqr().redIAdd(d).redISub(u).redISub(u),f=c.redMul(u.redISub(l)).redISub(n.redMul(d)),p=this.z.redMul(t.z).redMul(o);return new b(l,f,p)}mixedAdd(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;const e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),s=this.y,n=t.y.redMul(e).redMul(this.z),a=r.redSub(i),o=s.redSub(n);if(0===a.cmpn(0))return 0!==o.cmpn(0)?new b(null,null,null):this.dbl();const c=a.redSqr(),h=c.redMul(a),d=r.redMul(c),u=o.redSqr().redIAdd(h).redISub(d).redISub(d),l=o.redMul(d.redISub(u)).redISub(s.redMul(h)),f=this.z.redMul(a);return new b(u,l,f)}dblp(t){if(0===t)return this;if(this.isInfinity())return this;if(void 0===t)return this.dbl();let e=this;for(let r=0;r<t;r++)e=e.dbl();return e}dbl(){if(this.isInfinity())return this;let t,e,r;if(this.zOne){const i=this.x.redSqr(),s=this.y.redSqr(),n=s.redSqr();let a=this.x.redAdd(s).redSqr().redISub(i).redISub(n);a=a.redIAdd(a);const o=i.redAdd(i).redIAdd(i),c=o.redSqr().redISub(a).redISub(a);let h=n.redIAdd(n);h=h.redIAdd(h),h=h.redIAdd(h),t=c,e=o.redMul(a.redISub(c)).redISub(h),r=this.y.redAdd(this.y)}else{const i=this.x.redSqr(),s=this.y.redSqr(),n=s.redSqr();let a=this.x.redAdd(s).redSqr().redISub(i).redISub(n);a=a.redIAdd(a);const o=i.redAdd(i).redIAdd(i),c=o.redSqr();let h=n.redIAdd(n);h=h.redIAdd(h),h=h.redIAdd(h),t=c.redISub(a).redISub(a),e=o.redMul(a.redISub(t)).redISub(h),r=this.y.redMul(this.z),r=r.redIAdd(r)}return new b(t,e,r)}eq(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;const e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;const i=e.redMul(this.z),s=r.redMul(t.z);return 0===this.y.redMul(s).redISub(t.y.redMul(i)).cmpn(0)}eqXToP(t){const e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;const i=t.clone(),s=this.curve.redN.redMul(e);for(;;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(s),0===this.x.cmp(r))return!0}}inspect(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"}isInfinity(){return 0===this.z.cmpn(0)}}const p=(t,e="Hash assertion failed")=>{if(!t)throw new Error(e)};class m{pending;pendingTotal;blockSize;outSize;endian;_delta8;_delta32;padLength;hmacStrength;constructor(t,e,r,i){this.pending=null,this.pendingTotal=0,this.blockSize=t,this.outSize=e,this.hmacStrength=r,this.padLength=i/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}_update(t,e){throw new Error("Not implemented")}_digest(){throw new Error("Not implemented")}_digestHex(){throw new Error("Not implemented")}update(t,e){if(t=w(t,e),null==this.pending?this.pending=t:this.pending=this.pending.concat(t),this.pendingTotal+=t.length,this.pending.length>=this._delta8){const e=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-e,t.length),0===this.pending.length&&(this.pending=null),t=function(t,e,r,i){const s=r-0;p(s%4==0);const n=new Array(s/4);for(let e=0,r=0;e<n.length;e++,r+=4){let s;s="big"===i?t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]:t[r+3]<<24|t[r+2]<<16|t[r+1]<<8|t[r],n[e]=s>>>0}return n}(t,0,t.length-e,this.endian);for(let e=0;e<t.length;e+=this._delta32)this._update(t,e)}return this}digest(){return this.update(this._pad()),p(null===this.pending),this._digest()}digestHex(){return this.update(this._pad()),p(null===this.pending),this._digestHex()}_pad(){let t=this.pendingTotal;const e=this._delta8,r=e-(t+this.padLength)%e,i=new Array(r+this.padLength);let s,n;for(i[0]=128,s=1;s<r;s++)i[s]=0;if(t<<=3,"big"===this.endian){for(n=8;n<this.padLength;n++)i[s++]=0;i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=t>>>24&255,i[s++]=t>>>16&255,i[s++]=t>>>8&255,i[s++]=255&t}else for(i[s++]=255&t,i[s++]=t>>>8&255,i[s++]=t>>>16&255,i[s++]=t>>>24&255,i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=0,n=8;n<this.padLength;n++)i[s++]=0;return i}}function g(t,e){return 55296==(64512&t.charCodeAt(e))&&!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1))}function w(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];const r=[];if("string"==typeof t)if("hex"!==e){let e=0;for(let i=0;i<t.length;i++){let s=t.charCodeAt(i);s<128?r[e++]=s:s<2048?(r[e++]=s>>6|192,r[e++]=63&s|128):g(t,i)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++i)),r[e++]=s>>18|240,r[e++]=s>>12&63|128,r[e++]=s>>6&63|128,r[e++]=63&s|128):(r[e++]=s>>12|224,r[e++]=s>>6&63|128,r[e++]=63&s|128)}}else{(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(let e=0;e<t.length;e+=2)r.push(parseInt(t[e]+t[e+1],16))}else for(let e=0;e<t.length;e++)r[e]=0|t[e];return r}function y(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function v(t,e){let r="";for(let s=0;s<t.length;s++){let n=t[s];"little"===e&&(n=y(n)),r+=7===(i=n.toString(16)).length?"0"+i:6===i.length?"00"+i:5===i.length?"000"+i:4===i.length?"0000"+i:3===i.length?"00000"+i:2===i.length?"000000"+i:1===i.length?"0000000"+i:i}var i;return r}function k(t,e){const r=new Array(4*t.length);for(let i=0,s=0;i<t.length;i++,s+=4){const n=t[i];"big"===e?(r[s]=n>>>24,r[s+1]=n>>>16&255,r[s+2]=n>>>8&255,r[s+3]=255&n):(r[s+3]=n>>>24,r[s+2]=n>>>16&255,r[s+1]=n>>>8&255,r[s]=255&n)}return r}function O(t,e){return t>>>e|t<<32-e}function P(t,e){return t<<e|t>>>32-e}function E(t,e){return t+e>>>0}function I(t,e,r){return t+e+r>>>0}function _(t,e,r,i){return t+e+r+i>>>0}function x(t,e,r,i,s){return t+e+r+i+s>>>0}function S(t,e,r,i){return 0===t?M(e,r,i):1===t||3===t?function(t,e,r){return t^e^r}(e,r,i):2===t?A(e,r,i):void 0}function M(t,e,r){return t&e^~t&r}function A(t,e,r){return t&e^t&r^e&r}function N(t){return O(t,2)^O(t,13)^O(t,22)}function F(t){return O(t,6)^O(t,11)^O(t,25)}function T(t){return O(t,7)^O(t,18)^t>>>3}const B=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],R=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],U=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],H=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];function L(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function D(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function C(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}function q(t,e,r,i){const s=t[e],n=i+t[e+1]>>>0,a=(n<i?1:0)+r+s;t[e]=a>>>0,t[e+1]=n}function V(t,e,r,i){return(e+i>>>0<e?1:0)+t+r>>>0}function K(t,e,r,i){return e+i>>>0}function z(t,e,r,i,s,n,a,o){let c=0,h=e;return h=h+i>>>0,c+=h<e?1:0,h=h+n>>>0,c+=h<n?1:0,h=h+o>>>0,c+=h<o?1:0,t+r+s+a+c>>>0}function $(t,e,r,i,s,n,a,o,c,h){let d=0,u=e;return u=u+i>>>0,d+=u<e?1:0,u=u+n>>>0,d+=u<n?1:0,u=u+o>>>0,d+=u<o?1:0,u=u+h>>>0,d+=u<h?1:0,t+r+s+a+c+d>>>0}function j(t,e,r,i,s,n,a,o,c,h){return e+i+n+o+h>>>0}function X(t,e,r){return(e<<32-r|t>>>r)>>>0}function G(t,e,r){return(t<<32-r|e>>>r)>>>0}function W(t,e,r){return t>>>r}function Y(t,e,r){return(t<<32-r|e>>>r)>>>0}class Z extends m{h;constructor(){super(512,160,192,64),this.endian="little",this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}_update(t,e){let r,i=this.h[0],s=this.h[1],n=this.h[2],a=this.h[3],o=this.h[4],c=i,h=s,d=n,u=a,l=o;for(let f=0;f<80;f++)r=E(P(_(i,L(f,s,n,a),t[B[f]+e],D(f)),U[f]),o),i=o,o=a,a=P(n,10),n=s,s=r,r=E(P(_(c,L(79-f,h,d,u),t[R[f]+e],C(f)),H[f]),l),c=l,l=u,u=P(d,10),d=h,h=r;r=I(this.h[1],n,u),this.h[1]=I(this.h[2],a,l),this.h[2]=I(this.h[3],o,c),this.h[3]=I(this.h[4],i,h),this.h[4]=I(this.h[0],s,d),this.h[0]=r}_digest(){return k(this.h,"little")}_digestHex(){return v(this.h,"little")}}class Q extends m{h;W;k;constructor(){super(512,256,192,64),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=[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],this.W=new Array(64)}_update(t,e){const r=this.W;let i;for(i=0;i<16;i++)r[i]=t[e+i];for(;i<r.length;i++)r[i]=_(O(s=r[i-2],17)^O(s,19)^s>>>10,r[i-7],T(r[i-15]),r[i-16]);var s;let n=this.h[0],a=this.h[1],o=this.h[2],c=this.h[3],h=this.h[4],d=this.h[5],u=this.h[6],l=this.h[7];for(p(this.k.length===r.length),i=0;i<r.length;i++){const t=x(l,F(h),M(h,d,u),this.k[i],r[i]),e=E(N(n),A(n,a,o));l=u,u=d,d=h,h=E(c,t),c=o,o=a,a=n,n=E(t,e)}this.h[0]=E(this.h[0],n),this.h[1]=E(this.h[1],a),this.h[2]=E(this.h[2],o),this.h[3]=E(this.h[3],c),this.h[4]=E(this.h[4],h),this.h[5]=E(this.h[5],d),this.h[6]=E(this.h[6],u),this.h[7]=E(this.h[7],l)}_digest(){return k(this.h,"big")}_digestHex(){return v(this.h,"big")}}class J extends m{h;W;k;constructor(){super(512,160,80,64),this.k=[1518500249,1859775393,2400959708,3395469782],this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}_update(t,e){const r=this.W;let i;for(i=0;i<16;i++)r[i]=t[e+i];for(;i<r.length;i++)r[i]=P(r[i-3]^r[i-8]^r[i-14]^r[i-16],1);let s=this.h[0],n=this.h[1],a=this.h[2],o=this.h[3],c=this.h[4];for(i=0;i<r.length;i++){const t=~~(i/20),e=x(P(s,5),S(t,n,a,o),c,r[i],this.k[t]);c=o,o=a,a=P(n,30),n=s,s=e}this.h[0]=E(this.h[0],s),this.h[1]=E(this.h[1],n),this.h[2]=E(this.h[2],a),this.h[3]=E(this.h[3],o),this.h[4]=E(this.h[4],c)}_digest(){return k(this.h,"big")}_digestHex(){return v(this.h,"big")}}class tt extends m{h;W;k;constructor(){super(1024,512,192,128),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],this.W=new Array(160)}_prepareBlock(t,e){const r=this.W;let i;for(i=0;i<32;i++)r[i]=t[e+i];for(;i<r.length;i+=2){const t=ut(r[i-4],r[i-3]),e=lt(r[i-4],r[i-3]),s=r[i-14],n=r[i-13],a=ht(r[i-30],r[i-29]),o=dt(r[i-30],r[i-29]),c=r[i-32],h=r[i-31];r[i]=z(t,e,s,n,a,o,c,h),r[i+1]=e+n+o+h>>>0}}_update(t,e){this._prepareBlock(t,e);const r=this.W;let i=this.h[0],s=this.h[1],n=this.h[2],a=this.h[3],o=this.h[4],c=this.h[5],h=this.h[6],d=this.h[7],u=this.h[8],l=this.h[9],f=this.h[10],b=this.h[11],m=this.h[12],g=this.h[13],w=this.h[14],y=this.h[15];p(this.k.length===r.length);for(let t=0;t<r.length;t+=2){let e=w,p=y,v=ot(u,l),k=ct(u,l);const O=et(u,0,f,0,m),P=rt(0,l,0,b,0,g),E=this.k[t],I=this.k[t+1],_=r[t],x=r[t+1],S=$(e,p,v,k,O,P,E,I,_,x),M=j(0,p,0,k,0,P,0,I,0,x);e=nt(i,s),p=at(i,s),v=it(i,0,n,0,o),k=st(0,s,0,a,0,c);const A=V(e,p,v,k),N=K(0,p,0,k);w=m,y=g,m=f,g=b,f=u,b=l,u=V(h,d,S,M),l=K(0,d,0,M),h=o,d=c,o=n,c=a,n=i,a=s,i=V(S,M,A,N),s=K(0,M,0,N)}q(this.h,0,i,s),q(this.h,2,n,a),q(this.h,4,o,c),q(this.h,6,h,d),q(this.h,8,u,l),q(this.h,10,f,b),q(this.h,12,m,g),q(this.h,14,w,y)}_digest(){return k(this.h,"big")}_digestHex(){return v(this.h,"big")}}function et(t,e,r,i,s,n){let a=t&r^~t&s;return a<0&&(a+=4294967296),a}function rt(t,e,r,i,s,n){let a=e&i^~e&n;return a<0&&(a+=4294967296),a}function it(t,e,r,i,s,n){let a=t&r^t&s^r&s;return a<0&&(a+=4294967296),a}function st(t,e,r,i,s,n){let a=e&i^e&n^i&n;return a<0&&(a+=4294967296),a}function nt(t,e){let r=X(t,e,28)^X(e,t,2)^X(e,t,7);return r<0&&(r+=4294967296),r}function at(t,e){let r=G(t,e,28)^G(e,t,2)^G(e,t,7);return r<0&&(r+=4294967296),r}function ot(t,e){let r=X(t,e,14)^X(t,e,18)^X(e,t,9);return r<0&&(r+=4294967296),r}function ct(t,e){let r=G(t,e,14)^G(t,e,18)^G(e,t,9);return r<0&&(r+=4294967296),r}function ht(t,e){let r=X(t,e,1)^X(t,e,8)^W(t,0,7);return r<0&&(r+=4294967296),r}function dt(t,e){let r=G(t,e,1)^G(t,e,8)^Y(t,e,7);return r<0&&(r+=4294967296),r}function ut(t,e){let r=X(t,e,19)^X(e,t,29)^W(t,0,6);return r<0&&(r+=4294967296),r}function lt(t,e){let r=G(t,e,19)^G(e,t,29)^Y(t,e,6);return r<0&&(r+=4294967296),r}class ft{inner;outer;blockSize=64;outSize=32;constructor(t){let e;for((t=w(t,"hex")).length>this.blockSize&&(t=(new Q).update(t).digest()),p(t.length<=this.blockSize),e=t.length;e<this.blockSize;e++)t.push(0);for(e=0;e<t.length;e++)t[e]^=54;for(this.inner=(new Q).update(t),e=0;e<t.length;e++)t[e]^=106;this.outer=(new Q).update(t)}update(t,e){return this.inner.update(t,e),this}digest(){return this.outer.update(this.inner.digest()),this.outer.digest()}digestHex(){return this.outer.update(this.inner.digest()),this.outer.digestHex()}}class bt{inner;outer;blockSize=64;constructor(t){let e;for((t=w(t,"hex")).length>this.blockSize&&(t=(new J).update(t).digest()),e=t.length;e<this.blockSize;e++)t.push(0);for(e=0;e<t.length;e++)t[e]^=54;for(this.inner=(new J).update(t),e=0;e<t.length;e++)t[e]^=106;this.outer=(new J).update(t)}update(t,e){return this.inner.update(t,e),this}digest(){return this.outer.update(this.inner.digest()),this.outer.digest()}digestHex(){return this.outer.update(this.inner.digest()),this.outer.digestHex()}}class pt{inner;outer;blockSize=128;outSize=32;constructor(t){let e;for((t=w(t,"hex")).length>this.blockSize&&(t=(new tt).update(t).digest()),p(t.length<=this.blockSize),e=t.length;e<this.blockSize;e++)t.push(0);for(e=0;e<t.length;e++)t[e]^=54;for(this.inner=(new tt).update(t),e=0;e<t.length;e++)t[e]^=106;this.outer=(new tt).update(t)}update(t,e){return this.inner.update(t,e),this}digest(){return this.outer.update(this.inner.digest()),this.outer.digest()}digestHex(){return this.outer.update(this.inner.digest()),this.outer.digestHex()}}const mt=(t,e)=>(new Z).update(t,e).digest(),gt=(t,e)=>(new J).update(t,e).digest(),wt=(t,e)=>(new Q).update(t,e).digest(),yt=(t,e)=>(new tt).update(t,e).digest(),vt=(t,e)=>{const r=(new Q).update(t,e).digest();return(new Q).update(r).digest()},kt=(t,e)=>{const r=(new Q).update(t,e).digest();return(new Z).update(r).digest()},Ot=(t,e,r)=>new ft(t).update(e,r).digest(),Pt=(t,e,r)=>new pt(t).update(e,r).digest();function Et(t,e,r,i,s="sha512"){if("sha512"!==s)throw new Error("Only sha512 is supported in this PBKDF2 implementation");const n=new Array(i),a=[...e,0,0,0,0];let o=0;const c=Math.ceil(i/64);for(let i=1;i<=c;i++){a[e.length]=i>>24&255,a[e.length+1]=i>>16&255,a[e.length+2]=i>>8&255,a[e.length+3]=255&i;const s=Pt(t,a);let c=s;for(let e=1;e<r;e++){c=Pt(t,c);for(let t=0;t<64;t++)s[t]^=c[t]}for(let t=0;t<s.length;t++)n[o+t]=s[t];o+=64}return n.slice(0,i)}const It=t=>t.length%2==1?"0"+t:t,_t=t=>{let e="";for(let r=0;r<t.length;r++)e+=It(t[r].toString(16));return e},xt=(t,e)=>{if(Array.isArray(t))return t.slice();if(!t)return[];const r=[];if("string"!=typeof t){for(let e=0;e<t.length;e++)r[e]=0|t[e];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(let e=0;e<t.length;e+=2)r.push(parseInt(t[e]+t[e+1],16))}else{if("base64"===e){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=[];let i=0,s=0;for(const n of t.replace(/=+$/,""))i=i<<6|e.indexOf(n),s+=6,s>=8&&(s-=8,r.push(i>>s&255),i&=(1<<s)-1);return r}for(let e=0;e<t.length;e++){const i=t.charCodeAt(e),s=i>>8,n=255&i;s?r.push(s,n):r.push(n)}}return r},St=t=>{let e="";for(let r=0;r<t.length;r++){const i=t[r];if(i<=127)e+=String.fromCharCode(i);else if(i>=192&&i<=223){const s=(31&i)<<6|63&t[++r];e+=String.fromCharCode(s)}else if(i>=224&&i<=239){const s=(15&i)<<12|(63&t[++r])<<6|63&t[++r];e+=String.fromCharCode(s)}else if(i>=240&&i<=247){const s=(7&i)<<18|(63&t[++r])<<12|(63&t[++r])<<6|63&t[++r],n=55296+(s-65536>>10),a=56320+(s-65536&1023);e+=String.fromCharCode(n,a)}}return e},Mt=(t,e)=>{switch(e){case"hex":return _t(t);case"utf8":return St(t);default:return t}};function At(t){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let r,i="";for(r=0;r<t.length;r+=3){const s=t[r],n=r+1<t.length?t[r+1]:0,a=r+2<t.length?t[r+2]:0,o=(3&s)<<4|n>>4,c=(15&n)<<2|a>>6,h=63&a;i+=e.charAt(s>>2)+e.charAt(o),i+=r+1<t.length?e.charAt(c):"=",i+=r+2<t.length?e.charAt(h):"="}return i}const Nt="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",Ft=t=>{if(!t||"string"!=typeof t)throw new Error(`Expected base58 string but got “${t}”`);if(t.match(/[IOl0]/gmu))throw new Error(`Invalid base58 character “${t.match(/[IOl0]/gmu)}”`);const e=t.match(/^1+/gmu),r=e?e[0].length:0,i=(t.length-r)*(Math.log(58)/Math.log(256))+1>>>0;var s;return[...new Uint8Array([...new Uint8Array(r),...t.match(/.{1}/gmu).map((t=>Nt.indexOf(t))).reduce(((t,e)=>t.map((t=>{const r=58*t+e;return e=r>>8,r}))),new Uint8Array(i)).reverse().filter((s=!1,t=>s=s||t))])]},Tt=t=>{const e=Array(256).fill(-1);for(let t=0;t<58;++t)e[Nt.charCodeAt(t)]=t;const r=[];for(const i of t){let t=i;for(let i=0;i<r.length;++i){const s=(e[r[i]]<<8)+t;r[i]=Nt.charCodeAt(s%58),t=s/58|0}for(;t;)r.push(Nt.charCodeAt(t%58)),t=t/58|0}for(const e of t){if(e)break;r.push("1".charCodeAt(0))}return r.reverse(),String.fromCharCode(...r)},Bt=(t,e=[0])=>{let r=vt([...e,...t]);return r=[...e,...t,...r.slice(0,4)],Tt(r)},Rt=(t,e,r=1)=>{const i=Ft(t);let s=i.slice(0,r),n=i.slice(r,-4),a=[...s,...n];return a=vt(a),i.slice(-4).forEach(((t,e)=>{if(t!==a[e])throw new Error("Invalid checksum")})),"hex"===e&&(s=_t(s),n=_t(n)),{prefix:s,data:n}};class Ut{bufs;constructor(t){this.bufs=t||[]}getLength(){let t=0;for(const e of this.bufs)t+=e.length;return t}toArray(){const t=this.getLength(),e=new Array(t);let r=0;for(const t of this.bufs)for(let i=0;i<t.length;i++)e[r++]=t[i];return e}write(t){return this.bufs.push(t),this}writeReverse(t){const e=new Array(t.length);for(let r=0;r<e.length;r++)e[r]=t[t.length-1-r];return this.bufs.push(e),this}writeUInt8(t){const e=new Array(1);return e[0]=t,this.write(e),this}writeInt8(t){const e=new Array(1);return e[0]=255&t,this.write(e),this}writeUInt16BE(t){return this.bufs.push([t>>8&255,255&t]),this}writeInt16BE(t){return this.writeUInt16BE(65535&t)}writeUInt16LE(t){return this.bufs.push([255&t,t>>8&255]),this}writeInt16LE(t){return this.writeUInt16LE(65535&t)}writeUInt32BE(t){return this.bufs.push([t>>24&255,t>>16&255,t>>8&255,255&t]),this}writeInt32BE(t){return this.writeUInt32BE(t>>>0)}writeUInt32LE(t){return this.bufs.push([255&t,t>>8&255,t>>16&255,t>>24&255]),this}writeInt32LE(t){return this.writeUInt32LE(t>>>0)}writeUInt64BEBn(t){const e=t.toArray("be",8);return this.write(e),this}writeUInt64LEBn(t){const e=t.toArray("be",8);return this.writeReverse(e),this}writeUInt64LE(t){const e=new c(t).toArray("be",8);return this.writeReverse(e),this}writeVarIntNum(t){const e=Ut.varIntNum(t);return this.write(e),this}writeVarIntBn(t){const e=Ut.varIntBn(t);return this.write(e),this}static varIntNum(t){let e;if(t<253)e=[t];else if(t<65536)e=[253,255&t,t>>8&255];else if(t<4294967296)e=[254,255&t,t>>8&255,t>>16&255,t>>24&255];else{const r=4294967295&t,i=4294967295&Math.floor(t/4294967296);e=[255,255&r,r>>8&255,r>>16&255,r>>24&255,255&i,i>>8&255,i>>16&255,i>>24&255]}return e}static varIntBn(t){let e;if(t.ltn(253))e=[t.toNumber()];else if(t.ltn(65536)){const r=t.toNumber();e=[253,255&r,r>>8&255]}else if(t.lt(new c(4294967296))){const r=t.toNumber();e=[254,255&r,r>>8&255,r>>16&255,r>>24&255]}else{const r=new Ut;r.writeUInt8(255),r.writeUInt64LEBn(t),e=r.toArray()}return e}}class Ht{bin;pos;constructor(t=[],e=0){this.bin=t,this.pos=e}eof(){return this.pos>=this.bin.length}read(t=this.bin.length){const e=this.pos,r=this.pos+t;return this.pos=r,this.bin.slice(e,r)}readReverse(t=this.bin.length){const e=new Array(t);for(let r=0;r<t;r++)e[r]=this.bin[this.pos+t-1-r];return this.pos+=t,e}readUInt8(){const t=this.bin[this.pos];return this.pos+=1,t}readInt8(){const t=this.bin[this.pos];return this.pos+=1,128&t?t-256:t}readUInt16BE(){const t=this.bin[this.pos]<<8|this.bin[this.pos+1];return this.pos+=2,t}readInt16BE(){const t=this.readUInt16BE();return 32768&t?t-65536:t}readUInt16LE(){const t=this.bin[this.pos]|this.bin[this.pos+1]<<8;return this.pos+=2,t}readInt16LE(){const t=this.readUInt16LE();return 32768&t?t-65536:t}readUInt32BE(){const t=16777216*this.bin[this.pos]+(this.bin[this.pos+1]<<16|this.bin[this.pos+2]<<8|this.bin[this.pos+3]);return this.pos+=4,t}readInt32BE(){const t=this.readUInt32BE();return 2147483648&t?t-4294967296:t}readUInt32LE(){const t=(this.bin[this.pos]|this.bin[this.pos+1]<<8|this.bin[this.pos+2]<<16|this.bin[this.pos+3]<<24)>>>0;return this.pos+=4,t}readInt32LE(){const t=this.readUInt32LE();return 2147483648&t?t-4294967296:t}readUInt64BEBn(){const t=this.bin.slice(this.pos,this.pos+8),e=new c(t);return this.pos=this.pos+8,e}readUInt64LEBn(){const t=this.readReverse(8);return new c(t)}readVarIntNum(){const t=this.readUInt8();let e;switch(t){case 253:return this.readUInt16LE();case 254:return this.readUInt32LE();case 255:if(e=this.readUInt64LEBn(),e.lte(new c(2).pow(new c(53))))return e.toNumber();throw new Error("number too large to retain precision - use readVarIntBn");default:return t}}readVarInt(){switch(this.bin[this.pos]){case 253:return this.read(3);case 254:return this.read(5);case 255:return this.read(9);default:return this.read(1)}}readVarIntBn(){const t=this.readUInt8();switch(t){case 253:return new c(this.readUInt16LE());case 254:return new c(this.readUInt32LE());case 255:return this.readUInt64LEBn();default:return new c(t)}}}const Lt=t=>{if(0===t.length)return t;const e=t[t.length-1];if(127&e)return t;if(1===t.length)return[];if(128&t[t.length-2])return t;for(let r=t.length-1;r>0;r--)if(0!==t[r-1])return 128&t[r-1]?t[r++]=e:t[r-1]|=e,t.slice(0,r);return[]};class Dt extends f{static red=new u("k256");static a=new c(0).toRed(Dt.red);static b=new c(7).toRed(Dt.red);static zero=new c(0).toRed(Dt.red);x;y;inf;static fromDER(t){if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==64){if(6===t[0]){if(t[t.length-1]%2!=0)throw new Error("Point string value is wrong length")}else if(7===t[0]&&t[t.length-1]%2!=1)throw new Error("Point string value is wrong length");return new Dt(t.slice(1,33),t.slice(33,65))}if((2===t[0]||3===t[0])&&t.length-1==32)return Dt.fromX(t.slice(1,33),3===t[0]);throw new Error("Unknown point format")}static fromString(t){const e=xt(t,"hex");return Dt.fromDER(e)}static redSqrtOptimized(t){const e=Dt.red.m.addn(1).iushrn(2);return t.redPow(e)}static fromX(t,e){if("function"==typeof BigInt){function r(t,e){return(t%e+e)%e}function i(t,e,i){let s=BigInt(1);for(t=r(t,i);e>BigInt(0);)(e&BigInt(1))===BigInt(1)&&(s=r(s*t,i)),e>>=BigInt(1),t=r(t*t,i);return s}function s(t,e){const s=i(t,e+BigInt(1)>>BigInt(2),e);return r(s*s,e)===r(t,e)?s:null}const n=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"),a=(BigInt(0),BigInt(7));let o;if(t instanceof c)o=BigInt("0x"+t.toString(16));else if("string"==typeof t)o=BigInt("0x"+t);else if(Array.isArray(t))o=BigInt("0x"+Buffer.from(t).toString("hex").padStart(64,"0"));else{if("number"!=typeof t)throw new Error("Invalid x-coordinate type");o=BigInt(t)}o=r(o,n);let h=s(r(i(o,BigInt(3),n)+a,n),n);if(null===h)throw new Error("Invalid point");const d=h%BigInt(2)===BigInt(1);(e&&!d||!e&&d)&&(h=n-h);const l=new c(o.toString(16),16),f=new c(h.toString(16),16);return new Dt(l,f)}{const b=new u("k256"),p=new c(0).toRed(b),m=new c(7).toRed(b),g=new c(0).toRed(b);c.isBN(t)||(t=new c(t,16)),null==t.red&&(t=t.toRed(b));const w=t.redSqr().redMul(t).redIAdd(t.redMul(p)).redIAdd(m);let y=w.redSqrt();if(0!==y.redSqr().redSub(w).cmp(g))throw new Error("invalid point");const v=y.fromRed().isOdd();return(e&&!v||!e&&v)&&(y=y.redNeg()),new Dt(t,y)}}static fromJSON(t,e){"string"==typeof t&&(t=JSON.parse(t));const r=new Dt(t[0],t[1],e);if("object"!=typeof t[2])return r;const i=t=>new Dt(t[0],t[1],e),s=t[2];return r.precomputed={beta:null,doubles:"object"==typeof s.doubles&&null!==s.doubles?{step:s.doubles.step,points:[r].concat(s.doubles.points.map(i))}:void 0,naf:"object"==typeof s.naf&&null!==s.naf?{wnd:s.naf.wnd,points:[r].concat(s.naf.points.map(i))}:void 0},r}constructor(t,e,r=!0){super("affine"),this.precomputed=null,null===t&&null===e?(this.x=null,this.y=null,this.inf=!0):(c.isBN(t)||(t=new c(t,16)),this.x=t,c.isBN(e)||(e=new c(e,16)),this.y=e,r&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),null===this.x.red&&(this.x=this.x.toRed(this.curve.red)),null===this.y.red&&(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}validate(){return this.curve.validate(this)}encode(t=!0,e){const r=this.curve.p.byteLength(),i=this.getX().toArray("be",r);let s;return s=t?[this.getY().isEven()?2:3].concat(i):[4].concat(i,this.getY().toArray("be",r)),"hex"!==e?s:_t(s)}toString(){return this.encode(!0,"hex")}toJSON(){return null==this.precomputed?[this.x,this.y]:[this.x,this.y,"object"==typeof this.precomputed&&null!==this.precomputed?{doubles:null!=this.precomputed.doubles?{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)}:void 0,naf:null!=this.precomputed.naf?{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}:void 0}:void 0]}inspect(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"}isInfinity(){return this.inf}add(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return new Dt(null,null);if(0===this.x.cmp(t.x))return new Dt(null,null);let e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));const r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return new Dt(r,i)}dbl(){if(this.inf)return this;const t=this.y.redAdd(this.y);if(0===t.cmpn(0))return new Dt(null,null);const e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),s=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),n=s.redSqr().redISub(this.x.redAdd(this.x)),a=s.redMul(this.x.redSub(n)).redISub(this.y);return new Dt(n,a)}getX(){return this.x.fromRed()}getY(){return this.y.fromRed()}mul(t){return c.isBN(t)||(t=new c(t,16)),this.isInfinity()?this:this._hasDoubles(t)?this._fixedNafMul(t):this._endoWnafMulAdd([this],[t])}mulAdd(t,e,r){const i=[this,e],s=[t,r];return this._endoWnafMulAdd(i,s)}jmulAdd(t,e,r){const i=[this,e],s=[t,r];return this._endoWnafMulAdd(i,s,!0)}eq(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))}neg(t){if(this.inf)return this;const e=new Dt(this.x,this.y.redNeg());if(t&&null!=this.precomputed){const t=this.precomputed,r=t=>t.neg();e.precomputed={naf:null!=t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(r)},doubles:null!=t.doubles&&{step:t.doubles.step,points:t.doubles.points.map((t=>t.neg()))},beta:void 0}}return e}dblp(t){let e=this;for(let r=0;r<t;r++)e=e.dbl();return e}toJ(){return this.inf?new b(null,null,null):new b(this.x,this.y,this.curve.one)}_getBeta(){if("object"!=typeof this.curve.endo)return;const t=this.precomputed;if("object"==typeof t&&null!==t&&"object"==typeof t.beta&&null!==t.beta)return t.beta;const e=new Dt(this.x.redMul(this.curve.endo.beta),this.y);if(null!=t){const r=this.curve,i=t=>new Dt(t.x.redMul(r.endo.beta),t.y);t.beta=e,e.precomputed={beta:null,naf:null!=t.naf?{wnd:t.naf.wnd,points:t.naf.points.map(i)}:void 0,doubles:null!=t.doubles?{step:t.doubles.step,points:t.doubles.points.map(i)}:void 0}}return e}_fixedNafMul(t){if("object"!=typeof this.precomputed||null===this.precomputed)throw new Error("_fixedNafMul requires precomputed values for the point");const e=this._getDoubles(),r=this.curve.getNAF(t,1,this.curve._bitLength);let i=(1<<e.step+1)-(e.step%2==0?2:1);i/=3;const s=[];for(let t=0;t<r.length;t+=e.step){let i=0;for(let s=t+e.step-1;s>=t;s--)i=(i<<1)+r[s];s.push(i)}let n=new b(null,null,null),a=new b(null,null,null);for(let t=i;t>0;t--){for(let r=0;r<s.length;r++){const i=s[r];i===t?a=a.mixedAdd(e.points[r]):i===-t&&(a=a.mixedAdd(e.points[r].neg()))}n=n.add(a)}return n.toP()}_wnafMulAdd(t,e,r,i,s){const n=this.curve._wnafT1,a=this.curve._wnafT2,o=this.curve._wnafT3;let c=0;for(let r=0;r<i;r++){const i=e[r]._getNAFPoints(t);n[r]=i.wnd,a[r]=i.points}for(let t=i-1;t>=1;t-=2){const i=t-1,s=t;if(1!==n[i]||1!==n[s]){o[i]=this.curve.getNAF(r[i],n[i],this.curve._bitLength),o[s]=this.curve.getNAF(r[s],n[s],this.curve._bitLength),c=Math.max(o[i].length,c),c=Math.max(o[s].length,c);continue}const h=[e[i],null,null,e[s]];0===e[i].y.cmp(e[s].y)?(h[1]=e[i].add(e[s]),h[2]=e[i].toJ().mixedAdd(e[s].neg())):0===e[i].y.cmp(e[s].y.redNeg())?(h[1]=e[i].toJ().mixedAdd(e[s]),h[2]=e[i].add(e[s].neg())):(h[1]=e[i].toJ().mixedAdd(e[s]),h[2]=e[i].toJ().mixedAdd(e[s].neg()));const d=[-3,-1,-5,-7,0,7,5,1,3],u=this.curve.getJSF(r[i],r[s]);c=Math.max(u[0].length,c),o[i]=new Array(c),o[s]=new Array(c);for(let t=0;t<c;t++){const e=0|u[0][t],r=0|u[1][t];o[i][t]=d[3*(e+1)+(r+1)],o[s][t]=0,a[i]=h}}let h=new b(null,null,null);const d=this.curve._wnafT4;for(let t=c;t>=0;t--){let e=0;for(;t>=0;){let r=!0;for(let e=0;e<i;e++)d[e]=0|o[e][t],0!==d[e]&&(r=!1);if(!r)break;e++,t--}if(t>=0&&e++,h=h.dblp(e),t<0)break;for(let t=0;t<i;t++){const e=d[t];let r;0!==e&&(e>0?r=a[t][e-1>>1]:e<0&&(r=a[t][-e-1>>1].neg()),h="affine"===r.type?h.mixedAdd(r):h.add(r))}}for(let t=0;t<i;t++)a[t]=null;return s?h:h.toP()}_endoWnafMulAdd(t,e,r){const i=this.curve._endoWnafT1,s=this.curve._endoWnafT2;let n;for(n=0;n<t.length;n++){const r=this.curve._endoSplit(e[n]);let a=t[n],o=a._getBeta();0!==r.k1.negative&&(r.k1.ineg(),a=a.neg(!0)),0!==r.k2.negative&&(r.k2.ineg(),o=o.neg(!0)),i[2*n]=a,i[2*n+1]=o,s[2*n]=r.k1,s[2*n+1]=r.k2}const a=this._wnafMulAdd(1,i,s,2*n,r);for(let t=0;t<2*n;t++)i[t]=null,s[t]=null;return a}_hasDoubles(t){if(null==this.precomputed)return!1;const e=this.precomputed.doubles;return"object"==typeof e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)}_getDoubles(t,e){if("object"==typeof this.precomputed&&null!==this.precomputed&&"object"==typeof this.precomputed.doubles&&null!==this.precomputed.doubles)return this.precomputed.doubles;const r=[this];let i=this;for(let s=0;s<e;s+=t){for(let e=0;e<t;e++)i=i.dbl();r.push(i)}return{step:t,points:r}}_getNAFPoints(t){if("object"==typeof this.precomputed&&null!==this.precomputed&&"object"==typeof this.precomputed.naf&&null!==this.precomputed.naf)return this.precomputed.naf;const e=[this],r=(1<<t)-1,i=1===r?null:this.dbl();for(let t=1;t<r;t++)e[t]=e[t-1].add(i);return{wnd:t,points:e}}}let Ct;class qt{p;red;redN;zero;one;two;g;n;a;b;tinv;zeroA;threeA;endo;_endoWnafT1;_endoWnafT2;_wnafT1;_wnafT2;_wnafT3;_wnafT4;_bitLength;static assert(t,e="Elliptic curve assertion failed"){if(!t)throw new Error(e)}getNAF(t,e,r){const i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);const s=1<<e+1,n=t.clone();for(let t=0;t<i.length;t++){let e;const r=n.andln(s-1);n.isOdd()?(e=r>(s>>1)-1?(s>>1)-r:r,n.isubn(e)):e=0,i[t]=e,n.iushrn(1)}return i}getJSF(t,e){const r=[[],[]];t=t.clone(),e=e.clone();let i=0,s=0;for(;t.cmpn(-i)>0||e.cmpn(-s)>0;){let n,a,o=t.andln(3)+i&3,c=e.andln(3)+s&3;if(3===o&&(o=-1),3===c&&(c=-1),1&o){const e=t.andln(7)+i&7;n=3!==e&&5!==e||2!==c?o:-o}else n=0;if(r[0].push(n),1&c){const t=e.andln(7)+s&7;a=3!==t&&5!==t||2!==o?c:-c}else a=0;r[1].push(a),2*i===n+1&&(i=1-i),2*s===a+1&&(s=1-s),t.iushrn(1),e.iushrn(1)}return r}static cachedProperty(t,e,r){const i="_"+e;t.prototype[e]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}}static parseBytes(t){return"string"==typeof t?xt(t,"hex"):t}static intFromLE(t){return new c(t,"hex","le")}constructor(){if(void 0!==Ct)return Ct;Ct=this;const t={prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",{doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}]};this.p=new c(t.p,16),this.red=new u(t.prime),this.zero=new c(0).toRed(this.red),this.one=new c(1).toRed(this.red),this.two=new c(2).toRed(this.red),this.n=new c(t.n,16),this.g=Dt.fromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n.bitLength(),this.redN=this.n.toRed(this.red),this.a=new c(t.a,16).toRed(this.red),this.b=new c(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}_getEndomorphism(t){if(!this.zeroA||1!==this.p.modrn(3))return;let e,r,i;if(void 0!==t.beta)e=new c(t.beta,16).toRed(this.red);else{const t=this._getEndoRoots(this.p);e=t[0].cmp(t[1])<0?t[0]:t[1],e=e.toRed(this.red)}if(void 0!==t.lambda)r=new c(t.lambda,16);else{const t=this._getEndoRoots(this.n);0===this.g.mul(t[0]).x.cmp(this.g.x.redMul(e))?r=t[0]:(r=t[1],qt.assert(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return i="object"==typeof t.basis&&null!==t.basis?t.basis.map((function(t){return{a:new c(t.a,16),b:new c(t.b,16)}})):this._getEndoBasis(r),{beta:e,lambda:r,basis:i}}_getEndoRoots(t){const e=t===this.p?this.red:new l(t),r=new c(2).toRed(e).redInvm(),i=r.redNeg(),s=new c(3).toRed(e).redNeg().redSqrt().redMul(r);return[i.redAdd(s).fromRed(),i.redSub(s).fromRed()]}_getEndoBasis(t){const e=this.n.ushrn(Math.floor(this.n.bitLength()/2));let r,i,s,n,a,o,h,d,u,l=t,f=this.n.clone(),b=new c(1),p=new c(0),m=new c(0),g=new c(1),w=0;for(;0!==l.cmpn(0);){const t=f.div(l);d=f.sub(t.mul(l)),u=m.sub(t.mul(b));const a=g.sub(t.mul(p));if("object"!=typeof s&&d.cmp(e)<0)r=h.neg(),i=b,s=d.neg(),n=u;else if("object"==typeof s&&2==++w)break;h=d,f=l,l=d,m=b,b=u,g=p,p=a}a=d.neg(),o=u;const y=s.sqr().add(n.sqr());return a.sqr().add(o.sqr()).cmp(y)>=0&&(a=r,o=i),0!==s.negative&&(s=s.neg(),n=n.neg()),0!==a.negative&&(a=a.neg(),o=o.neg()),[{a:s,b:n},{a,b:o}]}_endoSplit(t){const e=this.endo.basis,r=e[0],i=e[1],s=i.b.mul(t).divRound(this.n),n=r.b.neg().mul(t).divRound(this.n),a=s.mul(r.a),o=n.mul(i.a),c=s.mul(r.b),h=n.mul(i.b);return{k1:t.sub(a).sub(o),k2:c.add(h).neg()}}validate(t){if(t.inf)return!0;const e=t.x,r=t.y,i=this.a.redMul(e),s=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(s).cmpn(0)}}class Vt{r;s;static fromDER(t,e){const r=(t,e)=>{const r=t[e.place++];if(128&r)throw new Error("Invalid DER entity length");return r};t=xt(t,e);const i=new class{place;constructor(){this.place=0}};if(48!==t[i.place++])throw new Error("Signature DER must start with 0x30");if(r(t,i)+i.place!==t.length)throw new Error("Signature DER invalid");if(2!==t[i.place++])throw new Error("Signature DER invalid");const s=r(t,i);let n=t.slice(i.place,s+i.place);if(i.place+=s,2!==t[i.place++])throw new Error("Signature DER invalid");const a=r(t,i);if(t.length!==a+i.place)throw new Error("Invalid R-length in signature DER");let o=t.slice(i.place,a+i.place);if(0===n[0]){if(!(128&n[1]))throw new Error("Invalid R-value in signature DER");n=n.slice(1)}if(0===o[0]){if(!(128&o[1]))throw new Error("Invalid S-value in signature DER");o=o.slice(1)}return new Vt(new c(n),new c(o))}static fromCompact(t,e){if(65!==(t=xt(t,e)).length)throw new Error("Invalid Compact Signature");const r=t[0];if(r<27||r>=35)throw new Error("Invalid Compact Byte");return new Vt(new c(t.slice(1,33)),new c(t.slice(33,65)))}constructor(t,e){this.r=t,this.s=e}verify(t,e,r){const i=new c(wt(t,r),16);return jt(i,this,e)}toString(t){return this.toDER(t)}toDER(t){const e=(t,e)=>{if(!(e<128))throw new Error("len must be < 0x80");t.push(e)},r=t=>{let e=0;const r=t.length-1;for(;0===t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)};let i=this.r.toArray(),s=this.s.toArray();for(128&i[0]&&(i=[0].concat(i)),128&s[0]&&(s=[0].concat(s)),i=r(i),s=r(s);0===s[0]&&!(128&s[1]);)s=s.slice(1);let n=[2];e(n,i.length),n=n.concat(i),n.push(2),e(n,s.length);const a=n.concat(s);let o=[48];return e(o,a.length),o=o.concat(a),"hex"===t?_t(o):"base64"===t?At(o):o}toCompact(t,e,r){if(t<0||t>3)throw new Error("Invalid recovery param");if("boolean"!=typeof e)throw new Error("Invalid compressed param");let i=27+t;e&&(i+=4);let s=[i];return s=s.concat(this.r.toArray("be",32)),s=s.concat(this.s.toArray("be",32)),"hex"===r?_t(s):"base64"===r?At(s):s}RecoverPublicKey(t,e){const r=this.r,i=this.s,s=!!(1&t),n=t>>1,a=new qt,o=a.n,c=a.g,h=n?r.add(o):r,d=Dt.fromX(h,s);if(!d.mul(o).isInfinity())throw new Error("nR is not at infinity");const u=e.neg().umod(o),l=r.invm(o),f=l.mul(i).umod(o),b=l.mul(u).umod(o),p=c.mul(b).add(d.mul(f)),m=new Xt(p);return m.validate(),m}CalculateRecoveryFactor(t,e){for(let r=0;r<4;r++){let i;try{i=this.RecoverPublicKey(r,e)}catch(t){continue}if(t.eq(i))return r}throw new Error("Unable to find valid recovery factor")}}class Kt{K;V;constructor(t,e){if(t=xt(t,"hex"),e=xt(e,"hex"),t.length<32)throw new Error("Not enough entropy. Minimum is 256 bits");const r=t.concat(e);this.K=new Array(32),this.V=new Array(32);for(let t=0;t<32;t++)this.K[t]=0,this.V[t]=1;this.update(r)}hmac(){return new ft(this.K)}update(t){let e=this.hmac().update(this.V).update([0]);void 0!==t&&(e=e.update(t)),this.K=e.digest(),this.V=this.hmac().update(this.V).digest(),void 0!==t&&(this.K=this.hmac().update(this.V).update([1]).update(t).digest(),this.V=this.hmac().update(this.V).digest())}generate(t){let e=[];for(;e.length<t;)this.V=this.hmac().update(this.V).digest(),e=e.concat(this.V);const r=e.slice(0,t);return this.update(),_t(r)}}function zt(t,e,r=new qt){const i=8*t.byteLength()-r.n.bitLength();return i>0&&t.iushrn(i),!e&&t.cmp(r.n)>=0?t.sub(r.n):t}const $t=(t,e,r=!1,i)=>{if("function"==typeof BigInt){const s=BigInt(0),n=BigInt(1),a=BigInt(2),o=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),h=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"),d={x:BigInt("0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798"),y:BigInt("0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8")},u=BigInt("0x"+t.toString(16)),l=BigInt("0x"+e.toString(16));if(l<=s||l>=o)throw new Error("Invalid private key");function f(t,e){const r=t.toString(16).padStart(2*e,"0"),i=new Uint8Array(e);for(let t=0;t<e;t++)i[t]=parseInt(r.substr(2*t,2),16);return i}const b=32,p=f(l,b),m=f(u,b),g=new Kt(Array.from(p),Array.from(m)),w=o-n;let y=0;function v(t,e,r=!0){const i=t.toString(2).length-e.toString(2).length;return i>0&&(t>>=BigInt(i)),!r&&t>=e?t-e:t}function k(){if("function"==typeof i){const t=i(y).toString(16);return BigInt("0x"+t)}if(c.isBN(i)){const t=i.toString(16);return BigInt("0x"+t)}{const t=g.generate(b);return BigInt("0x"+t)}}function O(t,e){return(t%e+e)%e}function P(t,e){let r=n,i=s,a=O(t,e),o=e;for(;a>n;){const t=o/a,e=i-r*t,s=o-a*t;i=r,r=e,o=a,a=s}return O(r,e)}function E(t,e){if(null===t)return e;if(null===e)return t;if(t.x===e.x&&t.y===O(-e.y,h))return null;let r;if(t.x===e.x&&t.y===e.y){if(t.y===s)return null;const e=O(BigInt(3)*t.x*t.x,h);r=O(e*P(a*t.y,h),h)}else{const i=O(e.y-t.y,h);r=O(i*P(e.x-t.x,h),h)}const i=O(r*r-t.x-e.x,h);return{x:i,y:O(r*(t.x-i)-t.y,h)}}function I(t,e){let r=e,i=null;for(;t>s;)t%a===n&&(i=E(i,r)),r=E(r,r),t>>=n;return i}for(;;){let _=k();if(y+=1,_=v(_,o,!0),_<=n||_>=w){if(i instanceof c)throw new Error("Invalid fixed custom K value (must be more than 1 and less than N-1)");continue}const x=I(_,d);if(null===x){if(i instanceof c)throw new Error("Invalid fixed custom K value (must not create a point at infinity when multiplied by the generator point)");continue}const S=O(x.x,o);if(S===s){if(i instanceof c)throw new Error("Invalid fixed custom K value (when multiplied by G, the resulting x coordinate mod N must not be zero)");continue}const M=P(_,o),A=O(S*l,o);let N=O(M*(u+A),o);if(N===s){if(i instanceof c)throw new Error("Invalid fixed custom K value (when used with the key, it cannot create a zero value for S)");continue}r&&N>o/a&&(N=o-N);const F=new c(S.toString(16),16),T=new c(N.toString(16),16);return new Vt(F,T)}}else{const B=new qt;t=zt(t);const R=B.n.byteLength(),U=e.toArray("be",R),H=t.toArray("be",R),L=new Kt(U,H),D=B.n.subn(1);for(let C=0;;C++){let q="function"==typeof i?i(C):c.isBN(i)?i:new c(L.generate(R),16);if(q=zt(q,!0),q.cmpn(1)<=0||q.cmp(D)>=0){if(c.isBN(i))throw new Error("Invalid fixed custom K value (must be more than 1 and less than N-1)");continue}const V=B.g.mul(q);if(V.isInfinity()){if(c.isBN(i))throw new Error("Invalid fixed custom K value (must not create a point at infinity when multiplied by the generator point)");continue}const K=V.getX().umod(B.n);if(0===K.cmpn(0)){if(c.isBN(i))throw new Error("Invalid fixed custom K value (when multiplied by G, the resulting x coordinate mod N must not be zero)");continue}let z=q.invm(B.n).mul(K.mul(e).iadd(t));if(z=z.umod(B.n),0!==z.cmpn(0))return r&&z.cmp(B.n.ushrn(1))>0&&(z=B.n.sub(z)),new Vt(K,z);if(c.isBN(i))throw new Error("Invalid fixed custom K value (when used with the key, it cannot create a zero value for S)")}}},jt=(t,e,r)=>{if("function"==typeof BigInt){const i=BigInt(0),s=BigInt(1),n=BigInt(2),a=BigInt(3),o=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"),c=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),h={x:BigInt("0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798"),y:BigInt("0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8")},d=(t,e)=>(t%e+e)%e,u=(t,e)=>{let[r,n]=[t,e],[a,o]=[BigInt(1),BigInt(0)];for(;n!==i;){const t=r/n;[r,n]=[n,r-t*n],[a,o]=[o,a-t*o]}return r>s?i:d(a,e)},l=(t,e,r)=>d(t*e,r),f=(t,e,r)=>d(t-e,r),b=BigInt(4),p=BigInt(8),m=t=>{const{X:e,Y:r,Z:c}=t;if(r===i)return{X:i,Y:s,Z:i};const h=l(r,r,o),d=l(b,l(e,h,o),o),u=l(a,l(e,e,o),o),m=f(l(u,u,o),l(n,d,o),o);return{X:m,Y:f(l(u,f(d,m,o),o),l(p,l(h,h,o),o),o),Z:l(n,l(r,c,o),o)}},g=(t,e)=>{if(t.Z===i)return e;if(e.Z===i)return t;const r=l(t.Z,t.Z,o),a=l(e.Z,e.Z,o),c=l(t.X,a,o),h=l(e.X,r,o),d=l(t.Y,l(a,e.Z,o),o),u=l(e.Y,l(r,t.Z,o),o),b=f(h,c,o),p=f(u,d,o);if(b===i)return p===i?m(t):{X:i,Y:s,Z:i};const g=l(b,b,o),w=l(b,g,o),y=l(c,g,o),v=f(f(l(p,p,o),w,o),l(n,y,o),o);return{X:v,Y:f(l(p,f(y,v,o),o),l(d,w,o),o),Z:l(b,l(t.Z,e.Z,o),o)}},w=(t,e)=>{const r={X:e.x,Y:e.y,Z:s};let n={X:i,Y:s,Z:i};const a=t.toString(2);for(let t=0;t<a.length;t++)n=m(n),"1"===a[t]&&(n=g(n,r));return n},y=(t,e,r)=>{const{r:s,s:n}=r,a=t;if(s<=i||s>=c||n<=i||n>=c)return!1;const f=u(n,c);if(f===i)return!1;const b=l(a,f,c),p=l(s,f,c),m=w(b,h),y=w(p,e),v=g(m,y);if(v.Z===i)return!1;const k=u(v.Z,o);if(k===i)return!1;const O=l(k,k,o),P=l(v.X,O,o);return d(P,c)===s};return y(BigInt("0x"+t.toString(16)),{x:BigInt("0x"+r.x.toString(16)),y:BigInt("0x"+r.y.toString(16))},{r:BigInt("0x"+e.r.toString(16)),s:BigInt("0x"+e.s.toString(16))})}{const i=new qt;t=zt(t);const s=e.r,n=e.s;if(s.cmpn(1)<0||s.cmp(i.n)>=0)return!1;if(n.cmpn(1)<0||n.cmp(i.n)>=0)return!1;const a=n.invm(i.n),o=a.mul(t).umod(i.n),c=a.mul(s).umod(i.n),h=i.g.jmulAdd(o,r,c);return!h.isInfinity()&&h.eqXToP(s)}};class Xt extends Dt{static fromPrivateKey(t){const e=(new qt).g.mul(t);return new Xt(e.x,e.y)}static fromString(t){const e=Dt.fromString(t);return new Xt(e.x,e.y)}static fromDER(t){const e=Dt.fromDER(t);return new Xt(e.x,e.y)}constructor(t,e=null,r=!0){t instanceof Dt?super(t.getX(),t.getY()):super(t,e,r)}deriveSharedSecret(t){if(!this.validate())throw new Error("Public key not valid for ECDH secret derivation");return this.mul(t)}verify(t,e,r){const i=new c(wt(t,r),16);return jt(i,e,this)}toDER(t){return"hex"===t?this.encode(!0,t):this.encode(!0)}toHash(t){const e=kt(this.encode(!0));return"hex"===t?_t(e):e}toAddress(t=[0]){if("string"==typeof t)if("testnet"===t||"test"===t)t=[111];else{if("mainnet"!==t&&"main"!==t)throw new Error(`Invalid prefix ${t}`);t=[0]}return Bt(this.toHash(),t)}deriveChild(t,e){const r=this.deriveSharedSecret(t),i=xt(e,"utf8"),s=Ot(r.encode(!0),i),n=(new qt).g.mul(new c(s)),a=this.add(n);return new Xt(a.x,a.y)}static fromMsgHashAndCompactSignature(t,e,r){const i=xt(e,r);if(65!==i.length)throw new Error("Invalid Compact Signature");const s=i[0];if(s<27||s>=35)throw new Error("Invalid Compact Byte");let n=i[0]-27,a=!1;return n>3&&(!0,n-=4),new Vt(new c(i.slice(1,33)),new c(i.slice(33,65))).RecoverPublicKey(n,t)}}class Gt{_rand;constructor(){const t=()=>{throw new Error("No secure random number generator is available in this environment.")};if("object"==typeof self)self.crypto&&self.crypto.getRandomValues?this._rand=t=>{const e=new Uint8Array(t);return self.crypto.getRandomValues(e),[...e]}:this._rand=t;else try{const t=require("crypto");"function"==typeof t.randomBytes&&(this._rand=e=>[...t.randomBytes(e)])}catch(e){this._rand=t}}generate(t){return this._rand(t)}}let Wt=null;const Yt=t=>(null==Wt&&(Wt=new Gt),Wt.generate(t));class Zt{x;y;constructor(t,e){const r=(new qt).p;this.x=t.umod(r),this.y=e.umod(r)}toString(){return Tt(this.x.toArray())+"."+Tt(this.y.toArray())}static fromString(t){const[e,r]=t.split(".");return new Zt(new c(Ft(e)),new c(Ft(r)))}}class Qt{points;threshold;constructor(t,e){this.points=t,this.threshold=e||t.length}static fromPrivateKey(t,e){const r=(new qt).p,i=[new Zt(new c(0),new c(t.toArray()))];for(let t=1;t<e;t++){const t=new c(Yt(32)).umod(r),e=new c(Yt(32)).umod(r);i.push(new Zt(t,e))}return new Qt(i)}valueAt(t){const e=(new qt).p;let r=new c(0);for(let i=0;i<this.threshold;i++){let s=this.points[i].y;for(let r=0;r<this.threshold;r++)if(i!==r){const n=this.points[r].x,a=this.points[i].x,o=t.sub(n).umod(e),c=a.sub(n).umod(e).invm(e),h=o.mul(c).umod(e);s=s.mul(h).umod(e)}r=r.add(s).umod(e)}return r}}class Jt{points;threshold;integrity;constructor(t,e,r){this.points=t,this.threshold=e,this.integrity=r}static fromBackupFormat(t){let e=0,r="";const i=t.map(((t,i)=>{const s=t.split(".");if(4!==s.length)throw Error("Invalid share format in share "+i+'. Expected format: "x.y.t.i" - received '+t);const[n,a,o,c]=s;if(!o)throw Error("Threshold not found in share "+i);if(!c)throw Error("Integrity not found in share "+i);const h=parseInt(o);if(0!==i&&e!==h)throw Error("Threshold mismatch in share "+i);if(0!==i&&r!==c)throw Error("Integrity mismatch in share "+i);return e=h,r=c,Zt.fromString([n,a].join("."))}));return new Jt(i,e,r)}toBackupFormat(){return this.points.map((t=>t.toString()+"."+this.threshold+"."+this.integrity))}}class te extends c{static fromRandom(){return new te(Yt(32))}static fromString(t,e){return new te(c.fromString(t,e).toArray())}static fromWif(t,e=1){const r=Rt(t,null,e);if(33!==r.data.length)throw new Error("Invalid WIF length");if(1!==r.data[32])throw new Error("Invalid WIF padding");return new te(r.data.slice(0,32))}constructor(t=0,e=10,r="be",i="apply"){if(t instanceof c?(super(),t.copy(this)):super(t,e,r),"nocheck"!==i){const t=this.checkInField();if(!t.inField){if("error"===i)throw new Error("Input is out of field");c.move(this,t.modN)}}}checkInField(){const t=new qt,e=this.mod(t.n);return{inField:0===this.cmp(e),modN:e}}isValid(){return this.checkInField().inField}sign(t,e,r=!0,i){const s=new c(wt(t,e),16);return $t(s,this,r,i)}verify(t,e,r){const i=new c(wt(t,r),16);return jt(i,e,this.toPublicKey())}toPublicKey(){const t=(new qt).g.mul(this);return new Xt(t.x,t.y)}toWif(t=[128]){if(!this.isValid())throw new Error("Value is out of field");return Bt([...this.toArray("be",32),1],t)}toAddress(t=[0]){return this.toPublicKey().toAddress(t)}deriveSharedSecret(t){if(!t.validate())throw new Error("Public key not valid for ECDH secret derivation");return t.mul(this)}deriveChild(t,e){const r=this.deriveSharedSecret(t),i=xt(e,"utf8"),s=Ot(r.encode(!0),i),n=new qt;return new te(this.add(new c(s)).mod(n.n).toArray())}toKeyShares(t,e){if("number"!=typeof t||"number"!=typeof e)throw new Error("threshold and totalShares must be numbers");if(t<2)throw new Error("threshold must be at least 2");if(e<2)throw new Error("totalShares must be at least 2");if(t>e)throw new Error("threshold should be less than or equal to totalShares");const r=Qt.fromPrivateKey(this,t),i=[];for(let t=0;t<e;t++){const t=new c(te.fromRandom().toArray()),e=r.valueAt(t);i.push(new Zt(t,e))}const s=this.toPublicKey().toHash("hex").slice(0,8);return new Jt(i,t,s)}toBackupShares(t,e){return this.toKeyShares(t,e).toBackupFormat()}static fromBackupShares(t){return te.fromKeyShares(Jt.fromBackupFormat(t))}static fromKeyShares(t){const{points:e,threshold:r,integrity:i}=t;if(r<2)throw new Error("threshold must be at least 2");if(e.length<r)throw new Error(`At least ${r} shares are required to reconstruct the private key`);for(let t=0;t<r;t++)for(let i=t+1;i<r;i++)if(e[t].x.eq(e[i].x))throw new Error("Duplicate share detected, each must be unique.");const s=new Qt(e,r),n=new te(s.valueAt(new c(0)).toArray());if(n.toPublicKey().toHash("hex").slice(0,8)!==i)throw new Error("Integrity hash mismatch");return n}}const ee=[[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118],[202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192],[183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21],[4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117],[9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132],[83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207],[208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168],[81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210],[205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115],[96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219],[224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121],[231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8],[186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138],[112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158],[225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223],[140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22]],re=[[0,0,0,0],[1,0,0,0],[2,0,0,0],[4,0,0,0],[8,0,0,0],[16,0,0,0],[32,0,0,0],[64,0,0,0],[128,0,0,0],[27,0,0,0],[54,0,0,0]];function ie(t,e,r){let i,s;for(i=0;i<4;i++)for(s=0;s<4;s++)t[i][s]=t[i][s]^e[r+s][i]}function se(t){let e,r;for(e=0;e<4;e++)for(r=0;r<4;r++)t[e][r]=ee[(240&t[e][r])>>4][15&t[e][r]]}function ne(t){let e;for(e=0;e<4;e++)t[e]=ee[(240&t[e])>>4][15&t[e]]}function ae(t){const e=t[0];t[0]=t[1],t[1]=t[2],t[2]=t[3],t[3]=e}function oe(t){let e,r,i,s,n;for(e=1;e<4;e++)for(r=0;r<(e-1)%2+1;r++){for(n=t[e][r],i=r;s=i+e,s>=4&&(s-=4),s!==r;)t[e][i]=t[e][s],i=s;t[e][i]=n}}function ce(t,e){let r,i=0;for(r=0;r<8;r++)1&e&&(i^=t),128&t?(t<<=1,t^=283):t<<=1,e>>=1;return i}function he(t){let e,r;const i=[[],[],[],[]];for(e=0;e<4;e++)i[0][e]=ce(2,t[0][e])^ce(3,t[1][e])^t[2][e]^t[3][e],i[1][e]=t[0][e]^ce(2,t[1][e])^ce(3,t[2][e])^t[3][e],i[2][e]=t[0][e]^t[1][e]^ce(2,t[2][e])^ce(3,t[3][e]),i[3][e]=ce(3,t[0][e])^t[1][e]^t[2][e]^ce(2,t[3][e]);for(e=0;e<4;e++)for(r=0;r<4;r++)t[e][r]=i[e][r]}function de(t,e){let r,i,s,n;const a=[[],[],[],[]],o=[],c=Array.from(e);if(c.length<=16){for(;c.length<16;)c.unshift(0);n=11}else if(c.length<=24){for(;c.length<24;)c.unshift(0);n=13}else{if(!(e.length<=32))throw new Error("Illegal key length: "+String(e.length));for(;c.length<32;)c.unshift(0);n=15}const h=function(t,e){let r,i;const s=parseInt(String(e.length/4)),n=[];for(r=0;r<e.length;r++)r%4==0&&n.push([]),n[parseInt(String(r/4))].push(e[r]);for(r=s;r<4*t;r++){n[r]=[];const t=n[r-1].slice();if(r%s==0)for(ae(t),ne(t),i=0;i<4;i++)t[i]=t[i]^re[parseInt(String(r/s))][i];else s>6&&r%s==4&&ne(t);for(i=0;i<4;i++)n[r][i]=n[r-s][i]^t[i]}return n}(n,c);for(r=0;r<15;r++)a[parseInt(String(r/4))].push(t[4*r%15]);for(a[3].push(t[15]),ie(a,h,0),s=1;s<n;s++)se(a),oe(a),s+1<n&&he(a),ie(a,h,4*s);for(r=0;r<4;r++)for(i=0;i<4;i++)o.push(a[i][r]);return o}const ue=function(t,e,r){return t[e]&1<<r?1:0},le=function(t){return[(4278190080&t)>>>24,(16711680&t)>>16,(65280&t)>>8,255&t]},fe=function(t){let e;const r=[];for(e=0;e<t;e++)r.push(0);return r},be=[225].concat(fe(15)),pe=function(t,e){let r;const i=[];for(r=0;r<t.length;r++)i[r]=t[r]^e[r];return i},me=function(t){let e,r=0,i=0;for(e=0;e<t.length;e++)i=r,r=1&t[e],t[e]=t[e]>>1,0!==i&&(t[e]=128|t[e]);return t},ge=function(t,e){let r,i,s=e.slice(),n=fe(16);for(r=0;r<16;r++)for(i=7;-1!==i;i--)0!==ue(t,r,i)&&(n=pe(n,s)),s=0!==ue(s,15,0)?pe(me(s),be):me(s);return n},we=function(t){let e;const r=t.slice();for(e=15;11!==e&&(r[e]=r[e]+1,256===r[e]);e--)r[e]=0;return r};function ye(t,e){let r,i=fe(16);for(r=0;r<t.length;r+=16)i=ge(pe(i,t.slice(r,Math.min(r+16,t.length))),e);return i}function ve(t,e,r){let i,s,n,a=e;const o=[];if(0===t.length)return t;const c=Math.ceil(t.length/16);for(i=0;i<c;i++){for(n=pe(t.slice(16*i,Math.min(16*(i+1),t.length)),de(a,r)),s=0;s<n.length;s++)o.push(n[s]);i+1<c&&(a=we(a))}return o}class ke extends c{static fromRandom(){return new ke(Yt(32))}encrypt(t,e){const r=Yt(32);t=xt(t,e);const{result:i,authenticationTag:s}=function(t,e,r,i){let s,n;const a=de(fe(16),i);s=[...r],12===r.length?s=s.concat(fe(3)).concat([1]):(r.length%16!=0&&(s=s.concat(fe(16-r.length%16))),s=s.concat(fe(8)),s=ye(s.concat(fe(4)).concat(le(8*r.length)),a));const o=ve(t,we(s),i);return n=e.slice(),0===e.length?n=n.concat(fe(16)):e.length%16!=0&&(n=n.concat(fe(16-e.length%16))),n=n.concat(o),0===o.length?n=n.concat(fe(16)):o.length%16!=0&&(n=n.concat(fe(16-o.length%16))),n=n.concat(fe(4)).concat(le(8*e.length)).concat(fe(4)).concat(le(8*o.length)),{result:o,authenticationTag:ve(ye(n,a),s,i)}}(t,[],r,this.toArray("be",32));return Mt([...r,...i,...s],e)}decrypt(t,e){const r=(t=xt(t,e)).slice(0,32),i=t.slice(32),s=i.slice(-16),n=function(t,e,r,i,s){let n,a;const o=de(fe(16),s);n=[...r],12===r.length?n=n.concat(fe(3)).concat([1]):(r.length%16!=0&&(n=n.concat(fe(16-r.length%16))),n=n.concat(fe(8)),n=ye(n.concat(fe(4)).concat(le(8*r.length)),o));const c=ve(t,we(n),s);return a=e.slice(),0===e.length?a=a.concat(fe(16)):e.length%16!=0&&(a=a.concat(fe(16-e.length%16))),a=a.concat(t),0===t.length?a=a.concat(fe(16)):t.length%16!=0&&(a=a.concat(fe(16-t.length%16))),a=a.concat(fe(4)).concat(le(8*e.length)).concat(fe(4)).concat(le(8*t.length)),ve(ye(a,o),n,s).join()!==i.join()?null:c}(i.slice(0,-16),[],r,s,this.toArray());if(null===n)throw new Error("Decryption failed!");return Mt(n,e)}}class Oe extends Vt{static SIGHASH_ALL=1;static SIGHASH_NONE=2;static SIGHASH_SINGLE=3;static SIGHASH_FORKID=64;static SIGHASH_ANYONECANPAY=128;scope;static format(t){const e={sourceTXID:t.sourceTXID,sourceOutputIndex:t.sourceOutputIndex,sequence:t.inputSequence},r=[...t.otherInputs];function i(e){const r=new Ut;if(void 0===e){let e;for(const i of t.outputs)r.writeUInt64LE(i.satoshis),e=i.lockingScript.toBinary(),r.writeVarIntNum(e.length),r.write(e)}else{const i=t.outputs[e];r.writeUInt64LE(i.satoshis);const s=i.lockingScript.toBinary();r.writeVarIntNum(s.length),r.write(s)}const i=r.toArray();return vt(i)}r.splice(t.inputIndex,0,e);let s=new Array(32).fill(0),n=new Array(32).fill(0),a=new Array(32).fill(0);t.scope&Oe.SIGHASH_ANYONECANPAY||(s=(()=>{const t=new Ut;for(const e of r)void 0===e.sourceTXID?t.write(e.sourceTransaction.hash()):t.writeReverse(xt(e.sourceTXID,"hex")),t.writeUInt32LE(e.sourceOutputIndex);const e=t.toArray();return vt(e)})()),t.scope&Oe.SIGHASH_ANYONECANPAY||(31&t.scope)===Oe.SIGHASH_SINGLE||(31&t.scope)===Oe.SIGHASH_NONE||(n=(()=>{const t=new Ut;for(const e of r)t.writeUInt32LE(e.sequence);const e=t.toArray();return vt(e)})()),(31&t.scope)!==Oe.SIGHASH_SINGLE&&(31&t.scope)!==Oe.SIGHASH_NONE?a=i():(31&t.scope)===Oe.SIGHASH_SINGLE&&t.inputIndex<t.outputs.length&&(a=i(t.inputIndex));const o=new Ut;o.writeInt32LE(t.transactionVersion),o.write(s),o.write(n),o.writeReverse(xt(t.sourceTXID,"hex")),o.writeUInt32LE(t.sourceOutputIndex);const c=t.subscript.toBinary();o.writeVarIntNum(c.length),o.write(c),o.writeUInt64LE(t.sourceSatoshis);const h=e.sequence;return o.writeUInt32LE(h),o.write(a),o.writeUInt32LE(t.lockTime),o.writeUInt32LE(t.scope>>>0),o.toArray()}static fromChecksigFormat(t){if(0===t.length){const t=new c(1),e=new c(1);return new Oe(t,e,1)}const e=t[t.length-1],r=t.slice(0,t.length-1),i=Vt.fromDER(r);return new Oe(i.r,i.s,e)}constructor(t,e,r){super(t,e),this.scope=r}hasLowS(){return!this.s.ltn(1)&&!this.s.gt(new c("7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0","hex"))}toChecksigFormat(){return[...this.toDER(),this.scope]}}class Pe{curve;constructor(){this.curve=new qt}generateProof(t,e,r,i){const s=te.fromRandom(),n=s.toPublicKey(),a=r.mul(s),o=this.computeChallenge(e,r,i,a,n);return{R:n,SPrime:a,z:s.add(o.mul(t)).umod(this.curve.n)}}verifyProof(t,e,r,i){const{R:s,SPrime:n,z:a}=i,o=this.computeChallenge(t,e,r,n,s),c=this.curve.g.mul(a),h=s.add(t.mul(o));if(!c.eq(h))return!1;const d=e.mul(a),u=n.add(r.mul(o));return!!d.eq(u)}computeChallenge(t,e,r,i,s){const n=[...t.encode(!0),...e.encode(!0),...r.encode(!0),...i.encode(!0),...s.encode(!0)],a=wt(n);return new c(a).umod(this.curve.n)}}const Ee={OP_FALSE:0,OP_0:0,OP_PUSHDATA1:76,OP_PUSHDATA2:77,OP_PUSHDATA4:78,OP_1NEGATE:79,OP_RESERVED:80,OP_TRUE:81,OP_1:81,OP_2:82,OP_3:83,OP_4:84,OP_5:85,OP_6:86,OP_7:87,OP_8:88,OP_9:89,OP_10:90,OP_11:91,OP_12:92,OP_13:93,OP_14:94,OP_15:95,OP_16:96,OP_NOP:97,OP_VER:98,OP_IF:99,OP_NOTIF:100,OP_VERIF:101,OP_VERNOTIF:102,OP_ELSE:103,OP_ENDIF:104,OP_VERIFY:105,OP_RETURN:106,OP_TOALTSTACK:107,OP_FROMALTSTACK:108,OP_2DROP:109,OP_2DUP:110,OP_3DUP:111,OP_2OVER:112,OP_2ROT:113,OP_2SWAP:114,OP_IFDUP:115,OP_DEPTH:116,OP_DROP:117,OP_DUP:118,OP_NIP:119,OP_OVER:120,OP_PICK:121,OP_ROLL:122,OP_ROT:123,OP_SWAP:124,OP_TUCK:125,OP_CAT:126,OP_SUBSTR:127,OP_SPLIT:127,OP_LEFT:128,OP_NUM2BIN:128,OP_RIGHT:129,OP_BIN2NUM:129,OP_SIZE:130,OP_INVERT:131,OP_AND:132,OP_OR:133,OP_XOR:134,OP_EQUAL:135,OP_EQUALVERIFY:136,OP_RESERVED1:137,OP_RESERVED2:138,OP_1ADD:139,OP_1SUB:140,OP_2MUL:141,OP_2DIV:142,OP_NEGATE:143,OP_ABS:144,OP_NOT:145,OP_0NOTEQUAL:146,OP_ADD:147,OP_SUB:148,OP_MUL:149,OP_DIV:150,OP_MOD:151,OP_LSHIFT:152,OP_RSHIFT:153,OP_BOOLAND:154,OP_BOOLOR:155,OP_NUMEQUAL:156,OP_NUMEQUALVERIFY:157,OP_NUMNOTEQUAL:158,OP_LESSTHAN:159,OP_GREATERTHAN:160,OP_LESSTHANOREQUAL:161,OP_GREATERTHANOREQUAL:162,OP_MIN:163,OP_MAX:164,OP_WITHIN:165,OP_RIPEMD160:166,OP_SHA1:167,OP_SHA256:168,OP_HASH160:169,OP_HASH256:170,OP_CODESEPARATOR:171,OP_CHECKSIG:172,OP_CHECKSIGVERIFY:173,OP_CHECKMULTISIG:174,OP_CHECKMULTISIGVERIFY:175,OP_NOP1:176,OP_NOP2:177,OP_NOP3:178,OP_NOP4:179,OP_NOP5:180,OP_NOP6:181,OP_NOP7:182,OP_NOP8:183,OP_NOP9:184,OP_NOP10:185,OP_NOP11:186,OP_NOP12:187,OP_NOP13:188,OP_NOP14:189,OP_NOP15:190,OP_NOP16:191,OP_NOP17:192,OP_NOP18:193,OP_NOP19:194,OP_NOP20:195,OP_NOP21:196,OP_NOP22:197,OP_NOP23:198,OP_NOP24:199,OP_NOP25:200,OP_NOP26:201,OP_NOP27:202,OP_NOP28:203,OP_NOP29:204,OP_NOP30:205,OP_NOP31:206,OP_NOP32:207,OP_NOP33:208,OP_NOP34:209,OP_NOP35:210,OP_NOP36:211,OP_NOP37:212,OP_NOP38:213,OP_NOP39:214,OP_NOP40:215,OP_NOP41:216,OP_NOP42:217,OP_NOP43:218,OP_NOP44:219,OP_NOP45:220,OP_NOP46:221,OP_NOP47:222,OP_NOP48:223,OP_NOP49:224,OP_NOP50:225,OP_NOP51:226,OP_NOP52:227,OP_NOP53:228,OP_NOP54:229,OP_NOP55:230,OP_NOP56:231,OP_NOP57:232,OP_NOP58:233,OP_NOP59:234,OP_NOP60:235,OP_NOP61:236,OP_NOP62:237,OP_NOP63:238,OP_NOP64:239,OP_NOP65:240,OP_NOP66:241,OP_NOP67:242,OP_NOP68:243,OP_NOP69:244,OP_NOP70:245,OP_NOP71:246,OP_NOP72:247,OP_NOP73:248,OP_NOP77:252,OP_SMALLDATA:249,OP_SMALLINTEGER:250,OP_PUBKEYS:251,OP_PUBKEYHASH:253,OP_PUBKEY:254,OP_INVALIDOPCODE:255};for(const t in Ee)Ee[Ee[t]]=t;const Ie=Ee;class _e{chunks;static fromASM(t){const e=[],r=t.split(" ");let i=0;for(;i<r.length;){const t=r[i];let s,n;if(t.startsWith("OP_")&&void 0!==Ie[t]&&(s=t,n=Ie[t]),"0"===t)n=0,e.push({op:n}),i+=1;else if("-1"===t)n=Ie.OP_1NEGATE,e.push({op:n}),i+=1;else if(void 0===s){let t=r[i];t.length%2!=0&&(t="0"+t);const s=xt(t,"hex");if(Mt(s,"hex")!==t)throw new Error("invalid hex string in script");const a=s.length;a>=0&&a<Ie.OP_PUSHDATA1?n=a:a<Math.pow(2,8)?n=Ie.OP_PUSHDATA1:a<Math.pow(2,16)?n=Ie.OP_PUSHDATA2:a<Math.pow(2,32)&&(n=Ie.OP_PUSHDATA4),e.push({data:s,op:n}),i+=1}else n===Ie.OP_PUSHDATA1||n===Ie.OP_PUSHDATA2||n===Ie.OP_PUSHDATA4?(e.push({data:xt(r[i+2],"hex"),op:n}),i+=3):(e.push({op:n}),i+=1)}return new _e(e)}static fromHex(t){if(0===t.length)return _e.fromBinary([]);if(t.length%2!=0)throw new Error("There is an uneven number of characters in the string which suggests it is not hex encoded.");if(!/^[0-9a-fA-F]+$/.test(t))throw new Error("Some elements in this string are not hex encoded.");return _e.fromBinary(xt(t,"hex"))}static fromBinary(t){t=[...t];const e=[],r=new Ht(t);for(;!r.eof();){const t=r.readUInt8();let i=0,s=[];if(t>0&&t<Ie.OP_PUSHDATA1)i=t,e.push({data:r.read(i),op:t});else if(t===Ie.OP_PUSHDATA1){try{i=r.readUInt8(),s=r.read(i)}catch(t){r.read()}e.push({data:s,op:t})}else if(t===Ie.OP_PUSHDATA2){try{i=r.readUInt16LE(),s=r.read(i)}catch(t){r.read()}e.push({data:s,op:t})}else if(t===Ie.OP_PUSHDATA4){try{i=r.readUInt32LE(),s=r.read(i)}catch(t){r.read()}e.push({data:s,op:t})}else e.push({op:t})}return new _e(e)}constructor(t=[]){this.chunks=t}toASM(){let t="";for(let e=0;e<this.chunks.length;e++){const r=this.chunks[e];t+=this._chunkToString(r)}return t.slice(1)}toHex(){return Mt(this.toBinary(),"hex")}toBinary(){const t=new Ut;for(let e=0;e<this.chunks.length;e++){const r=this.chunks[e],i=r.op;t.writeUInt8(i),r.data&&(i<Ie.OP_PUSHDATA1?t.write(r.data):i===Ie.OP_PUSHDATA1?(t.writeUInt8(r.data.length),t.write(r.data)):i===Ie.OP_PUSHDATA2?(t.writeUInt16LE(r.data.length),t.write(r.data)):i===Ie.OP_PUSHDATA4&&(t.writeUInt32LE(r.data.length),t.write(r.data)))}return t.toArray()}writeScript(t){return this.chunks=this.chunks.concat(t.chunks),this}writeOpCode(t){return this.chunks.push({op:t}),this}setChunkOpCode(t,e){return this.chunks[t]={op:e},this}writeBn(t){if(t.cmpn(0)===Ie.OP_0)this.chunks.push({op:Ie.OP_0});else if(0===t.cmpn(-1))this.chunks.push({op:Ie.OP_1NEGATE});else if(t.cmpn(1)>=0&&t.cmpn(16)<=0)this.chunks.push({op:t.toNumber()+Ie.OP_1-1});else{const e=t.toSm("little");this.writeBin(e)}return this}writeBin(t){let e;if(t.length>0&&t.length<Ie.OP_PUSHDATA1)e=t.length;else if(0===t.length)e=Ie.OP_0;else if(t.length<Math.pow(2,8))e=Ie.OP_PUSHDATA1;else if(t.length<Math.pow(2,16))e=Ie.OP_PUSHDATA2;else{if(!(t.length<Math.pow(2,32)))throw new Error("You can't push that much data");e=Ie.OP_PUSHDATA4}return this.chunks.push({data:t,op:e}),this}writeNumber(t){return this.writeBn(new c(t)),this}removeCodeseparators(){const t=[];for(let e=0;e<this.chunks.length;e++)this.chunks[e].op!==Ie.OP_CODESEPARATOR&&t.push(this.chunks[e]);return this.chunks=t,this}findAndDelete(t){const e=t.toHex();for(let t=0;t<this.chunks.length;t++)e===new _e([this.chunks[t]]).toHex()&&this.chunks.splice(t,1);return this}isPushOnly(){for(let t=0;t<this.chunks.length;t++)if(this.chunks[t].op>Ie.OP_16)return!1;return!0}isLockingScript(){throw new Error("Not implemented")}isUnlockingScript(){throw new Error("Not implemented")}_chunkToString(t){const e=t.op;let r="";return r=void 0===t.data?`${r} ${Ie[e]}`:`${r} ${_t(t.data)}`,r}}class xe extends _e{isLockingScript(){return!0}isUnlockingScript(){return!1}}class Se extends _e{isLockingScript(){return!1}isUnlockingScript(){return!0}}const Me=1073741824,Ae=Math.pow(2,31)-1,Ne=!0;class Fe{sourceTXID;sourceOutputIndex;sourceSatoshis;lockingScript;transactionVersion;otherInputs;outputs;inputIndex;unlockingScript;inputSequence;lockTime;context;programCounter;lastCodeSeparator;stack;altStack;ifStack;constructor(t){this.sourceTXID=t.sourceTXID,this.sourceOutputIndex=t.sourceOutputIndex,this.sourceSatoshis=t.sourceSatoshis,this.lockingScript=t.lockingScript,this.transactionVersion=t.transactionVersion,this.otherInputs=t.otherInputs,this.outputs=t.outputs,this.inputIndex=t.inputIndex,this.unlockingScript=t.unlockingScript,this.inputSequence=t.inputSequence,this.lockTime=t.lockTime,this.reset()}reset(){this.context="UnlockingScript",this.programCounter=0,this.lastCodeSeparator=null,this.stack=[],this.altStack=[],this.ifStack=[]}step(){let t;"UnlockingScript"===this.context&&this.programCounter>=this.unlockingScript.chunks.length&&(this.context="LockingScript",this.programCounter=0),t="UnlockingScript"===this.context?this.unlockingScript.chunks[this.programCounter]:this.lockingScript.chunks[this.programCounter];const e=t=>{if(0===t.length)return!0;(t=>{if(t.length<9)return!1;if(t.length>73)return!1;if(48!==t[0])return!1;if(t[1]!==t.length-3)return!1;const e=t[3];if(5+e>=t.length)return!1;const r=t[5+e];if(e+r+7!==t.length)return!1;const i=t.slice(4);if(2!==t[2])return!1;if(0===e)return!1;if(128&i[0])return!1;if(e>1&&0===i[0]&&!(128&i[1]))return!1;const s=t.slice(6+e);return!(2!==t[6+e-2]||0===r||128&s[0]||r>1&&0===s[0]&&!(128&s[1]))})(t)||this.scriptEvaluationError("The signature format is invalid.");const e=Oe.fromChecksigFormat(t);return e.hasLowS()||this.scriptEvaluationError("The signature must have a low S value."),!!(e.scope&Oe.SIGHASH_FORKID)||(this.scriptEvaluationError("The signature must use SIGHASH_FORKID."),!1)},r=t=>(t.length<33&&this.scriptEvaluationError("The public key is too short, it must be at least 33 bytes."),4===t[0]?65!==t.length&&this.scriptEvaluationError("The non-compressed public key must be 65 bytes."):2===t[0]||3===t[0]?33!==t.length&&this.scriptEvaluationError("The compressed public key must be 33 bytes."):this.scriptEvaluationError("The public key is in an unknown format."),!0),i=(t,e,r)=>{const i=Oe.format({sourceTXID:this.sourceTXID,sourceOutputIndex:this.sourceOutputIndex,sourceSatoshis:this.sourceSatoshis,transactionVersion:this.transactionVersion,otherInputs:this.otherInputs,outputs:this.outputs,inputIndex:this.inputIndex,subscript:r,inputSequence:this.inputSequence,lockTime:this.lockTime,scope:t.scope}),s=new c(vt(i));return jt(s,t,e)},s=!this.ifStack.includes(!1);let n,a,o,h,d,u,l,f,b,p,m,g,w,y,v,k,O,P,E,I,_,x,S,M,A,N,F,T,B,R,U,H,L;const D=t.op;var C;if(void 0===D&&this.scriptEvaluationError(`An opcode is missing in this chunk of the ${this.context}!`),Array.isArray(t.data)&&t.data.length>Me&&this.scriptEvaluationError("It's not currently possible to push data larger than 1073741824 bytes."),s&&((C=D)===Ie.OP_2MUL||C===Ie.OP_2DIV||C===Ie.OP_VERIF||C===Ie.OP_VERNOTIF||C===Ie.OP_VER)&&this.scriptEvaluationError("This opcode is currently disabled."),s&&D>=0&&D<=Ie.OP_PUSHDATA4)(t=>{const e=t.data,r=t.op;return!(Array.isArray(e)&&(0===e.length?r!==Ie.OP_0:1===e.length&&e[0]>=1&&e[0]<=16?r!==Ie.OP_1+(e[0]-1):1===e.length&&129===e[0]?r!==Ie.OP_1NEGATE:e.length<=75?r!==e.length:e.length<=255?r!==Ie.OP_PUSHDATA1:e.length<=65535&&r!==Ie.OP_PUSHDATA2))})(t)||this.scriptEvaluationError("This data is not minimally-encoded."),Array.isArray(t.data)?this.stack.push(t.data):this.stack.push([]);else if(s||Ie.OP_IF<=D&&D<=Ie.OP_ENDIF)switch(D){case Ie.OP_1NEGATE:case Ie.OP_1:case Ie.OP_2:case Ie.OP_3:case Ie.OP_4:case Ie.OP_5:case Ie.OP_6:case Ie.OP_7:case Ie.OP_8:case Ie.OP_9:case Ie.OP_10:case Ie.OP_11:case Ie.OP_12:case Ie.OP_13:case Ie.OP_14:case Ie.OP_15:case Ie.OP_16:u=D-(Ie.OP_1-1),n=new c(u).toScriptNum(),this.stack.push(n);break;case Ie.OP_NOP:case Ie.OP_NOP2:case Ie.OP_NOP3:case Ie.OP_NOP1:case Ie.OP_NOP4:case Ie.OP_NOP5:case Ie.OP_NOP6:case Ie.OP_NOP7:case Ie.OP_NOP8:case Ie.OP_NOP9:case Ie.OP_NOP10:case Ie.OP_NOP11:case Ie.OP_NOP12:case Ie.OP_NOP13:case Ie.OP_NOP14:case Ie.OP_NOP15:case Ie.OP_NOP16:case Ie.OP_NOP17:case Ie.OP_NOP18:case Ie.OP_NOP19:case Ie.OP_NOP20:case Ie.OP_NOP21:case Ie.OP_NOP22:case Ie.OP_NOP23:case Ie.OP_NOP24:case Ie.OP_NOP25:case Ie.OP_NOP26:case Ie.OP_NOP27:case Ie.OP_NOP28:case Ie.OP_NOP29:case Ie.OP_NOP30:case Ie.OP_NOP31:case Ie.OP_NOP32:case Ie.OP_NOP33:case Ie.OP_NOP34:case Ie.OP_NOP35:case Ie.OP_NOP36:case Ie.OP_NOP37:case Ie.OP_NOP38:case Ie.OP_NOP39:case Ie.OP_NOP40:case Ie.OP_NOP41:case Ie.OP_NOP42:case Ie.OP_NOP43:case Ie.OP_NOP44:case Ie.OP_NOP45:case Ie.OP_NOP46:case Ie.OP_NOP47:case Ie.OP_NOP48:case Ie.OP_NOP49:case Ie.OP_NOP50:case Ie.OP_NOP51:case Ie.OP_NOP52:case Ie.OP_NOP53:case Ie.OP_NOP54:case Ie.OP_NOP55:case Ie.OP_NOP56:case Ie.OP_NOP57:case Ie.OP_NOP58:case Ie.OP_NOP59:case Ie.OP_NOP60:case Ie.OP_NOP61:case Ie.OP_NOP62:case Ie.OP_NOP63:case Ie.OP_NOP64:case Ie.OP_NOP65:case Ie.OP_NOP66:case Ie.OP_NOP67:case Ie.OP_NOP68:case Ie.OP_NOP69:case Ie.OP_NOP70:case Ie.OP_NOP71:case Ie.OP_NOP72:case Ie.OP_NOP73:case Ie.OP_NOP77:break;case Ie.OP_IF:case Ie.OP_NOTIF:U=!1,s&&(this.stack.length<1&&this.scriptEvaluationError("OP_IF and OP_NOTIF require at least one item on the stack when they are used!"),n=this.stacktop(-1),U=this.castToBool(n),D===Ie.OP_NOTIF&&(U=!U),this.stack.pop()),this.ifStack.push(U);break;case Ie.OP_ELSE:0===this.ifStack.length&&this.scriptEvaluationError("OP_ELSE requires a preceeding OP_IF."),this.ifStack[this.ifStack.length-1]=!this.ifStack[this.ifStack.length-1];break;case Ie.OP_ENDIF:0===this.ifStack.length&&this.scriptEvaluationError("OP_ENDIF requires a preceeding OP_IF."),this.ifStack.pop();break;case Ie.OP_VERIFY:this.stack.length<1&&this.scriptEvaluationError("OP_VERIFY requires at least one item to be on the stack."),n=this.stacktop(-1),U=this.castToBool(n),U?this.stack.pop():this.scriptEvaluationError("OP_VERIFY requires the top stack value to be truthy.");break;case Ie.OP_RETURN:"UnlockingScript"===this.context?this.programCounter=this.unlockingScript.chunks.length:this.programCounter=this.lockingScript.chunks.length,this.ifStack=[];break;case Ie.OP_TOALTSTACK:this.stack.length<1&&this.scriptEvaluationError("OP_TOALTSTACK requires at oeast one item to be on the stack."),this.altStack.push(this.stack.pop());break;case Ie.OP_FROMALTSTACK:this.altStack.length<1&&this.scriptEvaluationError("OP_FROMALTSTACK requires at least one item to be on the stack."),this.stack.push(this.altStack.pop());break;case Ie.OP_2DROP:this.stack.length<2&&this.scriptEvaluationError("OP_2DROP requires at least two items to be on the stack."),this.stack.pop(),this.stack.pop();break;case Ie.OP_2DUP:this.stack.length<2&&this.scriptEvaluationError("OP_2DUP requires at least two items to be on the stack."),a=this.stacktop(-2),o=this.stacktop(-1),this.stack.push([...a]),this.stack.push([...o]);break;case Ie.OP_3DUP:this.stack.length<3&&this.scriptEvaluationError("OP_3DUP requires at least three items to be on the stack."),a=this.stacktop(-3),o=this.stacktop(-2),h=this.stacktop(-1),this.stack.push([...a]),this.stack.push([...o]),this.stack.push([...h]);break;case Ie.OP_2OVER:this.stack.length<4&&this.scriptEvaluationError("OP_2OVER requires at least four items to be on the stack."),a=this.stacktop(-4),o=this.stacktop(-3),this.stack.push([...a]),this.stack.push([...o]);break;case Ie.OP_2ROT:this.stack.length<6&&this.scriptEvaluationError("OP_2ROT requires at least six items to be on the stack."),d=this.stack.splice(this.stack.length-6,2),this.stack.push(d[0]),this.stack.push(d[1]);break;case Ie.OP_2SWAP:this.stack.length<4&&this.scriptEvaluationError("OP_2SWAP requires at least four items to be on the stack."),d=this.stack.splice(this.stack.length-4,2),this.stack.push(d[0]),this.stack.push(d[1]);break;case Ie.OP_IFDUP:this.stack.length<1&&this.scriptEvaluationError("OP_IFDUP requires at least one item to be on the stack."),n=this.stacktop(-1),U=this.castToBool(n),U&&this.stack.push([...n]);break;case Ie.OP_DEPTH:n=new c(this.stack.length).toScriptNum(),this.stack.push(n);break;case Ie.OP_DROP:this.stack.length<1&&this.scriptEvaluationError("OP_DROP requires at least one item to be on the stack."),this.stack.pop();break;case Ie.OP_DUP:this.stack.length<1&&this.scriptEvaluationError("OP_DUP requires at least one item to be on the stack."),this.stack.push([...this.stacktop(-1)]);break;case Ie.OP_NIP:this.stack.length<2&&this.scriptEvaluationError("OP_NIP requires at least two items to be on the stack."),this.stack.splice(this.stack.length-2,1);break;case Ie.OP_OVER:this.stack.length<2&&this.scriptEvaluationError("OP_OVER requires at least two items to be on the stack."),this.stack.push([...this.stacktop(-2)]);break;case Ie.OP_PICK:case Ie.OP_ROLL:this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),n=this.stacktop(-1),y=c.fromScriptNum(n,Ne),u=y.toNumber(),this.stack.pop(),(u<0||u>=this.stack.length)&&this.scriptEvaluationError(`${Ie[D]} requires the top stack element to be 0 or a positive number less than the current size of the stack.`),n=this.stacktop(-u-1),D===Ie.OP_ROLL&&this.stack.splice(this.stack.length-u-1,1),this.stack.push([...n]);break;case Ie.OP_ROT:this.stack.length<3&&this.scriptEvaluationError("OP_ROT requires at least three items to be on the stack."),m=this.stacktop(-3),g=this.stacktop(-2),w=this.stacktop(-1),this.stack[this.stack.length-3]=g,this.stack[this.stack.length-2]=w,this.stack[this.stack.length-1]=m;break;case Ie.OP_SWAP:this.stack.length<2&&this.scriptEvaluationError("OP_SWAP requires at least two items to be on the stack."),m=this.stacktop(-2),g=this.stacktop(-1),this.stack[this.stack.length-2]=g,this.stack[this.stack.length-1]=m;break;case Ie.OP_TUCK:this.stack.length<2&&this.scriptEvaluationError("OP_TUCK requires at least two items to be on the stack."),this.stack.splice(this.stack.length-2,0,[...this.stacktop(-1)]);break;case Ie.OP_SIZE:this.stack.length<1&&this.scriptEvaluationError("OP_SIZE requires at least one item to be on the stack."),y=new c(this.stacktop(-1).length),this.stack.push(y.toScriptNum());break;case Ie.OP_AND:case Ie.OP_OR:case Ie.OP_XOR:switch(this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least one item to be on the stack.`),a=this.stacktop(-2),o=this.stacktop(-1),a.length!==o.length&&this.scriptEvaluationError(`${Ie[D]} requires the top two stack items to be the same size.`),D){case Ie.OP_AND:for(let t=0;t<a.length;t++)a[t]&=o[t];break;case Ie.OP_OR:for(let t=0;t<a.length;t++)a[t]|=o[t];break;case Ie.OP_XOR:for(let t=0;t<a.length;t++)a[t]^=o[t]}this.stack.pop();break;case Ie.OP_INVERT:this.stack.length<1&&this.scriptEvaluationError("OP_INVERT requires at least one item to be on the stack."),n=this.stacktop(-1);for(let t=0;t<n.length;t++)n[t]=~n[t];break;case Ie.OP_LSHIFT:case Ie.OP_RSHIFT:if(this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),a=this.stacktop(-2),0===a.length)this.stack.pop();else{let t;v=new c(a),k=c.fromScriptNum(this.stacktop(-1),Ne),u=k.toNumber(),u<0&&this.scriptEvaluationError(`${Ie[D]} requires the top item on the stack not to be negative.`),this.stack.pop(),this.stack.pop(),D===Ie.OP_LSHIFT&&(t=v.ushln(u)),D===Ie.OP_RSHIFT&&(t=v.ushrn(u));const e=((t,e)=>{const r=t;for(;r.length<e;)r.unshift(0);return r})(t.toArray().slice(-1*a.length),a.length);this.stack.push(e)}break;case Ie.OP_EQUAL:case Ie.OP_EQUALVERIFY:this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),a=this.stacktop(-2),o=this.stacktop(-1),H=_t(a)===_t(o),this.stack.pop(),this.stack.pop(),this.stack.push(H?[1]:[]),D===Ie.OP_EQUALVERIFY&&(H?this.stack.pop():this.scriptEvaluationError("OP_EQUALVERIFY requires the top two stack items to be equal."));break;case Ie.OP_1ADD:case Ie.OP_1SUB:case Ie.OP_NEGATE:case Ie.OP_ABS:case Ie.OP_NOT:case Ie.OP_0NOTEQUAL:switch(this.stack.length<1&&this.scriptEvaluationError(`${Ie[D]} requires at least one items to be on the stack.`),n=this.stacktop(-1),y=c.fromScriptNum(n,Ne),D){case Ie.OP_1ADD:y=y.addn(1);break;case Ie.OP_1SUB:y=y.subn(1);break;case Ie.OP_NEGATE:y=y.neg();break;case Ie.OP_ABS:y.cmpn(0)<0&&(y=y.neg());break;case Ie.OP_NOT:y=new c(0===y.cmpn(0)?1:0);break;case Ie.OP_0NOTEQUAL:y=new c(0!==y.cmpn(0)?1:0)}this.stack.pop(),this.stack.push(y.toScriptNum());break;case Ie.OP_ADD:case Ie.OP_SUB:case Ie.OP_MUL:case Ie.OP_MOD:case Ie.OP_DIV:case Ie.OP_BOOLAND:case Ie.OP_BOOLOR:case Ie.OP_NUMEQUAL:case Ie.OP_NUMEQUALVERIFY:case Ie.OP_NUMNOTEQUAL:case Ie.OP_LESSTHAN:case Ie.OP_GREATERTHAN:case Ie.OP_LESSTHANOREQUAL:case Ie.OP_GREATERTHANOREQUAL:case Ie.OP_MIN:case Ie.OP_MAX:switch(this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),v=c.fromScriptNum(this.stacktop(-2),Ne),k=c.fromScriptNum(this.stacktop(-1),Ne),y=new c(0),D){case Ie.OP_ADD:y=v.add(k);break;case Ie.OP_SUB:y=v.sub(k);break;case Ie.OP_MUL:y=v.mul(k);break;case Ie.OP_DIV:0===k.cmpn(0)&&this.scriptEvaluationError("OP_DIV cannot divide by zero!"),y=v.div(k);break;case Ie.OP_MOD:0===k.cmpn(0)&&this.scriptEvaluationError("OP_MOD cannot divide by zero!"),y=v.mod(k);break;case Ie.OP_BOOLAND:y=new c(0!==v.cmpn(0)&&0!==k.cmpn(0)?1:0);break;case Ie.OP_BOOLOR:y=new c(0!==v.cmpn(0)||0!==k.cmpn(0)?1:0);break;case Ie.OP_NUMEQUAL:case Ie.OP_NUMEQUALVERIFY:y=new c(0===v.cmp(k)?1:0);break;case Ie.OP_NUMNOTEQUAL:y=new c(0!==v.cmp(k)?1:0);break;case Ie.OP_LESSTHAN:y=new c(v.cmp(k)<0?1:0);break;case Ie.OP_GREATERTHAN:y=new c(v.cmp(k)>0?1:0);break;case Ie.OP_LESSTHANOREQUAL:y=new c(v.cmp(k)<=0?1:0);break;case Ie.OP_GREATERTHANOREQUAL:y=new c(v.cmp(k)>=0?1:0);break;case Ie.OP_MIN:y=v.cmp(k)<0?v:k;break;case Ie.OP_MAX:y=v.cmp(k)>0?v:k}this.stack.pop(),this.stack.pop(),this.stack.push(y.toScriptNum()),D===Ie.OP_NUMEQUALVERIFY&&(this.castToBool(this.stacktop(-1))?this.stack.pop():this.scriptEvaluationError("OP_NUMEQUALVERIFY requires the top stack item to be truthy."));break;case Ie.OP_WITHIN:this.stack.length<3&&this.scriptEvaluationError("OP_WITHIN requires at least three items to be on the stack."),v=c.fromScriptNum(this.stacktop(-3),Ne),k=c.fromScriptNum(this.stacktop(-2),Ne),O=c.fromScriptNum(this.stacktop(-1),Ne),U=k.cmp(v)<=0&&v.cmp(O)<0,this.stack.pop(),this.stack.pop(),this.stack.pop(),this.stack.push(U?[1]:[]);break;case Ie.OP_RIPEMD160:case Ie.OP_SHA1:case Ie.OP_SHA256:case Ie.OP_HASH160:case Ie.OP_HASH256:this.stack.length<1&&this.scriptEvaluationError(`${Ie[D]} requires at least one item to be on the stack.`),n=this.stacktop(-1),D===Ie.OP_RIPEMD160?_=mt(n):D===Ie.OP_SHA1?_=gt(n):D===Ie.OP_SHA256?_=wt(n):D===Ie.OP_HASH160?_=kt(n):D===Ie.OP_HASH256&&(_=vt(n)),this.stack.pop(),this.stack.push(_);break;case Ie.OP_CODESEPARATOR:this.lastCodeSeparator=this.programCounter;break;case Ie.OP_CHECKSIG:case Ie.OP_CHECKSIGVERIFY:this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),P=this.stacktop(-2),E=this.stacktop(-1),e(P)&&r(E)||this.scriptEvaluationError(`${Ie[D]} requires correct encoding for the public key and signature.`),I="UnlockingScript"===this.context?new _e(this.unlockingScript.chunks.slice(this.lastCodeSeparator)):new _e(this.lockingScript.chunks.slice(this.lastCodeSeparator)),I.findAndDelete((new _e).writeBin(P));try{x=Oe.fromChecksigFormat(P),S=Xt.fromDER(E),L=i(x,S,I)}catch(t){L=!1}!L&&P.length>0&&this.scriptEvaluationError(`${Ie[D]} failed to verify the signature, and requires an empty signature when verification fails.`),this.stack.pop(),this.stack.pop(),this.stack.push(L?[1]:[]),D===Ie.OP_CHECKSIGVERIFY&&(L?this.stack.pop():this.scriptEvaluationError("OP_CHECKSIGVERIFY requires that a valid signature is provided."));break;case Ie.OP_CHECKMULTISIG:case Ie.OP_CHECKMULTISIGVERIFY:M=1,this.stack.length<M&&this.scriptEvaluationError(`${Ie[D]} requires at least 1 item to be on the stack.`),N=c.fromScriptNum(this.stacktop(-M),Ne).toNumber(),(N<0||N>Ae)&&this.scriptEvaluationError(`${Ie[D]} requires a key count between 0 and ${Ae}.`),F=++M,M+=N,T=N+2,this.stack.length<M&&this.scriptEvaluationError(`${Ie[D]} requires the number of stack items not to be less than the number of keys used.`),B=c.fromScriptNum(this.stacktop(-M),Ne).toNumber(),(B<0||B>N)&&this.scriptEvaluationError(`${Ie[D]} requires the number of signatures to be no greater than the number of keys.`),R=++M,M+=B,this.stack.length<M&&this.scriptEvaluationError(`${Ie[D]} requires the number of stack items not to be less than the number of signatures provided.`),I="UnlockingScript"===this.context?new _e(this.unlockingScript.chunks.slice(this.lastCodeSeparator)):new _e(this.lockingScript.chunks.slice(this.lastCodeSeparator));for(let t=0;t<B;t++)P=this.stacktop(-R-t),I.findAndDelete((new _e).writeBin(P));for(L=!0;L&&B>0;){P=this.stacktop(-R),E=this.stacktop(-F),e(P)&&r(E)||this.scriptEvaluationError(`${Ie[D]} requires correct encoding for the public key and signature.`);try{x=Oe.fromChecksigFormat(P),S=Xt.fromString(_t(E)),A=i(x,S,I)}catch(t){A=!1}A&&(R++,B--),F++,N--,B>N&&(L=!1)}for(;M-- >1;)!L&&!T&&this.stacktop(-1).length>0&&this.scriptEvaluationError(`${Ie[D]} failed to verify a signature, and requires an empty signature when verification fails.`),T>0&&T--,this.stack.pop();this.stack.length<1&&this.scriptEvaluationError(`${Ie[D]} requires an extra item to be on the stack.`),this.stacktop(-1).length>0&&this.scriptEvaluationError(`${Ie[D]} requires the extra stack item to be empty.`),this.stack.pop(),this.stack.push(L?[1]:[]),D===Ie.OP_CHECKMULTISIGVERIFY&&(L?this.stack.pop():this.scriptEvaluationError("OP_CHECKMULTISIGVERIFY requires that a sufficient number of valid signatures are provided."));break;case Ie.OP_CAT:this.stack.length<2&&this.scriptEvaluationError("OP_CAT requires at least two items to be on the stack."),a=this.stacktop(-2),o=this.stacktop(-1),a.length+o.length>Me&&this.scriptEvaluationError("It's not currently possible to push data larger than 1073741824 bytes."),this.stack[this.stack.length-2]=[...a,...o],this.stack.pop();break;case Ie.OP_SPLIT:this.stack.length<2&&this.scriptEvaluationError("OP_SPLIT requires at least two items to be on the stack."),a=this.stacktop(-2),u=c.fromScriptNum(this.stacktop(-1),Ne).toNumber(),(u<0||u>a.length)&&this.scriptEvaluationError("OP_SPLIT requires the first stack item to be a non-negative number less than or equal to the size of the second-from-top stack item."),o=[...a],this.stack[this.stack.length-2]=o.slice(0,u),this.stack[this.stack.length-1]=o.slice(u);break;case Ie.OP_NUM2BIN:if(this.stack.length<2&&this.scriptEvaluationError("OP_NUM2BIN requires at least two items to be on the stack."),l=c.fromScriptNum(this.stacktop(-1),Ne).toNumber(),l>Me&&this.scriptEvaluationError("It's not currently possible to push data larger than 1073741824 bytes."),this.stack.pop(),f=this.stacktop(-1),f=Lt(f),f.length>l&&this.scriptEvaluationError("OP_NUM2BIN requires that the size expressed in the top stack item is large enough to hold the value expressed in the second-from-top stack item."),f.length===l){this.stack[this.stack.length-1]=f;break}for(p=0,f.length>0&&(p=128&f[f.length-1],f[f.length-1]&=127),b=new Array(l),b.fill(0),u=0;u<l;u++)b[u]=f[u];for(u=f.length-1;u++<l-2;)b[u]=0;b[u]=p,this.stack[this.stack.length-1]=b;break;case Ie.OP_BIN2NUM:this.stack.length<1&&this.scriptEvaluationError("OP_BIN2NUM requires at least one item to be on the stack."),a=this.stacktop(-1),o=Lt(a),this.stack[this.stack.length-1]=o,((t,e=Number.MAX_SAFE_INTEGER)=>!(t.length>e||t.length>0&&!(127&t[t.length-1]||!(t.length<=1)&&128&t[t.length-2])))(o)||this.scriptEvaluationError("OP_BIN2NUM requires that the resulting number is valid.");break;default:this.scriptEvaluationError("Invalid opcode!")}this.programCounter++}validate(){for(this.unlockingScript.isPushOnly()||this.scriptEvaluationError("Unlocking scripts can only contain push operations, and no other opcodes.");this.step(),!("LockingScript"===this.context&&this.programCounter>=this.lockingScript.chunks.length););return this.ifStack.length>0&&this.scriptEvaluationError("Every OP_IF must be terminated prior to the end of the script."),1!==this.stack.length&&this.scriptEvaluationError("The clean stack rule requires exactly one item to be on the stack after script execution."),this.castToBool(this.stacktop(-1))||this.scriptEvaluationError("The top stack element must be truthy after script evaluation."),!0}stacktop(t){return this.stack[this.stack.length+t]}castToBool(t){for(let e=0;e<t.length;e++)if(0!==t[e])return e!==t.length-1||128!==t[e];return!1}scriptEvaluationError(t){throw new Error(`Script evaluation error: ${t}\n\nSource TXID: ${this.sourceTXID}\nSource output index: ${this.sourceOutputIndex}\nContext: ${this.context}\nProgram counter: ${this.programCounter}\nStack size: ${this.stack.length}\nAlt stack size: ${this.altStack.length}`)}}class Te{lock(t){let e;if("string"==typeof t){const r=Rt(t);if(0!==r.prefix[0]&&111!==r.prefix[0])throw new Error("only P2PKH is supported");e=r.data}else e=t;return new xe([{op:Ie.OP_DUP},{op:Ie.OP_HASH160},{op:e.length,data:e},{op:Ie.OP_EQUALVERIFY},{op:Ie.OP_CHECKSIG}])}unlock(t,e="all",r=!1,i,s){return{sign:async(n,a)=>{let o=Oe.SIGHASH_FORKID;"all"===e&&(o|=Oe.SIGHASH_ALL),"none"===e&&(o|=Oe.SIGHASH_NONE),"single"===e&&(o|=Oe.SIGHASH_SINGLE),r&&(o|=Oe.SIGHASH_ANYONECANPAY);const c=n.inputs[a],h=n.inputs.filter(((t,e)=>e!==a)),d=c.sourceTXID?c.sourceTXID:c.sourceTransaction?.id("hex");if(!d)throw new Error("The input sourceTXID or sourceTransaction is required for transaction signing.");if(i||=c.sourceTransaction?.outputs[c.sourceOutputIndex].satoshis,!i)throw new Error("The sourceSatoshis or input sourceTransaction is required for transaction signing.");if(s||=c.sourceTransaction?.outputs[c.sourceOutputIndex].lockingScript,!s)throw new Error("The lockingScript or input sourceTransaction is required for transaction signing.");const u=Oe.format({sourceTXID:d,sourceOutputIndex:c.sourceOutputIndex,sourceSatoshis:i,transactionVersion:n.version,otherInputs:h,inputIndex:a,outputs:n.outputs,inputSequence:c.sequence,subscript:s,lockTime:n.lockTime,scope:o}),l=t.sign(wt(u)),f=new Oe(l.r,l.s,o).toChecksigFormat(),b=t.toPublicKey().encode(!0);return new Se([{op:f.length,data:f},{op:b.length,data:b}])},estimateLength:async()=>108}}}class Be{type="raw";constructor(t="raw"){this.type=t}lock(t){const e=[{op:Ie.OP_OVER},{op:Ie.OP_3},{op:Ie.OP_SPLIT},{op:Ie.OP_NIP},{op:Ie.OP_1},{op:Ie.OP_SPLIT},{op:Ie.OP_SWAP},{op:Ie.OP_SPLIT},{op:Ie.OP_DROP}];return"raw"!==this.type&&e.push({op:Ie["OP_"+this.type]}),e.push({op:t.length,data:t}),e.push({op:Ie.OP_EQUALVERIFY}),e.push({op:Ie.OP_CHECKSIG}),new xe(e)}unlock(t,e,r="all",i=!1){return{sign:async(s,n)=>{void 0===e&&(e=te.fromRandom());let a=Oe.SIGHASH_FORKID;"all"===r&&(a|=Oe.SIGHASH_ALL),"none"===r&&(a|=Oe.SIGHASH_NONE),"single"===r&&(a|=Oe.SIGHASH_SINGLE),i&&(a|=Oe.SIGHASH_ANYONECANPAY);const o=[...s.inputs],[c]=o.splice(n,1);if("object"!=typeof c.sourceTransaction)throw new Error("The source transaction is needed for transaction signing.");const h=Oe.format({sourceTXID:c.sourceTransaction.id("hex"),sourceOutputIndex:c.sourceOutputIndex,sourceSatoshis:c.sourceTransaction.outputs[c.sourceOutputIndex].satoshis,transactionVersion:s.version,otherInputs:o,inputIndex:n,outputs:s.outputs,inputSequence:c.sequence,subscript:c.sourceTransaction.outputs[c.sourceOutputIndex].lockingScript,lockTime:s.lockTime,scope:a}),d=e.sign(wt(h),void 0,!0,t),u=new Oe(d.r,d.s,a).toChecksigFormat(),l=e.toPublicKey().encode(!0);return new Se([{op:u.length,data:u},{op:l.length,data:l}])},estimateLength:async()=>108}}}class Re{value;constructor(t){this.value=t}async computeFee(t){const e=t=>t>2**32?9:t>65536?5:t>253?3:1;let r=4;r+=e(t.inputs.length);for(let i=0;i<t.inputs.length;i++){const s=t.inputs[i];let n;if(r+=40,"object"==typeof s.unlockingScript)n=s.unlockingScript.toBinary().length;else{if("object"!=typeof s.unlockingScriptTemplate)throw new Error("All inputs must have an unlocking script or an unlocking script template for sat/kb fee computation.");n=await s.unlockingScriptTemplate.estimateLength(t,i)}r+=e(n),r+=n}r+=e(t.outputs.length);for(const i of t.outputs){r+=8;const t=i.lockingScript.toBinary().length;r+=e(t),r+=t}return r+=4,Math.ceil(r/1e3*this.value)}}class Ue{blockHeight;path;static fromHex(t){return Ue.fromBinary(xt(t,"hex"))}static fromReader(t){const e=t.readVarIntNum(),r=t.readUInt8(),i=Array(r).fill(0).map((()=>[]));let s,n,a;for(let e=0;e<r;e++){for(a=t.readVarIntNum();a;){n=t.readVarIntNum(),s=t.readUInt8();const r={offset:n};1&s?r.duplicate=!0:(2&s&&(r.txid=!0),r.hash=_t(t.read(32).reverse())),i[e].push(r),a--}i[e].sort(((t,e)=>t.offset-e.offset))}return new Ue(e,i)}static fromBinary(t){const e=new Ht(t);return Ue.fromReader(e)}constructor(t,e){this.blockHeight=t,this.path=e;const r=Array(this.path.length).fill(0).map((()=>new Set));let i;this.path.map(((t,e)=>{if(0===t.length&&0===e)throw new Error(`Empty level at height: ${e}`);const i=new Set;t.map((t=>{if(i.has(t.offset))throw new Error(`Duplicate offset: ${t.offset}, at height: ${e}`);if(i.add(t.offset),0===e){if(!t.duplicate)for(let e=1;e<this.path.length;e++)r[e].add(t.offset>>e^1)}else if(!r[e].has(t.offset))throw new Error(`Invalid offset: ${t.offset}, at height: ${e}, with legal offsets: ${Array.from(r[e]).join(", ")}`)}))})),this.path[0].map(((t,e)=>{if(0===e&&(i=this.computeRoot(t.hash)),i!==this.computeRoot(t.hash))throw new Error("Mismatched roots")}))}toBinary(){const t=new Ut;t.writeVarIntNum(this.blockHeight);const e=this.path.length;t.writeUInt8(e);for(let r=0;r<e;r++){const e=Object.keys(this.path[r]).length;t.writeVarIntNum(e);for(const e of this.path[r]){t.writeVarIntNum(e.offset);let r=0;e?.duplicate&&(r|=1),e?.txid&&(r|=2),t.writeUInt8(r),1&r||t.write(xt(e.hash,"hex").reverse())}}return t.toArray()}toHex(){return _t(this.toBinary())}computeRoot(t){"string"!=typeof t&&(t=this.path[0].find((t=>Boolean(t?.hash))).hash);const e=this.path[0].find((e=>e.hash===t)).offset;if("number"!=typeof e)throw new Error(`This proof does not contain the txid: ${t}`);const r=t=>_t(vt(xt(t,"hex").reverse()).reverse());let i=t;for(let t=0;t<this.path.length;t++){this.path[t];const s=e>>t^1,n=this.findOrComputeLeaf(t,s);if("object"!=typeof n)throw new Error(`Missing hash for index ${e} at height ${t}`);i=n.duplicate?r(i+i):r(s%2!=0?n.hash+i:i+n.hash)}return i}findOrComputeLeaf(t,e){const r=t=>_t(vt(xt(t,"hex").reverse()).reverse());let i=this.path[t].find((t=>t.offset===e));if(i)return i;if(0===t)return;const s=t-1,n=e<<1,a=this.findOrComputeLeaf(s,n);if(!a||!a.hash)return;const o=this.findOrComputeLeaf(s,n+1);if(!o)return;let c;return c=o.duplicate?r(a.hash+a.hash):r(o.hash+a.hash),i={offset:e,hash:c},i}async verify(t,e){const r=this.computeRoot(t);return await e.isValidRootForHeight(r,this.blockHeight)}combine(t){if(this.blockHeight!==t.blockHeight)throw new Error("You cannot combine paths which do not have the same block height.");if(this.computeRoot()!==t.computeRoot())throw new Error("You cannot combine paths which do not have the same root.");const e=[];for(let r=0;r<this.path.length;r++){e.push([]);for(let t=0;t<this.path[r].length;t++)e[r].push(this.path[r][t]);for(let i=0;i<t.path[r].length;i++)e[r].find((e=>e.offset===t.path[r][i].offset))?t.path[r][i]?.txid&&(e[r].find((e=>e.offset===t.path[r][i].offset)).txid=!0):e[r].push(t.path[r][i])}this.path=e,this.trim()}trim(){const t=(t,e)=>{0!==e.length&&e.slice(-1)[0]===t||e.push(t)},e=(t,e)=>{for(let r=t.length;r>=0;r--){const i=this.path[e].findIndex((e=>e.offset===t[r]));i>=0&&this.path[e].splice(i,1)}},r=e=>{const r=[];for(const i of e)t(i>>1,r);return r};let i=[],s=[];for(let t=0;t<this.path.length;t++)this.path[t].sort(((t,e)=>t.offset-e.offset));for(let e=0;e<this.path[0].length;e++){const r=this.path[0][e];if(r.txid)t(r.offset>>1,i);else{const i=r.offset%2==1,n=this.path[0][e+(i?-1:1)];n.txid||t(n.offset,s)}}e(s,0);for(let t=1;t<this.path.length;t++)s=i,i=r(i),e(s,t)}}class He{https;constructor(t){this.https=t}async request(t,e){return await new Promise(((r,i)=>{const s=this.https.request(t,e,(t=>{let e="";t.on("data",(t=>{e+=t})),t.on("end",(()=>{const i=t.statusCode>=200&&t.statusCode<=299,s=t.headers["content-type"],n=e&&s.startsWith("application/json")?JSON.parse(e):e;r({status:t.statusCode,statusText:t.statusMessage,ok:i,data:n})}))}));s.on("error",(t=>{i(t)})),e.data&&s.write(JSON.stringify(e.data)),s.end()}))}}class Le{fetch;constructor(t){this.fetch=t}async request(t,e){const r={method:e.method,headers:e.headers,body:JSON.stringify(e.data)},i=await this.fetch(t,r),s=i.headers.get("Content-Type").startsWith("application/json")?await i.json():await i.text();return{ok:i.ok,status:i.status,statusText:i.statusText,data:s}}}function De(){const t={async request(...t){throw new Error("No method available to perform HTTP request")}};if("undefined"!=typeof window&&"function"==typeof window.fetch)return new Le(window.fetch);if("undefined"==typeof require)return t;try{const t=require("https");return new He(t)}catch(e){return t}}function Ce(){return`ts-sdk-${_t(Yt(16))}`}class qe{URL;apiKey;deploymentId;callbackUrl;callbackToken;headers;httpClient;constructor(t,e){if(this.URL=t,"string"==typeof e)this.apiKey=e,this.httpClient=De(),this.deploymentId=Ce(),this.callbackToken=void 0,this.callbackUrl=void 0;else{const{apiKey:t,deploymentId:r,httpClient:i,callbackToken:s,callbackUrl:n,headers:a}=e??{};this.apiKey=t,this.httpClient=i??De(),this.deploymentId=r??Ce(),this.callbackToken=s,this.callbackUrl=n,this.headers=a}}async broadcast(t){let e;try{e=t.toHexEF()}catch(r){if("All inputs must have source transactions when serializing to EF format"!==r.message)throw r;e=t.toHex()}const r={method:"POST",headers:this.requestHeaders(),data:{rawTx:e}};try{const t=await this.httpClient.request(`${this.URL}/v1/tx`,r);if(t.ok){const{txid:e,extraInfo:r,txStatus:i,competingTxs:s}=t.data;let n={status:"success",txid:e,message:`${i} ${r}`};return s&&(n.competingTxs=s),n}{const e=typeof t.status,r={status:"error",code:"number"===e||"string"===e?t.status.toString():"ERR_UNKNOWN",description:"Unknown error"};let i=t.data;if("string"==typeof i)try{i=JSON.parse(t.data)}catch{}return"object"==typeof i&&(r.more=i,"string"==typeof i.txid&&(r.txid=i.txid),"string"==typeof i.detail&&(r.description=i.detail)),r}}catch(t){return{status:"error",code:"500",description:"string"==typeof t.message?t.message:"Internal Server Error"}}}requestHeaders(){const t={"Content-Type":"application/json","XDeployment-ID":this.deploymentId};if(this.apiKey&&(t.Authorization=`Bearer ${this.apiKey}`),this.callbackUrl&&(t["X-CallbackUrl"]=this.callbackUrl),this.callbackToken&&(t["X-CallbackToken"]=this.callbackToken),this.headers)for(const e in this.headers)t[e]=this.headers[e];return t}}function Ve(){return new qe("https://arc.taal.com")}class Ke{network;apiKey;URL;httpClient;constructor(t="main",e={}){const{apiKey:r,httpClient:i}=e;this.network=t,this.URL=`https://api.whatsonchain.com/v1/bsv/${t}`,this.httpClient=i??De(),this.apiKey=r}async isValidRootForHeight(t,e){const r={method:"GET",headers:this.getHeaders()},i=await this.httpClient.request(`${this.URL}/block/${e}/header`,r);if(i.ok){const{merkleroot:e}=i.data;return e===t}if(404===i.status)return!1;throw new Error(`Failed to verify merkleroot for height ${e} because of an error: ${JSON.stringify(i.data)} `)}getHeaders(){const t={Accept:"application/json"};return this.apiKey&&(t.Authorization=this.apiKey),t}}function ze(){return new Ke}class $e{_bumpIndex;_tx;_rawTx;_txid;inputTxids=[];degree=0;get bumpIndex(){return this._bumpIndex}set bumpIndex(t){this._bumpIndex=t,this.updateInputTxids()}get hasProof(){return void 0!==this._bumpIndex}get isTxidOnly(){return!!this._txid&&!this._rawTx&&!this._tx}get txid(){if(this._txid)return this._txid;if(this._tx)return this._txid=this._tx.id("hex");if(this._rawTx)return this._txid=_t(vt(this._rawTx));throw new Error("Internal")}get tx(){return this._tx?this._tx:this._rawTx?this._tx=Ze.fromBinary(this._rawTx):void 0}get rawTx(){return this._rawTx?this._rawTx:this._tx?this._rawTx=this._tx.toBinary():void 0}constructor(t,e){"string"==typeof t?this._txid=t:Array.isArray(t)?this._rawTx=t:this._tx=t,this.bumpIndex=e,this.updateInputTxids()}updateInputTxids(){if(this.hasProof||!this.tx)this.inputTxids=[];else{const t={};for(const e of this.tx.inputs)t[e.sourceTXID]=!0;this.inputTxids=Object.keys(t)}}toWriter(t,e){if(e===je){if(this.isTxidOnly)t.writeUInt32LE(Ge),t.writeReverse(xt(this._txid,"hex"));else if(this._rawTx)t.write(this._rawTx);else{if(!this._tx)throw new Error("a valid serialized Transaction is expected");t.write(this._tx.toBinary())}void 0===this.bumpIndex?t.writeUInt8(0):(t.writeUInt8(1),t.writeVarIntNum(this.bumpIndex))}else if(this.isTxidOnly)t.writeUInt8(2),t.writeReverse(xt(this._txid,"hex"));else if(void 0===this.bumpIndex?t.writeUInt8(0):(t.writeUInt8(1),t.writeVarIntNum(this.bumpIndex)),this._rawTx)t.write(this._rawTx);else{if(!this._tx)throw new Error("a valid serialized Transaction is expected");t.write(this._tx.toBinary())}}static fromReader(t,e){let r,i;if(e===je)t.readUInt32LE()===Ge?r=_t(t.readReverse(32)):(t.pos-=4,r=Ze.fromReader(t)),i=t.readUInt8()?t.readVarIntNum():void 0;else{const e=t.readUInt8();2===e?r=_t(t.readReverse(32)):(1===e&&(i=t.readVarIntNum()),r=Ze.fromReader(t))}return new $e(r,i)}}const je=4022206465,Xe=4022206466,Ge=4022206465;class We{bumps=[];txs=[];version=void 0;constructor(t){this.version=t}get magic(){return"V1"===this.version?je:"V2"===this.version||this.txs.findIndex((t=>t.isTxidOnly))>-1?Xe:je}findTxid(t){return this.txs.find((e=>e.txid===t))}mergeBump(t){let e;for(let r=0;r<this.bumps.length;r++){const i=this.bumps[r];if(i===t)return r;if(i.blockHeight===t.blockHeight&&i.computeRoot()===t.computeRoot()){i.combine(t),e=r;break}}void 0===e&&(e=this.bumps.length,this.bumps.push(t));const r=this.bumps[e];for(const t of this.txs){const i=t.txid;if(!t.bumpIndex)for(const s of r.path[0])if(s.hash===i){t.bumpIndex=e,s.txid=!0;break}}return e}mergeRawTx(t,e){const r=new $e(t,e);return this.removeExistingTxid(r.txid),this.txs.push(r),this.tryToValidateBumpIndex(r),r}mergeTransaction(t){const e=t.id("hex");let r;this.removeExistingTxid(e),t.merklePath&&(r=this.mergeBump(t.merklePath));const i=new $e(t,r);if(this.txs.push(i),this.tryToValidateBumpIndex(i),r=i.bumpIndex,void 0===r)for(const e of t.inputs)e.sourceTransaction&&this.mergeTransaction(e.sourceTransaction);return i}removeExistingTxid(t){const e=this.txs.findIndex((e=>e.txid===t));e>=0&&this.txs.splice(e,1)}mergeTxidOnly(t){if("V1"===this.version)throw new Error("BEEF V1 format does not support txid only transactions.");let e=this.txs.find((e=>e.txid===t));return e||(e=new $e(t),this.txs.push(e),this.tryToValidateBumpIndex(e)),e}mergeBeefTx(t){let e=this.findTxid(t.txid);return!e&&t.isTxidOnly?e=this.mergeTxidOnly(t.txid):e&&!e.isTxidOnly||(e=t._tx?this.mergeTransaction(t._tx):this.mergeRawTx(t._rawTx)),e}mergeBeef(t){const e=Array.isArray(t)?We.fromBinary(t):t;for(const t of e.bumps)this.mergeBump(t);for(const t of e.txs)this.mergeBeefTx(t)}isValid(t){return this.verifyValid(t).valid}async verify(t,e){const r=this.verifyValid(e);if(!r.valid)return!1;for(const e of Object.keys(r.roots))if(!await t.isValidRootForHeight(r.roots[e],Number(e)))return!1;return!0}verifyValid(t){const e={valid:!1,roots:{}};this.sortTxs();const r={};for(const i of this.txs)if(i.isTxidOnly){if(!t)return e;r[i.txid]=!0}const i=(t,r)=>{const i=t.computeRoot(r);return e.roots[t.blockHeight]||(e.roots[t.blockHeight]=i),e.roots[t.blockHeight]===i};for(const t of this.bumps)for(const s of t.path[0])if(s.txid&&s.hash&&(r[s.hash]=!0,!i(t,s.hash)))return e;for(const t of this.txs){for(const i of t.inputTxids)if(!r[i])return e;r[t.txid]=!0}return e.valid=!0,e}toBinary(){const t=new Ut;t.writeUInt32LE(this.magic),t.writeVarIntNum(this.bumps.length);for(const e of this.bumps)t.write(e.toBinary());t.writeVarIntNum(this.txs.length);for(const e of this.txs)e.toWriter(t,this.magic);return t.toArray()}toHex(){return _t(this.toBinary())}static fromReader(t){const e=t.readUInt32LE();if(e!==je&&e!==Xe)throw new Error(`Serialized BEEF must start with ${je} or 4022206466 but starts with ${e}`);const r=new We(e===Xe?"V2":void 0),i=t.readVarIntNum();for(let e=0;e<i;e++){const e=Ue.fromReader(t);r.bumps.push(e)}const s=t.readVarIntNum();for(let i=0;i<s;i++){const i=$e.fromReader(t,e);r.txs.push(i)}return r}static fromBinary(t){const e=new Ht(t);return We.fromReader(e)}static fromString(t,e){e||="hex";const r=xt(t,e),i=new Ht(r);return We.fromReader(i)}tryToValidateBumpIndex(t){if(void 0!==t.bumpIndex)return!0;const e=t.txid;for(let r=0;r<this.bumps.length;r++){const i=this.bumps[r].path[0].findIndex((t=>t.hash===e));if(i>=0)return t.bumpIndex=r,this.bumps[r].path[0][i].txid=!0,!0}return!1}sortTxs(){const t={},e={};for(const t of this.txs)e[t.txid]=t,t.degree=0;for(const r of this.txs)if(void 0===r.bumpIndex)for(const i of r.inputTxids)e[i]||(t[i]=!0);const r=[],i=[];for(const t of this.txs)for(const r of t.inputTxids){const t=e[r];t&&t.degree++}for(const t of this.txs)0===t.degree&&r.push(t);for(;r.length>0;){const t=r.shift();i.unshift(t);for(const i of t.inputTxids){const t=e[i];t&&(t.degree--,0===t.degree&&r.push(t))}}return this.txs=i,Object.keys(t)}clone(){const t=new We;return t.bumps=Array.from(this.bumps),t.txs=Array.from(this.txs),t}trimKnownTxids(t){for(let e=0;e<this.txs.length;){const r=this.txs[e];r.isTxidOnly&&t.includes(r.txid)?this.txs.splice(e,1):e++}}toLogString(){let t="";t+=`BEEF with ${this.bumps.length} BUMPS and ${this.txs.length} Transactions, isValid ${this.isValid()}\n`;let e=-1;for(const r of this.bumps)e++,t+=` BUMP ${e}\n block: ${r.blockHeight}\n txids: [\n${r.path[0].filter((t=>!!t.txid)).map((t=>` '${t.hash}'`)).join(",\n")}\n ]\n`;e=-1;for(const r of this.txs)e++,t+=` TX ${e}\n txid: ${r.txid}\n`,void 0!==r.bumpIndex&&(t+=` bumpIndex: ${r.bumpIndex}\n`),r.isTxidOnly?t+=" txidOnly\n":t+=` rawTx length=${r.rawTx.length}\n`,r.inputTxids.length>0&&(t+=` inputs: [\n${r.inputTxids.map((t=>` '${t}'`)).join(",\n")}\n ]\n`);return t}}const Ye=We;class Ze{version;inputs;outputs;lockTime;metadata;merklePath;cachedHash;static fromBEEF(t,e){const r=new Ht(t),{transactions:i,BUMPs:s}=Ze.parseBEEFData(r),n=Object.keys(i),a=n[n.length-1],o=e||a;if(!i[o])throw new Error(`Transaction with TXID ${o} not found in BEEF data.`);const c=t=>{if("number"==typeof t.pathIndex){const e=s[t.pathIndex];if("object"!=typeof e)throw new Error("Invalid merkle path index found in BEEF!");t.tx.merklePath=e}else for(let e=0;e<t.tx.inputs.length;e++){const r=t.tx.inputs[e],s=i[r.sourceTXID];if("object"!=typeof s)throw new Error(`Reference to unknown TXID in BEEF: ${r.sourceTXID}`);r.sourceTransaction=s.tx,c(s)}};return c(i[o]),i[o].tx}static fromAtomicBEEF(t){const e=new Ht(t),r=e.readUInt32LE();if(16843009!==r)throw new Error(`Invalid Atomic BEEF prefix. Expected 0x01010101, received ${r.toString(16)}.`);const i=e.read(32),s=_t(i),n=new Ht(e.read()),{transactions:a,BUMPs:o}=Ze.parseBEEFData(n);if(!a[s])throw new Error(`Subject transaction with TXID ${s} not found in Atomic BEEF data.`);const c=new Set,h=t=>{if(c.has(t))return;c.add(t);const e=a[t].tx;for(const t of e.inputs){const e=t.sourceTXID;if(!a[e])throw new Error(`Input transaction with TXID ${e} is missing in Atomic BEEF data.`);h(e)}};h(s);for(const t in a)if(!c.has(t))throw new Error(`Unrelated transaction with TXID ${t} found in Atomic BEEF data.`);const d=t=>{if("number"==typeof t.pathIndex){const e=o[t.pathIndex];if("object"!=typeof e)throw new Error("Invalid merkle path index found in BEEF!");t.tx.merklePath=e}else for(let e=0;e<t.tx.inputs.length;e++){const r=t.tx.inputs[e],i=a[r.sourceTXID];if("object"!=typeof i)throw new Error(`Reference to unknown TXID in BEEF: ${r.sourceTXID}`);r.sourceTransaction=i.tx,d(i)}};return d(a[s]),a[s].tx}static parseBEEFData(t){const e=t.readUInt32LE();if(e!==je)throw new Error(`Invalid BEEF version. Expected ${je}, received ${e}.`);const r=t.readVarIntNum(),i=[];for(let e=0;e<r;e++)i.push(Ue.fromReader(t));const s=t.readVarIntNum(),n={};for(let e=0;e<s;e++){const e=Ze.fromReader(t),r={tx:e},i=e.id("hex");Boolean(t.readUInt8())&&(r.pathIndex=t.readVarIntNum()),n[i]=r}return{transactions:n,BUMPs:i}}static fromEF(t){const e=new Ht(t),r=e.readUInt32LE();if("0000000000ef"!==_t(e.read(6)))throw new Error("Invalid EF marker");const i=e.readVarIntNum(),s=[];for(let t=0;t<i;t++){const t=_t(e.readReverse(32)),r=e.readUInt32LE(),i=e.readVarIntNum(),n=e.read(i),a=Se.fromBinary(n),o=e.readUInt32LE(),c=e.readUInt64LEBn().toNumber(),h=e.readVarIntNum(),d=e.read(h),u=xe.fromBinary(d),l=new Ze(null,[],[],null);l.outputs=Array(r+1).fill(null),l.outputs[r]={satoshis:c,lockingScript:u},s.push({sourceTransaction:l,sourceTXID:t,sourceOutputIndex:r,unlockingScript:a,sequence:o})}const n=e.readVarIntNum(),a=[];for(let t=0;t<n;t++){const t=e.readUInt64LEBn().toNumber(),r=e.readVarIntNum(),i=e.read(r),s=xe.fromBinary(i);a.push({satoshis:t,lockingScript:s})}const o=e.readUInt32LE();return new Ze(r,s,a,o)}static parseScriptOffsets(t){const e=new Ht(t),r=[],i=[];e.pos+=4;const s=e.readVarIntNum();for(let t=0;t<s;t++){e.pos+=36;const i=e.readVarIntNum();r.push({vin:t,offset:e.pos,length:i}),e.pos+=i+4}const n=e.readVarIntNum();for(let t=0;t<n;t++){e.pos+=8;const r=e.readVarIntNum();i.push({vout:t,offset:e.pos,length:r}),e.pos+=r}return{inputs:r,outputs:i}}static fromReader(t){const e=t.readUInt32LE(),r=t.readVarIntNum(),i=[];for(let e=0;e<r;e++){const e=_t(t.readReverse(32)),r=t.readUInt32LE(),s=t.readVarIntNum(),n=t.read(s),a=Se.fromBinary(n),o=t.readUInt32LE();i.push({sourceTXID:e,sourceOutputIndex:r,unlockingScript:a,sequence:o})}const s=t.readVarIntNum(),n=[];for(let e=0;e<s;e++){const e=t.readUInt64LEBn().toNumber(),r=t.readVarIntNum(),i=t.read(r),s=xe.fromBinary(i);n.push({satoshis:e,lockingScript:s})}const a=t.readUInt32LE();return new Ze(e,i,n,a)}static fromBinary(t){const e=new Ht(t);return Ze.fromReader(e)}static fromHex(t){return Ze.fromBinary(xt(t,"hex"))}static fromHexEF(t){return Ze.fromEF(xt(t,"hex"))}static fromHexBEEF(t,e){return Ze.fromBEEF(xt(t,"hex"),e)}constructor(t=1,e=[],r=[],i=0,s={},n){this.version=t,this.inputs=e,this.outputs=r,this.lockTime=i,this.metadata=s,this.merklePath=n}addInput(t){if(void 0===t.sourceTXID&&void 0===t.sourceTransaction)throw new Error("A reference to an an input transaction is required. If the input transaction itself cannot be referenced, its TXID must still be provided.");void 0===t.sequence&&(t.sequence=4294967295),this.cachedHash=void 0,this.inputs.push(t)}addOutput(t){this.cachedHash=void 0,this.outputs.push(t)}updateMetadata(t){this.metadata={...this.metadata,...t}}async fee(t,e="equal"){if(this.cachedHash=void 0,void 0===t&&(t=new Re(10)),"number"==typeof t){const e=t;t={computeFee:async()=>e}}const r=await t.computeFee(this);let i=0;for(const t of this.inputs){if("object"!=typeof t.sourceTransaction)throw new Error("Source transactions are required for all inputs during fee computation");i+=t.sourceTransaction.outputs[t.sourceOutputIndex].satoshis}i-=r;let s=0;for(const t of this.outputs)t.change?s++:i-=t.satoshis;if(i<=s)for(let t=0;t<this.outputs.length;t++)this.outputs[t].change&&(this.outputs.splice(t,1),t--);else{if("random"===e)throw new Error("Not yet implemented");if("equal"===e){const t=Math.floor(i/s);for(const e of this.outputs)e.change&&(e.satoshis=t)}}}getFee(){let t=0;for(const e of this.inputs){if("object"!=typeof e.sourceTransaction)throw new Error("Source transactions or sourceSatoshis are required for all inputs to calculate fee");t+=e.sourceTransaction.outputs[e.sourceOutputIndex].satoshis}let e=0;for(const t of this.outputs)e+=t.satoshis||0;return t-e}async sign(){this.cachedHash=void 0;for(const t of this.outputs)if(void 0===t.satoshis)throw t.change?new Error("There are still change outputs with uncomputed amounts. Use the fee() method to compute the change amounts and transaction fees prior to signing."):new Error("One or more transaction outputs is missing an amount. Ensure all output amounts are provided before signing.");const t=await Promise.all(this.inputs.map((async(t,e)=>"object"==typeof this.inputs[e].unlockingScriptTemplate?await this.inputs[e].unlockingScriptTemplate.sign(this,e):await Promise.resolve(void 0))));for(let e=0,r=this.inputs.length;e<r;e++)"object"==typeof this.inputs[e].unlockingScriptTemplate&&(this.inputs[e].unlockingScript=t[e])}async broadcast(t=Ve()){return await t.broadcast(this)}toBinary(){const t=new Ut;t.writeUInt32LE(this.version),t.writeVarIntNum(this.inputs.length);for(const e of this.inputs){void 0===e.sourceTXID?t.write(e.sourceTransaction.hash()):t.writeReverse(xt(e.sourceTXID,"hex")),t.writeUInt32LE(e.sourceOutputIndex);const r=e.unlockingScript.toBinary();t.writeVarIntNum(r.length),t.write(r),t.writeUInt32LE(e.sequence)}t.writeVarIntNum(this.outputs.length);for(const e of this.outputs){t.writeUInt64LE(e.satoshis);const r=e.lockingScript.toBinary();t.writeVarIntNum(r.length),t.write(r)}return t.writeUInt32LE(this.lockTime),t.toArray()}toEF(){const t=new Ut;t.writeUInt32LE(this.version),t.write([0,0,0,0,0,239]),t.writeVarIntNum(this.inputs.length);for(const e of this.inputs){if(void 0===e.sourceTransaction)throw new Error("All inputs must have source transactions when serializing to EF format");void 0===e.sourceTXID?t.write(e.sourceTransaction.hash()):t.write(xt(e.sourceTXID,"hex").reverse()),t.writeUInt32LE(e.sourceOutputIndex);const r=e.unlockingScript.toBinary();t.writeVarIntNum(r.length),t.write(r),t.writeUInt32LE(e.sequence),t.writeUInt64LE(e.sourceTransaction.outputs[e.sourceOutputIndex].satoshis);const i=e.sourceTransaction.outputs[e.sourceOutputIndex].lockingScript.toBinary();t.writeVarIntNum(i.length),t.write(i)}t.writeVarIntNum(this.outputs.length);for(const e of this.outputs){t.writeUInt64LE(e.satoshis);const r=e.lockingScript.toBinary();t.writeVarIntNum(r.length),t.write(r)}return t.writeUInt32LE(this.lockTime),t.toArray()}toHexEF(){return _t(this.toEF())}toHex(){return _t(this.toBinary())}toHexBEEF(){return _t(this.toBEEF())}toHexAtomicBEEF(){return _t(this.toAtomicBEEF())}hash(t){let e;return this.cachedHash?e=this.cachedHash:(e=vt(this.toBinary()),this.cachedHash=e),"hex"===t?_t(e):e}id(t){const e=[...this.hash()];return e.reverse(),"hex"===t?_t(e):e}async verify(t=ze(),e){const r=new Set,i=[this];for(;i.length>0;){const s=i.shift(),n=s.id("hex");if(r.has(n))continue;if("object"==typeof s.merklePath){if("scripts only"===t){r.add(n);continue}if(await s.merklePath.verify(n,t)){r.add(n);continue}}if(void 0!==e){const t=Ze.fromEF(s.toEF());if(delete t.outputs[0].satoshis,t.outputs[0].change=!0,await t.fee(e),s.getFee()<t.getFee())throw new Error(`Verification failed because the transaction ${n} has an insufficient fee and has not been mined.`)}let a=0;for(let t=0;t<s.inputs.length;t++){const e=s.inputs[t];if("object"!=typeof e.sourceTransaction)throw new Error(`Verification failed because the input at index ${t} of transaction ${n} is missing an associated source transaction. This source transaction is required for transaction verification because there is no merkle proof for the transaction spending a UTXO it contains.`);if("object"!=typeof e.unlockingScript)throw new Error(`Verification failed because the input at index ${t} of transaction ${n} is missing an associated unlocking script. This script is required for transaction verification because there is no merkle proof for the transaction spending the UTXO.`);const o=e.sourceTransaction.outputs[e.sourceOutputIndex];a+=o.satoshis;const c=e.sourceTransaction.id("hex");r.has(c)||i.push(e.sourceTransaction);const h=s.inputs.filter(((e,r)=>r!==t));if(void 0===e.sourceTXID&&(e.sourceTXID=c),!new Fe({sourceTXID:e.sourceTXID,sourceOutputIndex:e.sourceOutputIndex,lockingScript:o.lockingScript,sourceSatoshis:o.satoshis,transactionVersion:s.version,otherInputs:h,unlockingScript:e.unlockingScript,inputSequence:e.sequence,inputIndex:t,outputs:s.outputs,lockTime:s.lockTime}).validate())return!1}let o=0;for(const t of s.outputs){if("number"!=typeof t.satoshis)throw new Error("Every output must have a defined amount during transaction verification.");o+=t.satoshis}if(o>a)return!1;r.add(n)}return!0}toBEEF(){const t=new Ut;t.writeUInt32LE(4022206465);const e=[],r=[],i=t=>{const s={tx:t},n="object"==typeof t.merklePath;if(n){let r=!1;for(let i=0;i<e.length;i++){if(e[i]===t.merklePath){s.pathIndex=i,r=!0;break}if(e[i].blockHeight===t.merklePath.blockHeight&&e[i].computeRoot()===t.merklePath.computeRoot()){e[i].combine(t.merklePath),s.pathIndex=i,r=!0;break}}r||(s.pathIndex=e.length,e.push(t.merklePath))}if(r.some((e=>e.tx.id("hex")===t.id("hex")))||r.unshift(s),!n)for(let e=0;e<t.inputs.length;e++){const r=t.inputs[e];if("object"!=typeof r.sourceTransaction)throw new Error("A required source transaction is missing!");i(r.sourceTransaction)}};i(this),t.writeVarIntNum(e.length);for(const r of e)t.write(r.toBinary());t.writeVarIntNum(r.length);for(const e of r)t.write(e.tx.toBinary()),"number"==typeof e.pathIndex?(t.writeUInt8(1),t.writeVarIntNum(e.pathIndex)):t.writeUInt8(0);return t.toArray()}toAtomicBEEF(){const t=new Ut;t.writeUInt32LE(16843009),t.write(this.id());const e=this.toBEEF();return t.write(e),t.toArray()}}function Qe(t){return"success"===t.status}function Je(t){return"error"===t.status}const tr=class extends We{knownTo={};constructor(t){if(super(),t)for(const e of t)this.addParty(e)}isParty(t){return Object.keys(this.knownTo).includes(t)}addParty(t){if(this.isParty(t))throw new Error(`Party ${t} already exists.`);this.knownTo[t]={}}getKnownTxidsForParty(t){const e=this.knownTo[t];if(!e)throw new Error(`Party ${t} is unknown.`);return Object.keys(e)}getTrimmedBeefForParty(t){const e=this.getKnownTxidsForParty(t),r=this.clone();return r.trimKnownTxids(e),r}addKnownTxidsForParty(t,e){this.isParty(t)||this.addParty(t);const r=this.knownTo[t];for(const t of e)r[t]=!0,this.mergeTxidOnly(t)}};class er{network;URL;httpClient;constructor(t="main",e=De()){this.network=t,this.URL=`https://api.whatsonchain.com/v1/bsv/${t}/tx/raw`,this.httpClient=e}async broadcast(t){const e={method:"POST",headers:{"Content-Type":"application/json",Accept:"text/plain"},data:{txhex:t.toHex()}};try{const t=await this.httpClient.request(this.URL,e);return t.ok?{status:"success",txid:t.data,message:"broadcast successful"}:{status:"error",code:t.status.toString()??"ERR_UNKNOWN",description:t.data??"Unknown error"}}catch(t){return{status:"error",code:"500",description:"string"==typeof t.message?t.message:"Internal Server Error"}}}}const rr="42423301",ir=(t,e,r)=>{const i="object"!=typeof r;if(i){const t=new qt,e=new te(1),i=t.g.mul(e);r=new Xt(i.x,i.y)}const s=Yt(32),n=`2-message signing-${At(s)}`,a=e.deriveChild(r,n).sign(t).toDER(),o=e.toPublicKey().encode(!0);return[...xt(rr,"hex"),...o,...i?[0]:r.encode(!0),...s,...a]},sr=(t,e,r)=>{const i=new Ht(e),s=_t(i.read(4));if(s!==rr)throw new Error(`Message version mismatch: Expected ${rr}, received ${s}`);const n=Xt.fromString(_t(i.read(33))),[a]=i.read(1);if(0===a)r=new te(1);else{const t=i.read(32),e=_t([a,...t]);if("object"!=typeof r)throw new Error(`This signature can only be verified with knowledge of a specific private key. The associated public key is: ${e}`);const s=r.toPublicKey().encode(!0,"hex");if(e!==s)throw new Error(`The recipient public key is ${s} but the signature requres the recipient to have public key ${e}`)}const o=At(i.read(32)),c=_t(i.read(i.bin.length-i.pos)),h=Vt.fromDER(c,"hex"),d=`2-message signing-${o}`;return n.deriveChild(r,d).verify(t,h)},nr="42421033",ar=(t,e,r)=>{const i=Yt(32),s=`2-message encryption-${At(i)}`,n=e.deriveChild(r,s),a=r.deriveChild(e,s),o=n.deriveSharedSecret(a),c=new ke(o.encode(!0).slice(1)).encrypt(t),h=e.toPublicKey().encode(!0);return[...xt(nr,"hex"),...h,...r.encode(!0),...i,...c]},or=(t,e)=>{const r=new Ht(t),i=_t(r.read(4));if(i!==nr)throw new Error(`Message version mismatch: Expected ${nr}, received ${i}`);const s=Xt.fromString(_t(r.read(33))),n=_t(r.read(33)),a=e.toPublicKey().encode(!0,"hex");if(n!==a)throw new Error(`The encrypted message expects a recipient public key of ${n}, but the provided key is ${a}`);const o=At(r.read(32)),c=r.read(r.bin.length-r.pos),h=`2-message encryption-${o}`,d=s.deriveChild(e,h),u=e.deriveChild(s,h),l=d.deriveSharedSecret(u);return new ke(l.encode(!0).slice(1)).decrypt(c)},cr=t=>{const e=new Ut;e.writeVarIntNum(24),e.write(xt("Bitcoin Signed Message:\n","utf8")),e.writeVarIntNum(t.length),e.write(t);const r=e.toArray();return vt(r)},hr=(t,e,r="base64")=>{const i=cr(t),s=$t(new c(i),e,!0);if("raw"===r)return s;const n=new c(i),a=s.CalculateRecoveryFactor(e.toPublicKey(),n);return s.toCompact(a,!0,"base64")},dr=(t,e,r)=>{const i=cr(t);return jt(new c(i),e,r)};class ur{versionBytesNum;depth;parentFingerPrint;childIndex;chainCode;privKey;pubKey;constants={pubKey:76067358,privKey:76066276};constructor(t,e,r,i,s,n,a){this.versionBytesNum=t,this.depth=e,this.parentFingerPrint=r,this.childIndex=i,this.chainCode=s,this.privKey=n,this.pubKey=a}fromRandom(){return this.versionBytesNum=this.constants.privKey,this.depth=0,this.parentFingerPrint=[0,0,0,0],this.childIndex=0,this.chainCode=Yt(32),this.privKey=te.fromRandom(),this.pubKey=this.privKey.toPublicKey(),this}static fromRandom(){return(new this).fromRandom()}static fromString(t){return(new this).fromString(t)}fromString(t){const e=Rt(t);return this.fromBinary([...e.prefix,...e.data])}static fromSeed(t){return(new this).fromSeed(t)}fromSeed(t){if(t.length<16)throw new Error("Need more than 128 bits of entropy");if(t.length>64)throw new Error("More than 512 bits of entropy is nonstandard");const e=Pt(xt("Bitcoin seed","utf8"),t);return this.depth=0,this.parentFingerPrint=[0,0,0,0],this.childIndex=0,this.chainCode=e.slice(32,64),this.versionBytesNum=this.constants.privKey,this.privKey=new te(e.slice(0,32)),this.pubKey=this.privKey.toPublicKey(),this}static fromBinary(t){return(new this).fromBinary(t)}fromBinary(t){if(78!==t.length)throw new Error("incorrect bip32 data length");const e=new Ht(t);this.versionBytesNum=e.readUInt32BE(),this.depth=e.readUInt8(),this.parentFingerPrint=e.read(4),this.childIndex=e.readUInt32BE(),this.chainCode=e.read(32);const r=e.read(33),i=this.versionBytesNum===this.constants.privKey,s=this.versionBytesNum===this.constants.pubKey;if(i&&0===r[0])this.privKey=new te(r.slice(1,33)),this.pubKey=this.privKey.toPublicKey();else{if(!s||2!==r[0]&&3!==r[0])throw new Error("Invalid key");this.pubKey=Xt.fromString(_t(r))}return this}toString(){const t=this.toBinary();return Bt(t,[])}derive(t){if("m"===t)return this;const e=t.split("/");let r=this;for(const t in e){const i=e[t];if("0"===t){if("m"!==i)throw new Error("invalid path");continue}if(parseInt(i.replace("'",""),10).toString()!==i.replace("'",""))throw new Error("invalid path");const s=i.length>1&&"'"===i[i.length-1];let n=2147483647&parseInt(s?i.slice(0,i.length-1):i,10);s&&(n+=2147483648),r=r.deriveChild(n)}return r}deriveChild(t){if("number"!=typeof t)throw new Error("i must be a number");const e=[];e.push(t>>24&255),e.push(t>>16&255),e.push(t>>8&255),e.push(255&t);const r=[...e],i=!!(2147483648&t),s=this.versionBytesNum===this.constants.privKey;if(i&&(!this.privKey||!s))throw new Error("Cannot do private key derivation without private key");let n=null;if(this.privKey){let t=null;t=i?[0,...this.privKey.toArray("be",32),...r]:[...this.pubKey.encode(!0),...r];const e=Pt(this.chainCode,t),s=new c(e.slice(0,32)),a=e.slice(32,64),o=s.add(this.privKey).mod((new qt).n);n=new ur,n.chainCode=a,n.privKey=new te(o.toArray()),n.pubKey=n.privKey.toPublicKey()}else{const t=[...this.pubKey.encode(!0),...r],e=Pt(this.chainCode,t),i=new c(e.slice(0,32)),s=e.slice(32,64),a=(new qt).g.mul(i),o=this.pubKey,h=a.add(o),d=new Xt(h.x,h.y);n=new ur,n.chainCode=s,n.pubKey=d}n.childIndex=t;const a=kt(this.pubKey.encode(!0));return n.parentFingerPrint=a.slice(0,4),n.versionBytesNum=this.versionBytesNum,n.depth=this.depth+1,n}toPublic(){const t=new ur(this.versionBytesNum,this.depth,this.parentFingerPrint,this.childIndex,this.chainCode,this.privKey,this.pubKey);return t.versionBytesNum=this.constants.pubKey,t.privKey=void 0,t}toBinary(){const t=this.versionBytesNum===this.constants.privKey,e=this.versionBytesNum===this.constants.pubKey;if(t)return(new Ut).writeUInt32BE(this.versionBytesNum).writeUInt8(this.depth).write(this.parentFingerPrint).writeUInt32BE(this.childIndex).write(this.chainCode).writeUInt8(0).write(this.privKey.toArray("be",32)).toArray();if(e)return(new Ut).writeUInt32BE(this.versionBytesNum).writeUInt8(this.depth).write(this.parentFingerPrint).writeUInt32BE(this.childIndex).write(this.chainCode).write(this.pubKey.encode(!0)).toArray();throw new Error("bip32: invalid versionBytesNum byte")}isPrivate(){return this.versionBytesNum===this.constants.privKey}}const lr={value:["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"],space:" "};class fr{mnemonic;seed;Wordlist;constructor(t,e,r=lr){this.mnemonic=t,this.seed=e,this.Wordlist=r}toBinary(){const t=new Ut;if(this.mnemonic){const e=xt(this.mnemonic,"utf8");t.writeVarIntNum(e.length),t.write(e)}else t.writeVarIntNum(0);return this.seed?(t.writeVarIntNum(this.seed.length),t.write(this.seed)):t.writeVarIntNum(0),t.toArray()}fromBinary(t){const e=new Ht(t),r=e.readVarIntNum();r>0&&(this.mnemonic=Mt(e.read(r),"utf8"));const i=e.readVarIntNum();return i>0&&(this.seed=e.read(i)),this}fromRandom(t){if(t||(t=128),t%32!=0)throw new Error("bits must be multiple of 32");if(t<128)throw new Error("bits must be at least 128");const e=Yt(t/8);return this.entropy2Mnemonic(e),this.mnemonic2Seed(),this}static fromRandom(t){return(new this).fromRandom(t)}fromEntropy(t){return this.entropy2Mnemonic(t),this}static fromEntropy(t){return(new this).fromEntropy(t)}fromString(t){return this.mnemonic=t,this}static fromString(t){return(new this).fromString(t)}toString(){return this.mnemonic}toSeed(t){return this.mnemonic2Seed(t),this.seed}entropy2Mnemonic(t){if(t.length<16)throw new Error("Entropy is less than 128 bits. It must be 128 bits or more.");const e=wt(t);let r="";const i=8*t.length;for(let e=0;e<t.length;e++)r+=("00000000"+t[e].toString(2)).slice(-8);let s=e[0].toString(2);if(s=("00000000"+s).slice(-8).slice(0,i/32),r+=s,r.length%11!=0)throw new Error("internal error - entropy not an even multiple of 11 bits - "+r.length);let n="";for(let t=0;t<r.length/11;t++){""!==n&&(n+=this.Wordlist.space);const e=parseInt(r.slice(11*t,11*(t+1)),2);n+=this.Wordlist.value[e]}return this.mnemonic=n,this}check(){const t=this.mnemonic.split(this.Wordlist.space);let e="";for(let r=0;r<t.length;r++){const i=this.Wordlist.value.indexOf(t[r]);if(i<0)return!1;e+=("00000000000"+i.toString(2)).slice(-11)}if(e.length%11!=0)throw new Error("internal error - entropy not an even multiple of 11 bits - "+e.length);const r=e.length/33,i=e.slice(-r),s=e.slice(0,e.length-r),n=[];for(let t=0;t<s.length/8;t++)n.push(parseInt(e.slice(8*t,8*(t+1)),2));let a=wt(n.slice(0,s.length/8))[0].toString(2);return a=("00000000"+a).slice(-8).slice(0,r),a===i}mnemonic2Seed(t=""){let e=this.mnemonic;if(!this.check())throw new Error("Mnemonic does not pass the check - was the mnemonic typed incorrectly? Are there extra spaces?");if("string"!=typeof t)throw new Error("passphrase must be a string or undefined");e=e.normalize("NFKD"),t=t.normalize("NFKD");const r=xt(e,"utf8"),i=[...xt("mnemonic","utf8"),...xt(t,"utf8")];return this.seed=Et(r,i,2048,64,"sha512"),this}isValid(t=""){let e;try{e=!!this.mnemonic2Seed(t)}catch(t){e=!1}return e}static isValid(t,e=""){return new fr(t).isValid(e)}}function br(t){let e,r,i;this._tables[0][0][0]||this._precompute();const s=this._tables[0][4],n=this._tables[1],a=t.length;let o=1;if(4!==a&&6!==a&&8!==a)throw new Error("invalid aes key size");this._key=[r=t.slice(0),i=[]];for(var c=a;c<4*a+28;c++)e=r[c-1],(c%a==0||8===a&&c%a==4)&&(e=s[e>>>24]<<24^s[e>>16&255]<<16^s[e>>8&255]<<8^s[255&e],c%a==0&&(e=e<<8^e>>>24^o<<24,o=o<<1^283*(o>>7))),r[c]=r[c-a]^e;for(let t=0;c;t++,c--)e=r[3&t?c:c-4],i[t]=c<=4||t<4?e:n[0][s[e>>>24]]^n[1][s[e>>16&255]]^n[2][s[e>>8&255]]^n[3][s[255&e]]}br.prototype={encrypt:function(t){return this._crypt(t,0)},decrypt:function(t){return this._crypt(t,1)},_tables:[[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)]],_precompute:function(){const t=this._tables[0],e=this._tables[1],r=t[4],i=e[4];let s,n,a;const o=new Uint8Array(256),c=new Uint8Array(256);let h,d,u,l,f,b;for(s=0;s<256;s++)c[(o[s]=s<<1^283*(s>>7))^s]=s;for(n=a=0;!r[n];n^=h||1,a=c[a]||1)for(l=a^a<<1^a<<2^a<<3^a<<4,l=l>>8^255&l^99,r[n]=l,i[l]=n,u=o[d=o[h=o[n]]],b=16843009*u^65537*d^257*h^16843008*n,f=257*o[l]^16843008*l,s=0;s<4;s++)t[s][n]=f=f<<24^f>>>8,e[s][l]=b=b<<24^b>>>8},_crypt:function(t,e){if(4!==t.length)throw new Error("invalid aes block size");const r=this._key[e];let i,s,n,a=t[0]^r[0],o=t[e?3:1]^r[1],c=t[2]^r[2],h=t[e?1:3]^r[3];const d=r.length/4-2;let u,l=4;const f=new Uint32Array(4),b=this._tables[e],p=b[0],m=b[1],g=b[2],w=b[3],y=b[4];for(u=0;u<d;u++)i=p[a>>>24]^m[o>>16&255]^g[c>>8&255]^w[255&h]^r[l],s=p[o>>>24]^m[c>>16&255]^g[h>>8&255]^w[255&a]^r[l+1],n=p[c>>>24]^m[h>>16&255]^g[a>>8&255]^w[255&o]^r[l+2],h=p[h>>>24]^m[a>>16&255]^g[o>>8&255]^w[255&c]^r[l+3],l+=4,a=i,o=s,c=n;for(u=0;u<4;u++)f[e?3&-u:u]=y[a>>>24]<<24^y[o>>16&255]<<16^y[c>>8&255]<<8^y[255&h]^r[l++],i=a,a=o,o=c,c=h,h=i;return f}};class pr{static encrypt(t,e){const r=pr.buf2Words(e),i=pr.buf2Words(t),s=new br(r).encrypt(i);return pr.words2Buf(s)}static decrypt(t,e){const r=pr.buf2Words(t),i=new br(pr.buf2Words(e)).decrypt(r);return pr.words2Buf(i)}static buf2Words(t){if(t.length%4)throw new Error("buf length must be a multiple of 4");const e=[];for(let r=0;r<t.length/4;r++){const i=16777216*t[4*r]+(t[4*r+1]<<16|t[4*r+2]<<8|t[4*r+3]);e.push(i)}return e}static words2Buf(t){const e=new Array(4*t.length);for(let r=0;r<t.length;r++){const i=t[r];e[4*r]=i>>>24&255,e[4*r+1]=i>>>16&255,e[4*r+2]=i>>>8&255,e[4*r+3]=255&i}return e}}class mr{static buf2BlocksBuf(t,e){const r=e/8,i=[];for(let s=0;s<=t.length/r;s++){let n=t.slice(s*r,s*r+r);n.length<e&&(n=mr.pkcs7Pad(n,e)),i.push(n)}return i}static blockBufs2Buf(t){let e=t[t.length-1];return e=mr.pkcs7Unpad(e),t[t.length-1]=e,t.flat()}static encrypt(t,e,r,i){const s=8*e.length,n=mr.buf2BlocksBuf(t,s);return mr.encryptBlocks(n,e,r,i).flat()}static decrypt(t,e,r,i){const s=e.length,n=[];for(let e=0;e<t.length/s;e++)n.push(t.slice(e*s,e*s+s));const a=mr.decryptBlocks(n,e,r,i);return mr.blockBufs2Buf(a)}static encryptBlock(t,e,r,i){const s=mr.xorBufs(t,e);return r.encrypt(s,i)}static decryptBlock(t,e,r,i){const s=r.decrypt(t,i);return mr.xorBufs(s,e)}static encryptBlocks(t,e,r,i){const s=[];for(let n=0;n<t.length;n++){const a=t[n],o=mr.encryptBlock(a,e,r,i);s.push(o),e=o}return s}static decryptBlocks(t,e,r,i){const s=[];for(let n=0;n<t.length;n++){const a=t[n],o=mr.decryptBlock(a,e,r,i);s.push(o),e=a}return s}static pkcs7Pad(t,e){const r=e/8-t.length,i=new Array(r);return i.fill(r),[...t,...i]}static pkcs7Unpad(t){const e=t[t.length-1],r=t.slice(t.length-e,t.length),i=new Array(e);if(i.fill(e),_t(r)!==_t(i))throw new Error("invalid padding");return t.slice(0,t.length-e)}static xorBufs(t,e){if(t.length!==e.length)throw new Error("bufs must have the same length");const r=new Array(t.length);for(let i=0;i<t.length;i++)r[i]=t[i]^e[i];return r}}class gr{static encrypt(t,e,r,i=!0){r=r||new Array(16).fill(0)||Yt(16);const s=mr.encrypt(t,r,pr,e);return i?[...r,...s]:[...s]}static decrypt(t,e,r){if(r){const i=t;return mr.decrypt(i,r,pr,e)}{r=t.slice(0,16);const i=t.slice(16);return mr.decrypt(i,r,pr,e)}}}class wr{static ivkEkM(t,e){const r=t,i=e.mul(r),s=new Xt(i.x,i.y).encode(!0),n=yt(s);return{iv:n.slice(0,16),kE:n.slice(16,32),kM:n.slice(32,64)}}static electrumEncrypt(t,e,r,i=!1){let s;r||(r=te.fromRandom()),i||(s=r.toPublicKey().encode(!0));const{iv:n,kE:a,kM:o}=wr.ivkEkM(r,e),c=gr.encrypt(t,a,n,!1),h=xt("BIE1","utf8");let d;d=s?[...h,...s,...c]:[...h,...c];const u=Ot(o,d);return[...d,...u]}static electrumDecrypt(t,e,r){const i=t.slice(0,4);if("BIE1"!==Mt(i,"utf8"))throw new Error("Invalid Magic");let s=4,n=null;if(t.length-s-32>=33){const e=t[s];2===e||3===e?(n=t.slice(s,s+33),s+=33):4===e&&(n=t.slice(s,s+65),s+=65)}if(n)r||(r=Xt.fromString(_t(n)));else if(!r)throw new Error("Sender public key is required");const{iv:a,kE:o,kM:c}=wr.ivkEkM(e,r),h=t.slice(s,t.length-32),d=t.slice(t.length-32,t.length),u=Ot(c,t.slice(0,t.length-32));if(_t(d)!==_t(u))throw new Error("Invalid checksum");return gr.decrypt(h,o,a)}static bitcoreEncrypt(t,e,r,i){r||(r=te.fromRandom());const s=r,n=r.toPublicKey().encode(!0),a=e.mul(s).getX().toArray("be",32),o=yt(a),c=o.slice(0,32),h=o.slice(32,64),d=gr.encrypt(t,c,i),u=Ot(h,[...d]);return[...n,...d,...u]}static bitcoreDecrypt(t,e){const r=e,i=Xt.fromString(_t(t.slice(0,33))).mul(r);if(i.eq(new Dt(0,0)))throw new Error("P equals 0");const s=i.getX().toArray("be",32),n=yt(s),a=n.slice(0,32),o=n.slice(32,64),c=t.slice(33,t.length-32),h=t.slice(t.length-32,t.length),d=Ot(o,c);if(_t(h)!==_t(d))throw new Error("Invalid checksum");return[...gr.decrypt(c,a)]}}function yr(t,e){const r=new Ze(0,[],[],0);return r.outputs=Array(t.vout+1).fill(null),r.outputs[t.vout]={satoshis:t.satoshis,lockingScript:xe.fromHex(t.script)},{sourceTransaction:r,sourceTXID:t.txid,sourceOutputIndex:t.vout,unlockingScriptTemplate:e,sequence:4294967295}}class vr{static generate(t,e){const r=this.withDefaultOptions(e);return kr(t,this.getCounter(r.timestamp,r.period),r)}static validate(t,e,r){const i=this.withDefaultValidateOptions(r);if((e=e.trim()).length!=i.digits)return!1;const s=this.getCounter(i.timestamp,i.period),n=[s];for(let t=1;t<=i.skew;t++)n.push(s+t),n.push(s-t);for(const r of n)if(e===kr(t,r,i))return!0;return!1}static getCounter(t,e){const r=Math.floor(t/1e3);return Math.floor(r/e)}static withDefaultOptions(t){return{digits:2,algorithm:"SHA-1",period:30,timestamp:Date.now(),...t}}static withDefaultValidateOptions(t){return{skew:1,...this.withDefaultOptions(t)}}}function kr(t,e,r){const i=function(t,e,r){switch(r){case"SHA-1":return new bt(t).update(e);case"SHA-256":return new ft(t).update(e);case"SHA-512":return new pt(t).update(e);default:throw new Error("unsupported HMAC algorithm")}}(t,new c(e).toArray("be",8),r.algorithm),s=i.digest(),n=15&s[s.length-1],a=s.slice(n,n+4);return(2147483647&new c(a).toNumber()).toString().slice(-r.digits)}return e})()));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bsv=e():t.bsv=e()}(this,(()=>(()=>{"use strict";var t={d:(e,r)=>{for(var i in r)t.o(r,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:r[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{ARC:()=>qe,BSM:()=>o,Beef:()=>Ye,BeefParty:()=>tr,BeefTx:()=>$e,BigNumber:()=>c,Curve:()=>qt,ECDSA:()=>s,ECIES:()=>wr,EncryptedMessage:()=>a,FetchHttpClient:()=>Le,HD:()=>ur,Hash:()=>r,KeyShares:()=>Jt,LockingScript:()=>xe,MerklePath:()=>Ue,Mnemonic:()=>fr,NodejsHttpClient:()=>He,OP:()=>Ie,P2PKH:()=>Te,Point:()=>Dt,PointInFiniteField:()=>Zt,Polynomial:()=>Qt,PrivateKey:()=>te,PublicKey:()=>Xt,RPuzzle:()=>Be,Random:()=>Yt,SatoshisPerKilobyte:()=>Re,Schnorr:()=>Oe,Script:()=>_e,Signature:()=>Vt,SignedMessage:()=>n,Spend:()=>Ne,SymmetricKey:()=>ke,TOTP:()=>vr,Transaction:()=>Ze,TransactionSignature:()=>Pe,UnlockingScript:()=>Se,Utils:()=>i,WhatsOnChain:()=>Ke,WhatsOnChainBroadcaster:()=>er,defaultBroadcaster:()=>Ve,defaultChainTracker:()=>ze,defaultHttpClient:()=>De,fromUtxo:()=>yr,isBroadcastFailure:()=>Je,isBroadcastResponse:()=>Qe});var r={};t.r(r),t.d(r,{RIPEMD160:()=>Z,SHA1:()=>J,SHA1HMAC:()=>bt,SHA256:()=>Q,SHA256HMAC:()=>ft,SHA512:()=>tt,SHA512HMAC:()=>pt,hash160:()=>kt,hash256:()=>vt,pbkdf2:()=>Et,ripemd160:()=>mt,sha1:()=>gt,sha256:()=>wt,sha256hmac:()=>Pt,sha512:()=>yt,sha512hmac:()=>Ot,toArray:()=>w});var i={};t.r(i),t.d(i,{Reader:()=>Ht,Writer:()=>Ut,encode:()=>Mt,fromBase58:()=>Nt,fromBase58Check:()=>Rt,minimallyEncode:()=>Lt,toArray:()=>xt,toBase58:()=>Tt,toBase58Check:()=>Bt,toBase64:()=>At,toHex:()=>_t,toUTF8:()=>St,zero2:()=>It});var s={};t.r(s),t.d(s,{sign:()=>$t,verify:()=>jt});var n={};t.r(n),t.d(n,{sign:()=>ir,verify:()=>sr});var a={};t.r(a),t.d(a,{decrypt:()=>or,encrypt:()=>ar});var o={};t.r(o),t.d(o,{magicHash:()=>cr,sign:()=>hr,verify:()=>dr});class c{static zeros=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"];static groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];static groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];static wordSize=26;negative;words;length;red;static isBN(t){return t instanceof c||null!==t&&"object"==typeof t&&t.constructor.wordSize===c.wordSize&&Array.isArray(t.words)}static max(t,e){return t.cmp(e)>0?t:e}static min(t,e){return t.cmp(e)<0?t:e}constructor(t=0,e=10,r="be"){if(this.negative=0,this.words=[],this.length=0,this.red=null,null!==t){if("le"!==e&&"be"!==e||(r=e,e=10),"number"==typeof t)return this.initNumber(t,e,r);if("object"==typeof t)return this.initArray(t,r);"hex"===e&&(e=16),this.assert(e===(0|e)&&e>=2&&e<=36);let i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<t.length&&(16===e?this.parseHex(t,i,r):(this.parseBase(t,e,i),"le"===r&&this.initArray(this.toArray(),r)))}}assert(t,e="Assertion failed"){if(!t)throw new Error(e)}initNumber(t,e,r){return t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(this.assert(t<9007199254740992,"The number is larger than 2 ^ 53 (unsafe)"),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"!==r||this.initArray(this.toArray(),r),this}initArray(t,e){if(this.assert("number"==typeof t.length,"The number must have a length"),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);let r,i,s=0;for(;s<this.length;s++)this.words[s]=0;let n=0;if("be"===e)for(s=t.length-1,r=0;s>=0;s-=3)i=t[s]|t[s-1]<<8|t[s-2]<<16,this.words[r]|=i<<n&67108863,this.words[r+1]=i>>>26-n&67108863,n+=24,n>=26&&(n-=26,r++);else if("le"===e)for(s=0,r=0;s<t.length;s+=3)i=t[s]|t[s+1]<<8|t[s+2]<<16,this.words[r]|=i<<n&67108863,this.words[r+1]=i>>>26-n&67108863,n+=24,n>=26&&(n-=26,r++);return this.strip()}parseHex4Bits(t,e){const r=t.charCodeAt(e);if(r>=48&&r<=57)return r-48;if(r>=65&&r<=70)return r-55;if(r>=97&&r<=102)return r-87;throw new Error("Invalid character in "+t)}parseHexByte(t,e,r){let i=this.parseHex4Bits(t,r);return r-1>=e&&(i|=this.parseHex4Bits(t,r-1)<<4),i}parseHex(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);let i=0;for(;i<this.length;i++)this.words[i]=0;let s,n=0,a=0;if("be"===r)for(i=t.length-1;i>=e;i-=2)s=this.parseHexByte(t,e,i)<<n,this.words[a]|=67108863&s,n>=18?(n-=18,a+=1,this.words[a]|=s>>>26):n+=8;else for(i=(t.length-e)%2==0?e+1:e;i<t.length;i+=2)s=this.parseHexByte(t,e,i)<<n,this.words[a]|=67108863&s,n>=18?(n-=18,a+=1,this.words[a]|=s>>>26):n+=8;return this.strip()}parseBaseWord(t,e,r,i){let s=0,n=0;const a=Math.min(t.length,r);for(let r=e;r<a;r++){const e=t.charCodeAt(r)-48;s*=i,n=e>=49?e-49+10:e>=17?e-17+10:e,this.assert(e>=0&&n<i,"Invalid character"),s+=n}return s}parseBase(t,e,r){this.words=[0],this.length=1;let i=0,s=1;for(;s<=67108863;s*=e)i++;i--,s=s/e|0;const n=t.length-r,a=n%i,o=Math.min(n,n-a)+r;let c=0,h=r;for(;h<o;h+=i)c=this.parseBaseWord(t,h,h+i,e),this.imuln(s),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==a){let r=1;for(c=this.parseBaseWord(t,h,t.length,e),h=0;h<a;h++)r*=e;this.imuln(r),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}return this.strip()}copy(t){t.words=new Array(this.length);for(let e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red}static move(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}clone(){const t=new c;return this.copy(t),t}expand(t){for(;this.length<t;)this.words[this.length++]=0;return this}strip(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this.normSign()}normSign(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this}inspect(){return(null!==this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}toString(t=10,e=1){let r;if(16===t||"hex"===t){r="";let t=0,i=0;for(let e=0;e<this.length;e++){const s=this.words[e],n=(16777215&(s<<t|i)).toString(16);i=s>>>24-t&16777215,t+=2,t>=26&&(t-=26,e--),r=0!==i||e!==this.length-1?c.zeros[6-n.length]+n+r:n+r}if(0!==i&&(r=i.toString(16)+r),0===e&&"0"===r)return"";for(;r.length%e!=0&&0!==e;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){const i=c.groupSizes[t],s=c.groupBases[t];r="";let n=this.clone();for(n.negative=0;!n.isZero();){const e=n.modrn(s).toString(t);n=n.idivn(s),r=n.isZero()?e+r:c.zeros[i-e.length]+e+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}throw new Error("Base should be between 2 and 36")}toNumber(){let t=this.words[0];if(2===this.length)t+=67108864*this.words[1];else if(3===this.length&&1===this.words[2])t+=4503599627370496+67108864*this.words[1];else if(this.length>2)throw new Error("Number can only safely store up to 53 bits");return 0!==this.negative?-t:t}toJSON(){return this.toString(16)}toArrayLikeLE(t,e){let r=0,i=0;for(let e=0,s=0;e<this.length;e++){const n=this.words[e]<<s|i;t[r++]=255&n,r<t.length&&(t[r++]=n>>8&255),r<t.length&&(t[r++]=n>>16&255),6===s?(r<t.length&&(t[r++]=n>>24&255),i=0,s=0):(i=n>>>24,s+=2)}if(r<t.length)for(t[r++]=i;r<t.length;)t[r++]=0}toArrayLikeBE(t,e){let r=t.length-1,i=0;for(let e=0,s=0;e<this.length;e++){const n=this.words[e]<<s|i;t[r--]=255&n,r>=0&&(t[r--]=n>>8&255),r>=0&&(t[r--]=n>>16&255),6===s?(r>=0&&(t[r--]=n>>24&255),i=0,s=0):(i=n>>>24,s+=2)}if(r>=0)for(t[r--]=i;r>=0;)t[r--]=0}toArray(t="be",e){this.strip();const r=this.byteLength(),i=e??Math.max(1,r);this.assert(r<=i,"byte array longer than desired length"),this.assert(i>0,"Requested array length <= 0");const s=new Array(i);return"le"===t?this.toArrayLikeLE(s,r):this.toArrayLikeBE(s,r),s}countWordBits(t){if("function"==typeof Math.clz32)return 32-Math.clz32(t);let e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e}zeroWordBits(t){if(0===t)return 26;let e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r}bitLength(){const t=this.words[this.length-1],e=this.countWordBits(t);return 26*(this.length-1)+e}static toBitArray(t){const e=new Array(t.bitLength());for(let r=0;r<e.length;r++){const i=r/26|0,s=r%26;e[r]=t.words[i]>>>s&1}return e}toBitArray(){return c.toBitArray(this)}zeroBits(){if(this.isZero())return 0;let t=0;for(let e=0;e<this.length;e++){const r=this.zeroWordBits(this.words[e]);if(t+=r,26!==r)break}return t}byteLength(){return Math.ceil(this.bitLength()/8)}toTwos(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()}fromTwos(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()}isNeg(){return 0!==this.negative}neg(){return this.clone().ineg()}ineg(){return this.isZero()||(this.negative^=1),this}iuor(t){for(;this.length<t.length;)this.words[this.length++]=0;for(let e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()}ior(t){return this.assert(!(this.negative|t.negative)),this.iuor(t)}or(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)}uor(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)}iuand(t){const e=Math.min(this.length,t.length);for(let r=0;r<e;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e,this.strip()}iand(t){return this.assert(!(this.negative|t.negative)),this.iuand(t)}and(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)}uand(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)}iuxor(t){if(this.length>t.length)for(let e=0;e<t.length;e++)this.words[e]=this.words[e]^t.words[e];else{for(let e=0;e<this.length;e++)this.words[e]=this.words[e]^t.words[e];for(let e=this.length;e<t.length;e++)this.words[e]=t.words[e];this.length=t.length}return this.strip()}ixor(t){return this.assert(!(this.negative|t.negative),"Neither number can be negative"),this.iuxor(t)}xor(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)}uxor(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)}inotn(t){this.assert("number"==typeof t&&t>=0,"The width needs to be a number greater than zero");let e=0|Math.ceil(t/26);const r=t%26;this.expand(e),r>0&&e--;let i=0;for(;i<e;i++)this.words[i]=67108863&~this.words[i];return r>0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()}notn(t){return this.clone().inotn(t)}setn(t,e){this.assert("number"==typeof t&&t>=0);const r=t/26|0,i=t%26;return this.expand(r+1),this.words[r]=1===e||!0===e?this.words[r]|1<<i:this.words[r]&~(1<<i),this.strip()}iadd(t){let e,r,i;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this.normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e.normSign();this.length>t.length?(r=this,i=t):(r=t,i=this);let s=0,n=0;for(;n<i.length;n++)e=(0|r.words[n])+(0|i.words[n])+s,this.words[n]=67108863&e,s=e>>>26;for(;0!==s&&n<r.length;n++)e=(0|r.words[n])+s,this.words[n]=67108863&e,s=e>>>26;if(this.length=r.length,0!==s)this.words[this.length]=s,this.length++;else if(r!==this)for(;n<r.length;n++)this.words[n]=r.words[n];return this}add(t){let e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)}isub(t){let e;if(0!==t.negative)return t.negative=0,e=this.iadd(t),t.negative=1,e.normSign();if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this.normSign();const r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;let i,s;r>0?(i=this,s=t):(i=t,s=this);let n=0,a=0;for(;a<s.length;a++)e=(0|i.words[a])-(0|s.words[a])+n,n=e>>26,this.words[a]=67108863&e;for(;0!==n&&a<i.length;a++)e=(0|i.words[a])+n,n=e>>26,this.words[a]=67108863&e;if(0===n&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this.strip()}sub(t){return this.clone().isub(t)}smallMulTo(t,e,r){r.negative=e.negative^t.negative;let i=t.length+e.length|0;r.length=i,i=i-1|0;let s=0|t.words[0],n=0|e.words[0],a=s*n;const o=67108863&a;let c=a/67108864|0;r.words[0]=o;let h=1;for(;h<i;h++){let i=c>>>26,o=67108863&c;const d=Math.min(h,e.length-1);for(let r=Math.max(0,h-t.length+1);r<=d;r++){const c=h-r|0;s=0|t.words[c],n=0|e.words[r],a=s*n+o,i+=a/67108864|0,o=67108863&a}r.words[h]=0|o,c=0|i}return 0!==c?r.words[h]=0|c:r.length--,r.strip()}comb10MulTo(t,e,r){const i=t.words,s=e.words,n=r.words;let a,o,c,h=0;const d=0|i[0],u=8191&d,l=d>>>13,f=0|i[1],b=8191&f,p=f>>>13,m=0|i[2],g=8191&m,w=m>>>13,y=0|i[3],v=8191&y,k=y>>>13,P=0|i[4],O=8191&P,E=P>>>13,I=0|i[5],_=8191&I,x=I>>>13,S=0|i[6],M=8191&S,A=S>>>13,F=0|i[7],N=8191&F,T=F>>>13,B=0|i[8],R=8191&B,U=B>>>13,H=0|i[9],L=8191&H,D=H>>>13,C=0|s[0],q=8191&C,V=C>>>13,K=0|s[1],z=8191&K,$=K>>>13,j=0|s[2],X=8191&j,G=j>>>13,W=0|s[3],Y=8191&W,Z=W>>>13,Q=0|s[4],J=8191&Q,tt=Q>>>13,et=0|s[5],rt=8191&et,it=et>>>13,st=0|s[6],nt=8191&st,at=st>>>13,ot=0|s[7],ct=8191&ot,ht=ot>>>13,dt=0|s[8],ut=8191&dt,lt=dt>>>13,ft=0|s[9],bt=8191&ft,pt=ft>>>13;r.negative=t.negative^e.negative,r.length=19,a=Math.imul(u,q),o=Math.imul(u,V),o=o+Math.imul(l,q)|0,c=Math.imul(l,V);let mt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(mt>>>26)|0,mt&=67108863,a=Math.imul(b,q),o=Math.imul(b,V),o=o+Math.imul(p,q)|0,c=Math.imul(p,V),a=a+Math.imul(u,z)|0,o=o+Math.imul(u,$)|0,o=o+Math.imul(l,z)|0,c=c+Math.imul(l,$)|0;let gt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(gt>>>26)|0,gt&=67108863,a=Math.imul(g,q),o=Math.imul(g,V),o=o+Math.imul(w,q)|0,c=Math.imul(w,V),a=a+Math.imul(b,z)|0,o=o+Math.imul(b,$)|0,o=o+Math.imul(p,z)|0,c=c+Math.imul(p,$)|0,a=a+Math.imul(u,X)|0,o=o+Math.imul(u,G)|0,o=o+Math.imul(l,X)|0,c=c+Math.imul(l,G)|0;let wt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(wt>>>26)|0,wt&=67108863,a=Math.imul(v,q),o=Math.imul(v,V),o=o+Math.imul(k,q)|0,c=Math.imul(k,V),a=a+Math.imul(g,z)|0,o=o+Math.imul(g,$)|0,o=o+Math.imul(w,z)|0,c=c+Math.imul(w,$)|0,a=a+Math.imul(b,X)|0,o=o+Math.imul(b,G)|0,o=o+Math.imul(p,X)|0,c=c+Math.imul(p,G)|0,a=a+Math.imul(u,Y)|0,o=o+Math.imul(u,Z)|0,o=o+Math.imul(l,Y)|0,c=c+Math.imul(l,Z)|0;let yt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(yt>>>26)|0,yt&=67108863,a=Math.imul(O,q),o=Math.imul(O,V),o=o+Math.imul(E,q)|0,c=Math.imul(E,V),a=a+Math.imul(v,z)|0,o=o+Math.imul(v,$)|0,o=o+Math.imul(k,z)|0,c=c+Math.imul(k,$)|0,a=a+Math.imul(g,X)|0,o=o+Math.imul(g,G)|0,o=o+Math.imul(w,X)|0,c=c+Math.imul(w,G)|0,a=a+Math.imul(b,Y)|0,o=o+Math.imul(b,Z)|0,o=o+Math.imul(p,Y)|0,c=c+Math.imul(p,Z)|0,a=a+Math.imul(u,J)|0,o=o+Math.imul(u,tt)|0,o=o+Math.imul(l,J)|0,c=c+Math.imul(l,tt)|0;let vt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(vt>>>26)|0,vt&=67108863,a=Math.imul(_,q),o=Math.imul(_,V),o=o+Math.imul(x,q)|0,c=Math.imul(x,V),a=a+Math.imul(O,z)|0,o=o+Math.imul(O,$)|0,o=o+Math.imul(E,z)|0,c=c+Math.imul(E,$)|0,a=a+Math.imul(v,X)|0,o=o+Math.imul(v,G)|0,o=o+Math.imul(k,X)|0,c=c+Math.imul(k,G)|0,a=a+Math.imul(g,Y)|0,o=o+Math.imul(g,Z)|0,o=o+Math.imul(w,Y)|0,c=c+Math.imul(w,Z)|0,a=a+Math.imul(b,J)|0,o=o+Math.imul(b,tt)|0,o=o+Math.imul(p,J)|0,c=c+Math.imul(p,tt)|0,a=a+Math.imul(u,rt)|0,o=o+Math.imul(u,it)|0,o=o+Math.imul(l,rt)|0,c=c+Math.imul(l,it)|0;let kt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(kt>>>26)|0,kt&=67108863,a=Math.imul(M,q),o=Math.imul(M,V),o=o+Math.imul(A,q)|0,c=Math.imul(A,V),a=a+Math.imul(_,z)|0,o=o+Math.imul(_,$)|0,o=o+Math.imul(x,z)|0,c=c+Math.imul(x,$)|0,a=a+Math.imul(O,X)|0,o=o+Math.imul(O,G)|0,o=o+Math.imul(E,X)|0,c=c+Math.imul(E,G)|0,a=a+Math.imul(v,Y)|0,o=o+Math.imul(v,Z)|0,o=o+Math.imul(k,Y)|0,c=c+Math.imul(k,Z)|0,a=a+Math.imul(g,J)|0,o=o+Math.imul(g,tt)|0,o=o+Math.imul(w,J)|0,c=c+Math.imul(w,tt)|0,a=a+Math.imul(b,rt)|0,o=o+Math.imul(b,it)|0,o=o+Math.imul(p,rt)|0,c=c+Math.imul(p,it)|0,a=a+Math.imul(u,nt)|0,o=o+Math.imul(u,at)|0,o=o+Math.imul(l,nt)|0,c=c+Math.imul(l,at)|0;let Pt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,a=Math.imul(N,q),o=Math.imul(N,V),o=o+Math.imul(T,q)|0,c=Math.imul(T,V),a=a+Math.imul(M,z)|0,o=o+Math.imul(M,$)|0,o=o+Math.imul(A,z)|0,c=c+Math.imul(A,$)|0,a=a+Math.imul(_,X)|0,o=o+Math.imul(_,G)|0,o=o+Math.imul(x,X)|0,c=c+Math.imul(x,G)|0,a=a+Math.imul(O,Y)|0,o=o+Math.imul(O,Z)|0,o=o+Math.imul(E,Y)|0,c=c+Math.imul(E,Z)|0,a=a+Math.imul(v,J)|0,o=o+Math.imul(v,tt)|0,o=o+Math.imul(k,J)|0,c=c+Math.imul(k,tt)|0,a=a+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0,o=o+Math.imul(w,rt)|0,c=c+Math.imul(w,it)|0,a=a+Math.imul(b,nt)|0,o=o+Math.imul(b,at)|0,o=o+Math.imul(p,nt)|0,c=c+Math.imul(p,at)|0,a=a+Math.imul(u,ct)|0,o=o+Math.imul(u,ht)|0,o=o+Math.imul(l,ct)|0,c=c+Math.imul(l,ht)|0;let Ot=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,a=Math.imul(R,q),o=Math.imul(R,V),o=o+Math.imul(U,q)|0,c=Math.imul(U,V),a=a+Math.imul(N,z)|0,o=o+Math.imul(N,$)|0,o=o+Math.imul(T,z)|0,c=c+Math.imul(T,$)|0,a=a+Math.imul(M,X)|0,o=o+Math.imul(M,G)|0,o=o+Math.imul(A,X)|0,c=c+Math.imul(A,G)|0,a=a+Math.imul(_,Y)|0,o=o+Math.imul(_,Z)|0,o=o+Math.imul(x,Y)|0,c=c+Math.imul(x,Z)|0,a=a+Math.imul(O,J)|0,o=o+Math.imul(O,tt)|0,o=o+Math.imul(E,J)|0,c=c+Math.imul(E,tt)|0,a=a+Math.imul(v,rt)|0,o=o+Math.imul(v,it)|0,o=o+Math.imul(k,rt)|0,c=c+Math.imul(k,it)|0,a=a+Math.imul(g,nt)|0,o=o+Math.imul(g,at)|0,o=o+Math.imul(w,nt)|0,c=c+Math.imul(w,at)|0,a=a+Math.imul(b,ct)|0,o=o+Math.imul(b,ht)|0,o=o+Math.imul(p,ct)|0,c=c+Math.imul(p,ht)|0,a=a+Math.imul(u,ut)|0,o=o+Math.imul(u,lt)|0,o=o+Math.imul(l,ut)|0,c=c+Math.imul(l,lt)|0;let Et=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Et>>>26)|0,Et&=67108863,a=Math.imul(L,q),o=Math.imul(L,V),o=o+Math.imul(D,q)|0,c=Math.imul(D,V),a=a+Math.imul(R,z)|0,o=o+Math.imul(R,$)|0,o=o+Math.imul(U,z)|0,c=c+Math.imul(U,$)|0,a=a+Math.imul(N,X)|0,o=o+Math.imul(N,G)|0,o=o+Math.imul(T,X)|0,c=c+Math.imul(T,G)|0,a=a+Math.imul(M,Y)|0,o=o+Math.imul(M,Z)|0,o=o+Math.imul(A,Y)|0,c=c+Math.imul(A,Z)|0,a=a+Math.imul(_,J)|0,o=o+Math.imul(_,tt)|0,o=o+Math.imul(x,J)|0,c=c+Math.imul(x,tt)|0,a=a+Math.imul(O,rt)|0,o=o+Math.imul(O,it)|0,o=o+Math.imul(E,rt)|0,c=c+Math.imul(E,it)|0,a=a+Math.imul(v,nt)|0,o=o+Math.imul(v,at)|0,o=o+Math.imul(k,nt)|0,c=c+Math.imul(k,at)|0,a=a+Math.imul(g,ct)|0,o=o+Math.imul(g,ht)|0,o=o+Math.imul(w,ct)|0,c=c+Math.imul(w,ht)|0,a=a+Math.imul(b,ut)|0,o=o+Math.imul(b,lt)|0,o=o+Math.imul(p,ut)|0,c=c+Math.imul(p,lt)|0,a=a+Math.imul(u,bt)|0,o=o+Math.imul(u,pt)|0,o=o+Math.imul(l,bt)|0,c=c+Math.imul(l,pt)|0;let It=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(It>>>26)|0,It&=67108863,a=Math.imul(L,z),o=Math.imul(L,$),o=o+Math.imul(D,z)|0,c=Math.imul(D,$),a=a+Math.imul(R,X)|0,o=o+Math.imul(R,G)|0,o=o+Math.imul(U,X)|0,c=c+Math.imul(U,G)|0,a=a+Math.imul(N,Y)|0,o=o+Math.imul(N,Z)|0,o=o+Math.imul(T,Y)|0,c=c+Math.imul(T,Z)|0,a=a+Math.imul(M,J)|0,o=o+Math.imul(M,tt)|0,o=o+Math.imul(A,J)|0,c=c+Math.imul(A,tt)|0,a=a+Math.imul(_,rt)|0,o=o+Math.imul(_,it)|0,o=o+Math.imul(x,rt)|0,c=c+Math.imul(x,it)|0,a=a+Math.imul(O,nt)|0,o=o+Math.imul(O,at)|0,o=o+Math.imul(E,nt)|0,c=c+Math.imul(E,at)|0,a=a+Math.imul(v,ct)|0,o=o+Math.imul(v,ht)|0,o=o+Math.imul(k,ct)|0,c=c+Math.imul(k,ht)|0,a=a+Math.imul(g,ut)|0,o=o+Math.imul(g,lt)|0,o=o+Math.imul(w,ut)|0,c=c+Math.imul(w,lt)|0,a=a+Math.imul(b,bt)|0,o=o+Math.imul(b,pt)|0,o=o+Math.imul(p,bt)|0,c=c+Math.imul(p,pt)|0;let _t=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(_t>>>26)|0,_t&=67108863,a=Math.imul(L,X),o=Math.imul(L,G),o=o+Math.imul(D,X)|0,c=Math.imul(D,G),a=a+Math.imul(R,Y)|0,o=o+Math.imul(R,Z)|0,o=o+Math.imul(U,Y)|0,c=c+Math.imul(U,Z)|0,a=a+Math.imul(N,J)|0,o=o+Math.imul(N,tt)|0,o=o+Math.imul(T,J)|0,c=c+Math.imul(T,tt)|0,a=a+Math.imul(M,rt)|0,o=o+Math.imul(M,it)|0,o=o+Math.imul(A,rt)|0,c=c+Math.imul(A,it)|0,a=a+Math.imul(_,nt)|0,o=o+Math.imul(_,at)|0,o=o+Math.imul(x,nt)|0,c=c+Math.imul(x,at)|0,a=a+Math.imul(O,ct)|0,o=o+Math.imul(O,ht)|0,o=o+Math.imul(E,ct)|0,c=c+Math.imul(E,ht)|0,a=a+Math.imul(v,ut)|0,o=o+Math.imul(v,lt)|0,o=o+Math.imul(k,ut)|0,c=c+Math.imul(k,lt)|0,a=a+Math.imul(g,bt)|0,o=o+Math.imul(g,pt)|0,o=o+Math.imul(w,bt)|0,c=c+Math.imul(w,pt)|0;let xt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(xt>>>26)|0,xt&=67108863,a=Math.imul(L,Y),o=Math.imul(L,Z),o=o+Math.imul(D,Y)|0,c=Math.imul(D,Z),a=a+Math.imul(R,J)|0,o=o+Math.imul(R,tt)|0,o=o+Math.imul(U,J)|0,c=c+Math.imul(U,tt)|0,a=a+Math.imul(N,rt)|0,o=o+Math.imul(N,it)|0,o=o+Math.imul(T,rt)|0,c=c+Math.imul(T,it)|0,a=a+Math.imul(M,nt)|0,o=o+Math.imul(M,at)|0,o=o+Math.imul(A,nt)|0,c=c+Math.imul(A,at)|0,a=a+Math.imul(_,ct)|0,o=o+Math.imul(_,ht)|0,o=o+Math.imul(x,ct)|0,c=c+Math.imul(x,ht)|0,a=a+Math.imul(O,ut)|0,o=o+Math.imul(O,lt)|0,o=o+Math.imul(E,ut)|0,c=c+Math.imul(E,lt)|0,a=a+Math.imul(v,bt)|0,o=o+Math.imul(v,pt)|0,o=o+Math.imul(k,bt)|0,c=c+Math.imul(k,pt)|0;let St=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(St>>>26)|0,St&=67108863,a=Math.imul(L,J),o=Math.imul(L,tt),o=o+Math.imul(D,J)|0,c=Math.imul(D,tt),a=a+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,o=o+Math.imul(U,rt)|0,c=c+Math.imul(U,it)|0,a=a+Math.imul(N,nt)|0,o=o+Math.imul(N,at)|0,o=o+Math.imul(T,nt)|0,c=c+Math.imul(T,at)|0,a=a+Math.imul(M,ct)|0,o=o+Math.imul(M,ht)|0,o=o+Math.imul(A,ct)|0,c=c+Math.imul(A,ht)|0,a=a+Math.imul(_,ut)|0,o=o+Math.imul(_,lt)|0,o=o+Math.imul(x,ut)|0,c=c+Math.imul(x,lt)|0,a=a+Math.imul(O,bt)|0,o=o+Math.imul(O,pt)|0,o=o+Math.imul(E,bt)|0,c=c+Math.imul(E,pt)|0;let Mt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,a=Math.imul(L,rt),o=Math.imul(L,it),o=o+Math.imul(D,rt)|0,c=Math.imul(D,it),a=a+Math.imul(R,nt)|0,o=o+Math.imul(R,at)|0,o=o+Math.imul(U,nt)|0,c=c+Math.imul(U,at)|0,a=a+Math.imul(N,ct)|0,o=o+Math.imul(N,ht)|0,o=o+Math.imul(T,ct)|0,c=c+Math.imul(T,ht)|0,a=a+Math.imul(M,ut)|0,o=o+Math.imul(M,lt)|0,o=o+Math.imul(A,ut)|0,c=c+Math.imul(A,lt)|0,a=a+Math.imul(_,bt)|0,o=o+Math.imul(_,pt)|0,o=o+Math.imul(x,bt)|0,c=c+Math.imul(x,pt)|0;let At=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(At>>>26)|0,At&=67108863,a=Math.imul(L,nt),o=Math.imul(L,at),o=o+Math.imul(D,nt)|0,c=Math.imul(D,at),a=a+Math.imul(R,ct)|0,o=o+Math.imul(R,ht)|0,o=o+Math.imul(U,ct)|0,c=c+Math.imul(U,ht)|0,a=a+Math.imul(N,ut)|0,o=o+Math.imul(N,lt)|0,o=o+Math.imul(T,ut)|0,c=c+Math.imul(T,lt)|0,a=a+Math.imul(M,bt)|0,o=o+Math.imul(M,pt)|0,o=o+Math.imul(A,bt)|0,c=c+Math.imul(A,pt)|0;let Ft=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,a=Math.imul(L,ct),o=Math.imul(L,ht),o=o+Math.imul(D,ct)|0,c=Math.imul(D,ht),a=a+Math.imul(R,ut)|0,o=o+Math.imul(R,lt)|0,o=o+Math.imul(U,ut)|0,c=c+Math.imul(U,lt)|0,a=a+Math.imul(N,bt)|0,o=o+Math.imul(N,pt)|0,o=o+Math.imul(T,bt)|0,c=c+Math.imul(T,pt)|0;let Nt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,a=Math.imul(L,ut),o=Math.imul(L,lt),o=o+Math.imul(D,ut)|0,c=Math.imul(D,lt),a=a+Math.imul(R,bt)|0,o=o+Math.imul(R,pt)|0,o=o+Math.imul(U,bt)|0,c=c+Math.imul(U,pt)|0;let Tt=(h+a|0)+((8191&o)<<13)|0;h=(c+(o>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,a=Math.imul(L,bt),o=Math.imul(L,pt),o=o+Math.imul(D,bt)|0,c=Math.imul(D,pt);let Bt=(h+a|0)+((8191&o)<<13)|0;return h=(c+(o>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n[0]=mt,n[1]=gt,n[2]=wt,n[3]=yt,n[4]=vt,n[5]=kt,n[6]=Pt,n[7]=Ot,n[8]=Et,n[9]=It,n[10]=_t,n[11]=xt,n[12]=St,n[13]=Mt,n[14]=At,n[15]=Ft,n[16]=Nt,n[17]=Tt,n[18]=Bt,0!==h&&(n[19]=h,r.length++),r}bigMulTo(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;let i=0,s=0,n=0;for(;n<r.length-1;n++){let a=s;s=0;let o=67108863&i;const c=Math.min(n,e.length-1);for(let r=Math.max(0,n-t.length+1);r<=c;r++){const i=n-r,c=(0|t.words[i])*(0|e.words[r]);let h=67108863&c;a=a+(c/67108864|0)|0,h=h+o|0,o=67108863&h,a=a+(h>>>26)|0,s+=a>>>26,a&=67108863}r.words[n]=o,i=a,a=s}return 0!==i?r.words[n]=i:r.length--,r.strip()}mulTo(t,e){let r;const i=this.length+t.length;return r=10===this.length&&10===t.length?this.comb10MulTo(this,t,e):i<63?this.smallMulTo(this,t,e):this.bigMulTo(this,t,e),r}mul(t){const e=new c;return e.words=new Array(this.length+t.length),this.mulTo(t,e)}imul(t){return this.clone().mulTo(t,this)}imuln(t){const e=t<0;e&&(t=-t),this.assert("number"==typeof t),this.assert(t<67108864);let r=0,i=0;for(;i<this.length;i++){const e=(0|this.words[i])*t,s=(67108863&e)+(67108863&r);r>>=26,r+=e/67108864|0,r+=s>>>26,this.words[i]=67108863&s}return 0!==r&&(this.words[i]=r,this.length++),e?this.ineg():this}muln(t){return this.clone().imuln(t)}sqr(){return this.mul(this)}isqr(){return this.imul(this.clone())}pow(t){const e=c.toBitArray(t);if(0===e.length)return new c(1);let r=this,i=0;for(;i<e.length&&0===e[i];i++,r=r.sqr());if(++i<e.length)for(let t=r.sqr();i<e.length;i++,t=t.sqr())0!==e[i]&&(r=r.mul(t));return r}iushln(t){this.assert("number"==typeof t&&t>=0);const e=t%26,r=(t-e)/26,i=67108863>>>26-e<<26-e;let s;if(0!==e){let t=0;for(s=0;s<this.length;s++){const r=this.words[s]&i,n=(0|this.words[s])-r<<e;this.words[s]=n|t,t=r>>>26-e}0!==t&&(this.words[s]=t,this.length++)}if(0!==r){for(s=this.length-1;s>=0;s--)this.words[s+r]=this.words[s];for(s=0;s<r;s++)this.words[s]=0;this.length+=r}return this.strip()}ishln(t){return this.assert(0===this.negative),this.iushln(t)}iushrn(t,e,r){let i;this.assert("number"==typeof t&&t>=0),i="number"==typeof e&&0!==e?(e-e%26)/26:0;const s=t%26,n=Math.min((t-s)/26,this.length),a=67108863^67108863>>>s<<s,o=r;i-=n,i=Math.max(0,i);let c=0;if(void 0!==o){for(;c<n;c++)o.words[c]=this.words[c];o.length=n}if(0===n);else if(this.length>n)for(this.length-=n,c=0;c<this.length;c++)this.words[c]=this.words[c+n];else this.words[0]=0,this.length=1;let h=0;for(c=this.length-1;c>=0&&(0!==h||c>=i);c--){const t=0|this.words[c];this.words[c]=h<<26-s|t>>>s,h=t&a}return null!=o&&0!==h&&(o.words[o.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()}ishrn(t,e,r){return this.assert(0===this.negative),this.iushrn(t,e,r)}shln(t){return this.clone().ishln(t)}ushln(t){return this.clone().iushln(t)}shrn(t){return this.clone().ishrn(t)}ushrn(t){return this.clone().iushrn(t)}testn(t){this.assert("number"==typeof t&&t>=0);const e=t%26,r=(t-e)/26,i=1<<e;if(this.length<=r)return!1;const s=this.words[r];return Boolean(s&i)}imaskn(t){this.assert("number"==typeof t&&t>=0);const e=t%26;let r=(t-e)/26;if(this.assert(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){const t=67108863^67108863>>>e<<e;this.words[this.length-1]&=t}return this.strip()}maskn(t){return this.clone().imaskn(t)}iaddn(t){return this.assert("number"==typeof t),this.assert(t<67108864,"num is too large"),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)}_iaddn(t){this.words[0]+=t;let e=0;for(;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this}isubn(t){if(this.assert("number"==typeof t),this.assert(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(let t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this.strip()}addn(t){return this.clone().iaddn(t)}subn(t){return this.clone().isubn(t)}iabs(){return this.negative=0,this}abs(){return this.clone().iabs()}_ishlnsubmul(t,e,r){const i=t.length+r;let s,n;this.expand(i);let a=0;for(s=0;s<t.length;s++){n=(0|this.words[s+r])+a;const i=(0|t.words[s])*e;n-=67108863&i,a=(n>>26)-(i/67108864|0),this.words[s+r]=67108863&n}for(;s<this.length-r;s++)n=(0|this.words[s+r])+a,a=n>>26,this.words[s+r]=67108863&n;if(0===a)return this.strip();for(this.assert(-1===a,"carry must be -1"),a=0,s=0;s<this.length;s++)n=-(0|this.words[s])+a,a=n>>26,this.words[s]=67108863&n;return this.negative=1,this.strip()}wordDiv(t,e){let r=this.length-t.length,i=this.clone(),s=t,n=0|s.words[s.length-1];r=26-this.countWordBits(n),0!==r&&(s=s.ushln(r),i.iushln(r),n=0|s.words[s.length-1]);const a=i.length-s.length;let o;if("mod"!==e){o=new c,o.length=a+1,o.words=new Array(o.length);for(let t=0;t<o.length;t++)o.words[t]=0}const h=i.clone()._ishlnsubmul(s,1,a);0===h.negative&&(i=h,void 0!==o&&(o.words[a]=1));for(let t=a-1;t>=0;t--){let e=67108864*(0|i.words[s.length+t])+(0|i.words[s.length+t-1]);for(e=Math.min(e/n|0,67108863),i._ishlnsubmul(s,e,t);0!==i.negative;)e--,i.negative=0,i._ishlnsubmul(s,1,t),i.isZero()||(i.negative^=1);void 0!==o&&(o.words[t]=e)}return void 0!==o&&o.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:o??null,mod:i}}divmod(t,e,r){if(this.assert(!t.isZero()),this.isZero())return{div:new c(0),mod:new c(0)};let i,s,n;return 0!==this.negative&&0===t.negative?(n=this.neg().divmod(t,e),"mod"!==e&&(i=n.div.neg()),"div"!==e&&(s=n.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:i,mod:s}):0===this.negative&&0!==t.negative?(n=this.divmod(t.neg(),e),"mod"!==e&&(i=n.div.neg()),{div:i,mod:n.mod}):this.negative&t.negative?(n=this.neg().divmod(t.neg(),e),"div"!==e&&(s=n.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:n.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new c(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new c(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new c(this.modrn(t.words[0]))}:this.wordDiv(t,e)}div(t){return this.divmod(t,"div",!1).div}mod(t){return this.divmod(t,"mod",!1).mod}umod(t){return this.divmod(t,"mod",!0).mod}divRound(t){const e=this.divmod(t);if(e.mod.isZero())return e.div;const r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),s=t.andln(1),n=r.cmp(i);return n<0||1===s&&0===n?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)}modrn(t){const e=t<0;e&&(t=-t),this.assert(t<=67108863);const r=(1<<26)%t;let i=0;for(let e=this.length-1;e>=0;e--)i=(r*i+(0|this.words[e]))%t;return e?-i:i}idivn(t){const e=t<0;e&&(t=-t),this.assert(t<=67108863);let r=0;for(let e=this.length-1;e>=0;e--){const i=(0|this.words[e])+67108864*r;this.words[e]=i/t|0,r=i%t}return this.strip(),e?this.ineg():this}divn(t){return this.clone().idivn(t)}egcd(t){this.assert(0===t.negative,"p must not be negative"),this.assert(!t.isZero(),"p must not be zero");let e=this;const r=t.clone();e=0!==e.negative?e.umod(t):e.clone();const i=new c(1),s=new c(0),n=new c(0),a=new c(1);let o=0;for(;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++o;const h=r.clone(),d=e.clone();for(;!e.isZero();){let t=0,o=1;for(;!(e.words[0]&o)&&t<26;++t,o<<=1);if(t>0)for(e.iushrn(t);t-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(h),s.isub(d)),i.iushrn(1),s.iushrn(1);let c=0,u=1;for(;!(r.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(r.iushrn(c);c-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(h),a.isub(d)),n.iushrn(1),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(n),s.isub(a)):(r.isub(e),n.isub(i),a.isub(s))}return{a:n,b:a,gcd:r.iushln(o)}}_invmp(t){this.assert(0===t.negative,"p must not be negative"),this.assert(!t.isZero(),"p must not be zero");let e=this;const r=t.clone();e=0!==e.negative?e.umod(t):e.clone();const i=new c(1),s=new c(0),n=r.clone();for(;e.cmpn(1)>0&&r.cmpn(1)>0;){let t=0,a=1;for(;!(e.words[0]&a)&&t<26;++t,a<<=1);if(t>0)for(e.iushrn(t);t-- >0;)i.isOdd()&&i.iadd(n),i.iushrn(1);let o=0,c=1;for(;!(r.words[0]&c)&&o<26;++o,c<<=1);if(o>0)for(r.iushrn(o);o-- >0;)s.isOdd()&&s.iadd(n),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(s)):(r.isub(e),s.isub(i))}let a;return a=0===e.cmpn(1)?i:s,a.cmpn(0)<0&&a.iadd(t),a}gcd(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();let e=this.clone(),r=t.clone();e.negative=0,r.negative=0;let i=0;for(;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);const t=e.cmp(r);if(t<0){const t=e;e=r,r=t}else if(0===t||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)}invm(t){return this.egcd(t).a.umod(t)}isEven(){return!(1&this.words[0])}isOdd(){return!(1&~this.words[0])}andln(t){return this.words[0]&t}bincn(t){this.assert("number"==typeof t);const e=t%26,r=(t-e)/26,i=1<<e;if(this.length<=r)return this.expand(r+1),this.words[r]|=i,this;let s=i,n=r;for(;0!==s&&n<this.length;n++){let t=0|this.words[n];t+=s,s=t>>>26,t&=67108863,this.words[n]=t}return 0!==s&&(this.words[n]=s,this.length++),this}isZero(){return 1===this.length&&0===this.words[0]}cmpn(t){const e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;let r;if(this.strip(),this.length>1)r=1;else{e&&(t=-t),this.assert(t<=67108863,"Number is too big");const i=0|this.words[0];r=i===t?0:i<t?-1:1}return 0!==this.negative?0|-r:r}cmp(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;const e=this.ucmp(t);return 0!==this.negative?0|-e:e}ucmp(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;let e=0;for(let r=this.length-1;r>=0;r--){const i=0|this.words[r],s=0|t.words[r];if(i!==s){i<s?e=-1:i>s&&(e=1);break}}return e}gtn(t){return 1===this.cmpn(t)}gt(t){return 1===this.cmp(t)}gten(t){return this.cmpn(t)>=0}gte(t){return this.cmp(t)>=0}ltn(t){return-1===this.cmpn(t)}lt(t){return-1===this.cmp(t)}lten(t){return this.cmpn(t)<=0}lte(t){return this.cmp(t)<=0}eqn(t){return 0===this.cmpn(t)}eq(t){return 0===this.cmp(t)}toRed(t){return this.assert(null==this.red,"Already a number in reduction context"),this.assert(0===this.negative,"red works only with positives"),t.convertTo(this).forceRed(t)}fromRed(){return this.assert(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)}forceRed(t){return this.red=t,this}redAdd(t){return this.assert(this.red,"redAdd works only with red numbers"),this.red.add(this,t)}redIAdd(t){return this.assert(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)}redSub(t){return this.assert(this.red,"redSub works only with red numbers"),this.red.sub(this,t)}redISub(t){return this.assert(this.red,"redISub works only with red numbers"),this.red.isub(this,t)}redShl(t){return this.assert(this.red,"redShl works only with red numbers"),this.red.shl(this,t)}redMul(t){return this.assert(this.red,"redMul works only with red numbers"),this.red.verify2(this,t),this.red.mul(this,t)}redIMul(t){return this.assert(this.red,"redMul works only with red numbers"),this.red.verify2(this,t),this.red.imul(this,t)}redSqr(){return this.assert(this.red,"redSqr works only with red numbers"),this.red.verify1(this),this.red.sqr(this)}redISqr(){return this.assert(this.red,"redISqr works only with red numbers"),this.red.verify1(this),this.red.isqr(this)}redSqrt(){return this.assert(this.red,"redSqrt works only with red numbers"),this.red.verify1(this),this.red.sqrt(this)}redInvm(){return this.assert(this.red,"redInvm works only with red numbers"),this.red.verify1(this),this.red.invm(this)}redNeg(){return this.assert(this.red,"redNeg works only with red numbers"),this.red.verify1(this),this.red.neg(this)}redPow(t){return this.assert(null!=this.red&&null==t.red,"redPow(normalNum)"),this.red.verify1(this),this.red.pow(this,t)}static fromHex(t,e){return"big"===e?new c(t,16):new c(t,16,"le")}toHex(t=0){return this.toString("hex",2*t)}static fromJSON(t){return new c(t)}static fromNumber(t){return new c(t)}static fromString(t,e){return new c(t,e)}static fromSm(t,e="big"){let r=t;return 0===t.length?new c(0):("little"===e&&(r=[...r],r=r.reverse()),128&r[0]?(r=[...r],r[0]=127&r[0],new c(r).neg()):new c(r))}toSm(t="big"){let e;return-1===this.cmpn(0)?(e=this.neg().toArray(),128&e[0]?e=[128,...e]:e[0]=128|e[0]):(e=this.toArray(),128&e[0]&&(e=[0,...e])),1===e.length&&0===e[0]&&(e=[]),"little"===t&&(e=e.reverse()),e}static fromBits(t,e=!1){if(t=2147483648&t?t-4294967296:t,e&&8388608&t)throw new Error("negative bit set");const r=t>>24,i=8388607&t;let s=[i>>24&255,i>>16&255,i>>8&255,255&i];if(r<=3)s=s.slice(1,1+r);else for(let t=0;t<r-3;t++)s.push(0);return 8388608&t?new c(s).neg():new c(s)}toBits(){let t;for(t=this.ltn(0)?this.neg().toArray("be"):this.toArray("be");t.length<4;)t.unshift(0);if(t.every((t=>0===t)))return 0;for(;0===t[0];)t.shift();let e=t.length,r=t.slice(0,3).reduce(((t,e)=>256*t+e),0);8388608&r&&(t.unshift(0),e+=1,r>>>=8);let i=e<<24|r;return this.ltn(0)&&(i|=8388608),i>>>0}static fromScriptNum(t,e,r){if(void 0===r&&(r=Number.MAX_SAFE_INTEGER),t.length>r)throw new Error("script number overflow");if(e&&t.length>0&&!(127&t[t.length-1]||!(t.length<=1)&&128&t[t.length-2]))throw new Error("non-minimally encoded script number");return c.fromSm(t,"little")}toScriptNum(){return this.toSm("little")}}class h{name;p;k;n;tmp;constructor(t,e){this.name=t,this.p=new c(e,16),this.n=this.p.bitLength(),this.k=new c(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}_tmp(){const t=new c;return t.words=new Array(Math.ceil(this.n/13)),t}ireduce(t){let e,r=t;do{this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength()}while(e>this.n);const i=e<this.n?-1:r.ucmp(this.p);return 0===i?(r.words[0]=0,r.length=1):i>0?r.isub(this.p):(r.strip,r.strip()),r}split(t,e){t.iushrn(this.n,0,e)}imulK(t){return t.imul(this.k)}}class d extends h{constructor(){super("k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}split(t,e){const r=4194303,i=Math.min(t.length,9);let s=0;for(;s<i;s++)e.words[s]=t.words[s];if(e.length=i,t.length<=9)return t.words[0]=0,void(t.length=1);let n=t.words[9];for(e.words[e.length++]=n&r,s=10;s<t.length;s++){const e=0|t.words[s];t.words[s-10]=(e&r)<<4|n>>>22,n=e}n>>>=22,t.words[s-10]=n,0===n&&t.length>10?t.length-=10:t.length-=9}imulK(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;let e=0;for(let r=0;r<t.length;r++){const i=0|t.words[r];e+=977*i,t.words[r]=67108863&e,e=64*i+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t}}class u{prime;m;constructor(t){if("k256"===t){const t=new d;this.m=t.p,this.prime=t}else this.assert(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}assert(t,e="Assertion failed"){if(!t)throw new Error(e)}verify1(t){this.assert(0===t.negative,"red works only with positives"),this.assert(t.red,"red works only with red numbers")}verify2(t,e){this.assert(!(t.negative|e.negative),"red works only with positives"),this.assert(null!=t.red&&t.red===e.red,"red works only with red numbers")}imod(t){return null!=this.prime?this.prime.ireduce(t).forceRed(this):(c.move(t,t.umod(this.m).forceRed(this)),t)}neg(t){return t.isZero()?t.clone():this.m.sub(t).forceRed(this)}add(t,e){this.verify2(t,e);const r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r.forceRed(this)}iadd(t,e){this.verify2(t,e);const r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r}sub(t,e){this.verify2(t,e);const r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r.forceRed(this)}isub(t,e){this.verify2(t,e);const r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r}shl(t,e){return this.verify1(t),this.imod(t.ushln(e))}imul(t,e){return this.verify2(t,e),this.imod(t.imul(e))}mul(t,e){return this.verify2(t,e),this.imod(t.mul(e))}isqr(t){return this.imul(t,t.clone())}sqr(t){return this.mul(t,t)}sqrt(t){if(t.isZero())return t.clone();const e=this.m.andln(3);if(this.assert(e%2==1),3===e){const e=this.m.add(new c(1)).iushrn(2);return this.pow(t,e)}const r=this.m.subn(1);let i=0;for(;!r.isZero()&&0===r.andln(1);)i++,r.iushrn(1);this.assert(!r.isZero());const s=new c(1).toRed(this),n=s.redNeg(),a=this.m.subn(1).iushrn(1),o=this.m.bitLength(),h=new c(2*o*o).toRed(this);for(;0!==this.pow(h,a).cmp(n);)h.redIAdd(n);let d=this.pow(h,r),u=this.pow(t,r.addn(1).iushrn(1)),l=this.pow(t,r),f=i;for(;0!==l.cmp(s);){let t=l,e=0;for(;0!==t.cmp(s);e++)t=t.redSqr();this.assert(e<f);const r=this.pow(d,new c(1).iushln(f-e-1));u=u.redMul(r),d=r.redSqr(),l=l.redMul(d),f=e}return u}invm(t){const e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)}pow(t,e){if(e.isZero())return new c(1).toRed(this);if(0===e.cmpn(1))return t.clone();const r=new Array(16);r[0]=new c(1).toRed(this),r[1]=t;let i=2;for(;i<r.length;i++)r[i]=this.mul(r[i-1],t);let s=r[0],n=0,a=0,o=e.bitLength()%26;for(0===o&&(o=26),i=e.length-1;i>=0;i--){const t=e.words[i];for(let e=o-1;e>=0;e--){const o=t>>e&1;s!==r[0]&&(s=this.sqr(s)),0!==o||0!==n?(n<<=1,n|=o,a++,(4===a||0===i&&0===e)&&(s=this.mul(s,r[n]),a=0,n=0)):a=0}o=26}return s}convertTo(t){const e=t.umod(this.m);return e===t?e.clone():e}convertFrom(t){const e=t.clone();return e.red=null,e}}class l extends u{shift;r;r2;rinv;minv;constructor(t){super(t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new c(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}convertTo(t){return this.imod(t.ushln(this.shift))}convertFrom(t){const e=this.imod(t.mul(this.rinv));return e.red=null,e}imul(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;const r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(i).iushrn(this.shift);let n=s;return s.cmp(this.m)>=0?n=s.isub(this.m):s.cmpn(0)<0&&(n=s.iadd(this.m)),n.forceRed(this)}mul(t,e){if(t.isZero()||e.isZero())return new c(0).forceRed(this);const r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(i).iushrn(this.shift);let n=s;return s.cmp(this.m)>=0?n=s.isub(this.m):s.cmpn(0)<0&&(n=s.iadd(this.m)),n.forceRed(this)}invm(t){return this.imod(t._invmp(this.m).mul(this.r2)).forceRed(this)}}class f{curve;type;precomputed;constructor(t){this.curve=new qt,this.type=t,this.precomputed=null}}class b extends f{x;y;z;zOne;constructor(t,e,r){super("jacobian"),null===t&&null===e&&null===r?(this.x=this.curve.one,this.y=this.curve.one,this.z=new c(0)):(c.isBN(t)||(t=new c(t,16)),this.x=t,c.isBN(e)||(e=new c(e,16)),this.y=e,c.isBN(r)||(r=new c(r,16)),this.z=r),null==this.x.red&&(this.x=this.x.toRed(this.curve.red)),null==this.y.red&&(this.y=this.y.toRed(this.curve.red)),null==this.z.red&&(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}toP(){if(this.isInfinity())return new Dt(null,null);const t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return new Dt(r,i)}neg(){return new b(this.x,this.y.redNeg(),this.z)}add(t){if(this.isInfinity())return t;if(t.isInfinity())return this;const e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),s=t.x.redMul(r),n=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),o=i.redSub(s),c=n.redSub(a);if(0===o.cmpn(0))return 0!==c.cmpn(0)?new b(null,null,null):this.dbl();const h=o.redSqr(),d=h.redMul(o),u=i.redMul(h),l=c.redSqr().redIAdd(d).redISub(u).redISub(u),f=c.redMul(u.redISub(l)).redISub(n.redMul(d)),p=this.z.redMul(t.z).redMul(o);return new b(l,f,p)}mixedAdd(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;const e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),s=this.y,n=t.y.redMul(e).redMul(this.z),a=r.redSub(i),o=s.redSub(n);if(0===a.cmpn(0))return 0!==o.cmpn(0)?new b(null,null,null):this.dbl();const c=a.redSqr(),h=c.redMul(a),d=r.redMul(c),u=o.redSqr().redIAdd(h).redISub(d).redISub(d),l=o.redMul(d.redISub(u)).redISub(s.redMul(h)),f=this.z.redMul(a);return new b(u,l,f)}dblp(t){if(0===t)return this;if(this.isInfinity())return this;if(void 0===t)return this.dbl();let e=this;for(let r=0;r<t;r++)e=e.dbl();return e}dbl(){if(this.isInfinity())return this;let t,e,r;if(this.zOne){const i=this.x.redSqr(),s=this.y.redSqr(),n=s.redSqr();let a=this.x.redAdd(s).redSqr().redISub(i).redISub(n);a=a.redIAdd(a);const o=i.redAdd(i).redIAdd(i),c=o.redSqr().redISub(a).redISub(a);let h=n.redIAdd(n);h=h.redIAdd(h),h=h.redIAdd(h),t=c,e=o.redMul(a.redISub(c)).redISub(h),r=this.y.redAdd(this.y)}else{const i=this.x.redSqr(),s=this.y.redSqr(),n=s.redSqr();let a=this.x.redAdd(s).redSqr().redISub(i).redISub(n);a=a.redIAdd(a);const o=i.redAdd(i).redIAdd(i),c=o.redSqr();let h=n.redIAdd(n);h=h.redIAdd(h),h=h.redIAdd(h),t=c.redISub(a).redISub(a),e=o.redMul(a.redISub(t)).redISub(h),r=this.y.redMul(this.z),r=r.redIAdd(r)}return new b(t,e,r)}eq(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;const e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;const i=e.redMul(this.z),s=r.redMul(t.z);return 0===this.y.redMul(s).redISub(t.y.redMul(i)).cmpn(0)}eqXToP(t){const e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;const i=t.clone(),s=this.curve.redN.redMul(e);for(;;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(s),0===this.x.cmp(r))return!0}}inspect(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"}isInfinity(){return 0===this.z.cmpn(0)}}const p=(t,e="Hash assertion failed")=>{if(!t)throw new Error(e)};class m{pending;pendingTotal;blockSize;outSize;endian;_delta8;_delta32;padLength;hmacStrength;constructor(t,e,r,i){this.pending=null,this.pendingTotal=0,this.blockSize=t,this.outSize=e,this.hmacStrength=r,this.padLength=i/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}_update(t,e){throw new Error("Not implemented")}_digest(){throw new Error("Not implemented")}_digestHex(){throw new Error("Not implemented")}update(t,e){if(t=w(t,e),null==this.pending?this.pending=t:this.pending=this.pending.concat(t),this.pendingTotal+=t.length,this.pending.length>=this._delta8){const e=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-e,t.length),0===this.pending.length&&(this.pending=null),t=function(t,e,r,i){const s=r-0;p(s%4==0);const n=new Array(s/4);for(let e=0,r=0;e<n.length;e++,r+=4){let s;s="big"===i?t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]:t[r+3]<<24|t[r+2]<<16|t[r+1]<<8|t[r],n[e]=s>>>0}return n}(t,0,t.length-e,this.endian);for(let e=0;e<t.length;e+=this._delta32)this._update(t,e)}return this}digest(){return this.update(this._pad()),p(null===this.pending),this._digest()}digestHex(){return this.update(this._pad()),p(null===this.pending),this._digestHex()}_pad(){let t=this.pendingTotal;const e=this._delta8,r=e-(t+this.padLength)%e,i=new Array(r+this.padLength);let s,n;for(i[0]=128,s=1;s<r;s++)i[s]=0;if(t<<=3,"big"===this.endian){for(n=8;n<this.padLength;n++)i[s++]=0;i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=t>>>24&255,i[s++]=t>>>16&255,i[s++]=t>>>8&255,i[s++]=255&t}else for(i[s++]=255&t,i[s++]=t>>>8&255,i[s++]=t>>>16&255,i[s++]=t>>>24&255,i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=0,n=8;n<this.padLength;n++)i[s++]=0;return i}}function g(t,e){return 55296==(64512&t.charCodeAt(e))&&!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1))}function w(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];const r=[];if("string"==typeof t)if("hex"!==e){let e=0;for(let i=0;i<t.length;i++){let s=t.charCodeAt(i);s<128?r[e++]=s:s<2048?(r[e++]=s>>6|192,r[e++]=63&s|128):g(t,i)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++i)),r[e++]=s>>18|240,r[e++]=s>>12&63|128,r[e++]=s>>6&63|128,r[e++]=63&s|128):(r[e++]=s>>12|224,r[e++]=s>>6&63|128,r[e++]=63&s|128)}}else{(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(let e=0;e<t.length;e+=2)r.push(parseInt(t[e]+t[e+1],16))}else for(let e=0;e<t.length;e++)r[e]=0|t[e];return r}function y(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function v(t,e){let r="";for(let s=0;s<t.length;s++){let n=t[s];"little"===e&&(n=y(n)),r+=7===(i=n.toString(16)).length?"0"+i:6===i.length?"00"+i:5===i.length?"000"+i:4===i.length?"0000"+i:3===i.length?"00000"+i:2===i.length?"000000"+i:1===i.length?"0000000"+i:i}var i;return r}function k(t,e){const r=new Array(4*t.length);for(let i=0,s=0;i<t.length;i++,s+=4){const n=t[i];"big"===e?(r[s]=n>>>24,r[s+1]=n>>>16&255,r[s+2]=n>>>8&255,r[s+3]=255&n):(r[s+3]=n>>>24,r[s+2]=n>>>16&255,r[s+1]=n>>>8&255,r[s]=255&n)}return r}function P(t,e){return t>>>e|t<<32-e}function O(t,e){return t<<e|t>>>32-e}function E(t,e){return t+e>>>0}function I(t,e,r){return t+e+r>>>0}function _(t,e,r,i){return t+e+r+i>>>0}function x(t,e,r,i,s){return t+e+r+i+s>>>0}function S(t,e,r,i){return 0===t?M(e,r,i):1===t||3===t?function(t,e,r){return t^e^r}(e,r,i):2===t?A(e,r,i):void 0}function M(t,e,r){return t&e^~t&r}function A(t,e,r){return t&e^t&r^e&r}function F(t){return P(t,2)^P(t,13)^P(t,22)}function N(t){return P(t,6)^P(t,11)^P(t,25)}function T(t){return P(t,7)^P(t,18)^t>>>3}const B=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],R=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],U=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],H=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];function L(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function D(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function C(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}function q(t,e,r,i){const s=t[e],n=i+t[e+1]>>>0,a=(n<i?1:0)+r+s;t[e]=a>>>0,t[e+1]=n}function V(t,e,r,i){return(e+i>>>0<e?1:0)+t+r>>>0}function K(t,e,r,i){return e+i>>>0}function z(t,e,r,i,s,n,a,o){let c=0,h=e;return h=h+i>>>0,c+=h<e?1:0,h=h+n>>>0,c+=h<n?1:0,h=h+o>>>0,c+=h<o?1:0,t+r+s+a+c>>>0}function $(t,e,r,i,s,n,a,o,c,h){let d=0,u=e;return u=u+i>>>0,d+=u<e?1:0,u=u+n>>>0,d+=u<n?1:0,u=u+o>>>0,d+=u<o?1:0,u=u+h>>>0,d+=u<h?1:0,t+r+s+a+c+d>>>0}function j(t,e,r,i,s,n,a,o,c,h){return e+i+n+o+h>>>0}function X(t,e,r){return(e<<32-r|t>>>r)>>>0}function G(t,e,r){return(t<<32-r|e>>>r)>>>0}function W(t,e,r){return t>>>r}function Y(t,e,r){return(t<<32-r|e>>>r)>>>0}class Z extends m{h;constructor(){super(512,160,192,64),this.endian="little",this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}_update(t,e){let r,i=this.h[0],s=this.h[1],n=this.h[2],a=this.h[3],o=this.h[4],c=i,h=s,d=n,u=a,l=o;for(let f=0;f<80;f++)r=E(O(_(i,L(f,s,n,a),t[B[f]+e],D(f)),U[f]),o),i=o,o=a,a=O(n,10),n=s,s=r,r=E(O(_(c,L(79-f,h,d,u),t[R[f]+e],C(f)),H[f]),l),c=l,l=u,u=O(d,10),d=h,h=r;r=I(this.h[1],n,u),this.h[1]=I(this.h[2],a,l),this.h[2]=I(this.h[3],o,c),this.h[3]=I(this.h[4],i,h),this.h[4]=I(this.h[0],s,d),this.h[0]=r}_digest(){return k(this.h,"little")}_digestHex(){return v(this.h,"little")}}class Q extends m{h;W;k;constructor(){super(512,256,192,64),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=[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],this.W=new Array(64)}_update(t,e){const r=this.W;let i;for(i=0;i<16;i++)r[i]=t[e+i];for(;i<r.length;i++)r[i]=_(P(s=r[i-2],17)^P(s,19)^s>>>10,r[i-7],T(r[i-15]),r[i-16]);var s;let n=this.h[0],a=this.h[1],o=this.h[2],c=this.h[3],h=this.h[4],d=this.h[5],u=this.h[6],l=this.h[7];for(p(this.k.length===r.length),i=0;i<r.length;i++){const t=x(l,N(h),M(h,d,u),this.k[i],r[i]),e=E(F(n),A(n,a,o));l=u,u=d,d=h,h=E(c,t),c=o,o=a,a=n,n=E(t,e)}this.h[0]=E(this.h[0],n),this.h[1]=E(this.h[1],a),this.h[2]=E(this.h[2],o),this.h[3]=E(this.h[3],c),this.h[4]=E(this.h[4],h),this.h[5]=E(this.h[5],d),this.h[6]=E(this.h[6],u),this.h[7]=E(this.h[7],l)}_digest(){return k(this.h,"big")}_digestHex(){return v(this.h,"big")}}class J extends m{h;W;k;constructor(){super(512,160,80,64),this.k=[1518500249,1859775393,2400959708,3395469782],this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}_update(t,e){const r=this.W;let i;for(i=0;i<16;i++)r[i]=t[e+i];for(;i<r.length;i++)r[i]=O(r[i-3]^r[i-8]^r[i-14]^r[i-16],1);let s=this.h[0],n=this.h[1],a=this.h[2],o=this.h[3],c=this.h[4];for(i=0;i<r.length;i++){const t=~~(i/20),e=x(O(s,5),S(t,n,a,o),c,r[i],this.k[t]);c=o,o=a,a=O(n,30),n=s,s=e}this.h[0]=E(this.h[0],s),this.h[1]=E(this.h[1],n),this.h[2]=E(this.h[2],a),this.h[3]=E(this.h[3],o),this.h[4]=E(this.h[4],c)}_digest(){return k(this.h,"big")}_digestHex(){return v(this.h,"big")}}class tt extends m{h;W;k;constructor(){super(1024,512,192,128),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],this.W=new Array(160)}_prepareBlock(t,e){const r=this.W;let i;for(i=0;i<32;i++)r[i]=t[e+i];for(;i<r.length;i+=2){const t=ut(r[i-4],r[i-3]),e=lt(r[i-4],r[i-3]),s=r[i-14],n=r[i-13],a=ht(r[i-30],r[i-29]),o=dt(r[i-30],r[i-29]),c=r[i-32],h=r[i-31];r[i]=z(t,e,s,n,a,o,c,h),r[i+1]=e+n+o+h>>>0}}_update(t,e){this._prepareBlock(t,e);const r=this.W;let i=this.h[0],s=this.h[1],n=this.h[2],a=this.h[3],o=this.h[4],c=this.h[5],h=this.h[6],d=this.h[7],u=this.h[8],l=this.h[9],f=this.h[10],b=this.h[11],m=this.h[12],g=this.h[13],w=this.h[14],y=this.h[15];p(this.k.length===r.length);for(let t=0;t<r.length;t+=2){let e=w,p=y,v=ot(u,l),k=ct(u,l);const P=et(u,0,f,0,m),O=rt(0,l,0,b,0,g),E=this.k[t],I=this.k[t+1],_=r[t],x=r[t+1],S=$(e,p,v,k,P,O,E,I,_,x),M=j(0,p,0,k,0,O,0,I,0,x);e=nt(i,s),p=at(i,s),v=it(i,0,n,0,o),k=st(0,s,0,a,0,c);const A=V(e,p,v,k),F=K(0,p,0,k);w=m,y=g,m=f,g=b,f=u,b=l,u=V(h,d,S,M),l=K(0,d,0,M),h=o,d=c,o=n,c=a,n=i,a=s,i=V(S,M,A,F),s=K(0,M,0,F)}q(this.h,0,i,s),q(this.h,2,n,a),q(this.h,4,o,c),q(this.h,6,h,d),q(this.h,8,u,l),q(this.h,10,f,b),q(this.h,12,m,g),q(this.h,14,w,y)}_digest(){return k(this.h,"big")}_digestHex(){return v(this.h,"big")}}function et(t,e,r,i,s,n){let a=t&r^~t&s;return a<0&&(a+=4294967296),a}function rt(t,e,r,i,s,n){let a=e&i^~e&n;return a<0&&(a+=4294967296),a}function it(t,e,r,i,s,n){let a=t&r^t&s^r&s;return a<0&&(a+=4294967296),a}function st(t,e,r,i,s,n){let a=e&i^e&n^i&n;return a<0&&(a+=4294967296),a}function nt(t,e){let r=X(t,e,28)^X(e,t,2)^X(e,t,7);return r<0&&(r+=4294967296),r}function at(t,e){let r=G(t,e,28)^G(e,t,2)^G(e,t,7);return r<0&&(r+=4294967296),r}function ot(t,e){let r=X(t,e,14)^X(t,e,18)^X(e,t,9);return r<0&&(r+=4294967296),r}function ct(t,e){let r=G(t,e,14)^G(t,e,18)^G(e,t,9);return r<0&&(r+=4294967296),r}function ht(t,e){let r=X(t,e,1)^X(t,e,8)^W(t,0,7);return r<0&&(r+=4294967296),r}function dt(t,e){let r=G(t,e,1)^G(t,e,8)^Y(t,e,7);return r<0&&(r+=4294967296),r}function ut(t,e){let r=X(t,e,19)^X(e,t,29)^W(t,0,6);return r<0&&(r+=4294967296),r}function lt(t,e){let r=G(t,e,19)^G(e,t,29)^Y(t,e,6);return r<0&&(r+=4294967296),r}class ft{inner;outer;blockSize=64;outSize=32;constructor(t){let e;for((t=w(t,"hex")).length>this.blockSize&&(t=(new Q).update(t).digest()),p(t.length<=this.blockSize),e=t.length;e<this.blockSize;e++)t.push(0);for(e=0;e<t.length;e++)t[e]^=54;for(this.inner=(new Q).update(t),e=0;e<t.length;e++)t[e]^=106;this.outer=(new Q).update(t)}update(t,e){return this.inner.update(t,e),this}digest(){return this.outer.update(this.inner.digest()),this.outer.digest()}digestHex(){return this.outer.update(this.inner.digest()),this.outer.digestHex()}}class bt{inner;outer;blockSize=64;constructor(t){let e;for((t=w(t,"hex")).length>this.blockSize&&(t=(new J).update(t).digest()),e=t.length;e<this.blockSize;e++)t.push(0);for(e=0;e<t.length;e++)t[e]^=54;for(this.inner=(new J).update(t),e=0;e<t.length;e++)t[e]^=106;this.outer=(new J).update(t)}update(t,e){return this.inner.update(t,e),this}digest(){return this.outer.update(this.inner.digest()),this.outer.digest()}digestHex(){return this.outer.update(this.inner.digest()),this.outer.digestHex()}}class pt{inner;outer;blockSize=128;outSize=32;constructor(t){let e;for((t=w(t,"hex")).length>this.blockSize&&(t=(new tt).update(t).digest()),p(t.length<=this.blockSize),e=t.length;e<this.blockSize;e++)t.push(0);for(e=0;e<t.length;e++)t[e]^=54;for(this.inner=(new tt).update(t),e=0;e<t.length;e++)t[e]^=106;this.outer=(new tt).update(t)}update(t,e){return this.inner.update(t,e),this}digest(){return this.outer.update(this.inner.digest()),this.outer.digest()}digestHex(){return this.outer.update(this.inner.digest()),this.outer.digestHex()}}const mt=(t,e)=>(new Z).update(t,e).digest(),gt=(t,e)=>(new J).update(t,e).digest(),wt=(t,e)=>(new Q).update(t,e).digest(),yt=(t,e)=>(new tt).update(t,e).digest(),vt=(t,e)=>{const r=(new Q).update(t,e).digest();return(new Q).update(r).digest()},kt=(t,e)=>{const r=(new Q).update(t,e).digest();return(new Z).update(r).digest()},Pt=(t,e,r)=>new ft(t).update(e,r).digest(),Ot=(t,e,r)=>new pt(t).update(e,r).digest();function Et(t,e,r,i,s="sha512"){if("sha512"!==s)throw new Error("Only sha512 is supported in this PBKDF2 implementation");const n=new Array(i),a=[...e,0,0,0,0];let o=0;const c=Math.ceil(i/64);for(let i=1;i<=c;i++){a[e.length]=i>>24&255,a[e.length+1]=i>>16&255,a[e.length+2]=i>>8&255,a[e.length+3]=255&i;const s=Ot(t,a);let c=s;for(let e=1;e<r;e++){c=Ot(t,c);for(let t=0;t<64;t++)s[t]^=c[t]}for(let t=0;t<s.length;t++)n[o+t]=s[t];o+=64}return n.slice(0,i)}const It=t=>t.length%2==1?"0"+t:t,_t=t=>{let e="";for(let r=0;r<t.length;r++)e+=It(t[r].toString(16));return e},xt=(t,e)=>{if(Array.isArray(t))return t.slice();if(!t)return[];const r=[];if("string"!=typeof t){for(let e=0;e<t.length;e++)r[e]=0|t[e];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(let e=0;e<t.length;e+=2)r.push(parseInt(t[e]+t[e+1],16))}else{if("base64"===e){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=[];let i=0,s=0;for(const n of t.replace(/=+$/,""))i=i<<6|e.indexOf(n),s+=6,s>=8&&(s-=8,r.push(i>>s&255),i&=(1<<s)-1);return r}for(let e=0;e<t.length;e++){const i=t.charCodeAt(e),s=i>>8,n=255&i;s?r.push(s,n):r.push(n)}}return r},St=t=>{let e="";for(let r=0;r<t.length;r++){const i=t[r];if(i<=127)e+=String.fromCharCode(i);else if(i>=192&&i<=223){const s=(31&i)<<6|63&t[++r];e+=String.fromCharCode(s)}else if(i>=224&&i<=239){const s=(15&i)<<12|(63&t[++r])<<6|63&t[++r];e+=String.fromCharCode(s)}else if(i>=240&&i<=247){const s=(7&i)<<18|(63&t[++r])<<12|(63&t[++r])<<6|63&t[++r],n=55296+(s-65536>>10),a=56320+(s-65536&1023);e+=String.fromCharCode(n,a)}}return e},Mt=(t,e)=>{switch(e){case"hex":return _t(t);case"utf8":return St(t);default:return t}};function At(t){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let r,i="";for(r=0;r<t.length;r+=3){const s=t[r],n=r+1<t.length?t[r+1]:0,a=r+2<t.length?t[r+2]:0,o=(3&s)<<4|n>>4,c=(15&n)<<2|a>>6,h=63&a;i+=e.charAt(s>>2)+e.charAt(o),i+=r+1<t.length?e.charAt(c):"=",i+=r+2<t.length?e.charAt(h):"="}return i}const Ft="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",Nt=t=>{if(!t||"string"!=typeof t)throw new Error(`Expected base58 string but got “${t}”`);if(t.match(/[IOl0]/gmu))throw new Error(`Invalid base58 character “${t.match(/[IOl0]/gmu)}”`);const e=t.match(/^1+/gmu),r=e?e[0].length:0,i=(t.length-r)*(Math.log(58)/Math.log(256))+1>>>0;var s;return[...new Uint8Array([...new Uint8Array(r),...t.match(/.{1}/gmu).map((t=>Ft.indexOf(t))).reduce(((t,e)=>t.map((t=>{const r=58*t+e;return e=r>>8,r}))),new Uint8Array(i)).reverse().filter((s=!1,t=>s=s||t))])]},Tt=t=>{const e=Array(256).fill(-1);for(let t=0;t<58;++t)e[Ft.charCodeAt(t)]=t;const r=[];for(const i of t){let t=i;for(let i=0;i<r.length;++i){const s=(e[r[i]]<<8)+t;r[i]=Ft.charCodeAt(s%58),t=s/58|0}for(;t;)r.push(Ft.charCodeAt(t%58)),t=t/58|0}for(const e of t){if(e)break;r.push("1".charCodeAt(0))}return r.reverse(),String.fromCharCode(...r)},Bt=(t,e=[0])=>{let r=vt([...e,...t]);return r=[...e,...t,...r.slice(0,4)],Tt(r)},Rt=(t,e,r=1)=>{const i=Nt(t);let s=i.slice(0,r),n=i.slice(r,-4),a=[...s,...n];return a=vt(a),i.slice(-4).forEach(((t,e)=>{if(t!==a[e])throw new Error("Invalid checksum")})),"hex"===e&&(s=_t(s),n=_t(n)),{prefix:s,data:n}};class Ut{bufs;constructor(t){this.bufs=t||[]}getLength(){let t=0;for(const e of this.bufs)t+=e.length;return t}toArray(){const t=this.getLength(),e=new Array(t);let r=0;for(const t of this.bufs)for(let i=0;i<t.length;i++)e[r++]=t[i];return e}write(t){return this.bufs.push(t),this}writeReverse(t){const e=new Array(t.length);for(let r=0;r<e.length;r++)e[r]=t[t.length-1-r];return this.bufs.push(e),this}writeUInt8(t){const e=new Array(1);return e[0]=t,this.write(e),this}writeInt8(t){const e=new Array(1);return e[0]=255&t,this.write(e),this}writeUInt16BE(t){return this.bufs.push([t>>8&255,255&t]),this}writeInt16BE(t){return this.writeUInt16BE(65535&t)}writeUInt16LE(t){return this.bufs.push([255&t,t>>8&255]),this}writeInt16LE(t){return this.writeUInt16LE(65535&t)}writeUInt32BE(t){return this.bufs.push([t>>24&255,t>>16&255,t>>8&255,255&t]),this}writeInt32BE(t){return this.writeUInt32BE(t>>>0)}writeUInt32LE(t){return this.bufs.push([255&t,t>>8&255,t>>16&255,t>>24&255]),this}writeInt32LE(t){return this.writeUInt32LE(t>>>0)}writeUInt64BEBn(t){const e=t.toArray("be",8);return this.write(e),this}writeUInt64LEBn(t){const e=t.toArray("be",8);return this.writeReverse(e),this}writeUInt64LE(t){const e=new c(t).toArray("be",8);return this.writeReverse(e),this}writeVarIntNum(t){const e=Ut.varIntNum(t);return this.write(e),this}writeVarIntBn(t){const e=Ut.varIntBn(t);return this.write(e),this}static varIntNum(t){let e;if(t<253)e=[t];else if(t<65536)e=[253,255&t,t>>8&255];else if(t<4294967296)e=[254,255&t,t>>8&255,t>>16&255,t>>24&255];else{const r=4294967295&t,i=4294967295&Math.floor(t/4294967296);e=[255,255&r,r>>8&255,r>>16&255,r>>24&255,255&i,i>>8&255,i>>16&255,i>>24&255]}return e}static varIntBn(t){let e;if(t.ltn(253))e=[t.toNumber()];else if(t.ltn(65536)){const r=t.toNumber();e=[253,255&r,r>>8&255]}else if(t.lt(new c(4294967296))){const r=t.toNumber();e=[254,255&r,r>>8&255,r>>16&255,r>>24&255]}else{const r=new Ut;r.writeUInt8(255),r.writeUInt64LEBn(t),e=r.toArray()}return e}}class Ht{bin;pos;constructor(t=[],e=0){this.bin=t,this.pos=e}eof(){return this.pos>=this.bin.length}read(t=this.bin.length){const e=this.pos,r=this.pos+t;return this.pos=r,this.bin.slice(e,r)}readReverse(t=this.bin.length){const e=new Array(t);for(let r=0;r<t;r++)e[r]=this.bin[this.pos+t-1-r];return this.pos+=t,e}readUInt8(){const t=this.bin[this.pos];return this.pos+=1,t}readInt8(){const t=this.bin[this.pos];return this.pos+=1,128&t?t-256:t}readUInt16BE(){const t=this.bin[this.pos]<<8|this.bin[this.pos+1];return this.pos+=2,t}readInt16BE(){const t=this.readUInt16BE();return 32768&t?t-65536:t}readUInt16LE(){const t=this.bin[this.pos]|this.bin[this.pos+1]<<8;return this.pos+=2,t}readInt16LE(){const t=this.readUInt16LE();return 32768&t?t-65536:t}readUInt32BE(){const t=16777216*this.bin[this.pos]+(this.bin[this.pos+1]<<16|this.bin[this.pos+2]<<8|this.bin[this.pos+3]);return this.pos+=4,t}readInt32BE(){const t=this.readUInt32BE();return 2147483648&t?t-4294967296:t}readUInt32LE(){const t=(this.bin[this.pos]|this.bin[this.pos+1]<<8|this.bin[this.pos+2]<<16|this.bin[this.pos+3]<<24)>>>0;return this.pos+=4,t}readInt32LE(){const t=this.readUInt32LE();return 2147483648&t?t-4294967296:t}readUInt64BEBn(){const t=this.bin.slice(this.pos,this.pos+8),e=new c(t);return this.pos=this.pos+8,e}readUInt64LEBn(){const t=this.readReverse(8);return new c(t)}readVarIntNum(){const t=this.readUInt8();let e;switch(t){case 253:return this.readUInt16LE();case 254:return this.readUInt32LE();case 255:if(e=this.readUInt64LEBn(),e.lte(new c(2).pow(new c(53))))return e.toNumber();throw new Error("number too large to retain precision - use readVarIntBn");default:return t}}readVarInt(){switch(this.bin[this.pos]){case 253:return this.read(3);case 254:return this.read(5);case 255:return this.read(9);default:return this.read(1)}}readVarIntBn(){const t=this.readUInt8();switch(t){case 253:return new c(this.readUInt16LE());case 254:return new c(this.readUInt32LE());case 255:return this.readUInt64LEBn();default:return new c(t)}}}const Lt=t=>{if(0===t.length)return t;const e=t[t.length-1];if(127&e)return t;if(1===t.length)return[];if(128&t[t.length-2])return t;for(let r=t.length-1;r>0;r--)if(0!==t[r-1])return 128&t[r-1]?t[r++]=e:t[r-1]|=e,t.slice(0,r);return[]};class Dt extends f{static red=new u("k256");static a=new c(0).toRed(Dt.red);static b=new c(7).toRed(Dt.red);static zero=new c(0).toRed(Dt.red);x;y;inf;static fromDER(t){if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==64){if(6===t[0]){if(t[t.length-1]%2!=0)throw new Error("Point string value is wrong length")}else if(7===t[0]&&t[t.length-1]%2!=1)throw new Error("Point string value is wrong length");return new Dt(t.slice(1,33),t.slice(33,65))}if((2===t[0]||3===t[0])&&t.length-1==32)return Dt.fromX(t.slice(1,33),3===t[0]);throw new Error("Unknown point format")}static fromString(t){const e=xt(t,"hex");return Dt.fromDER(e)}static redSqrtOptimized(t){const e=Dt.red.m.addn(1).iushrn(2);return t.redPow(e)}static fromX(t,e){if("function"==typeof BigInt){function r(t,e){return(t%e+e)%e}function i(t,e,i){let s=BigInt(1);for(t=r(t,i);e>BigInt(0);)(e&BigInt(1))===BigInt(1)&&(s=r(s*t,i)),e>>=BigInt(1),t=r(t*t,i);return s}function s(t,e){const s=i(t,e+BigInt(1)>>BigInt(2),e);return r(s*s,e)===r(t,e)?s:null}const n=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"),a=(BigInt(0),BigInt(7));let o;if(t instanceof c)o=BigInt("0x"+t.toString(16));else if("string"==typeof t)o=BigInt("0x"+t);else if(Array.isArray(t))o=BigInt("0x"+Buffer.from(t).toString("hex").padStart(64,"0"));else{if("number"!=typeof t)throw new Error("Invalid x-coordinate type");o=BigInt(t)}o=r(o,n);let h=s(r(i(o,BigInt(3),n)+a,n),n);if(null===h)throw new Error("Invalid point");const d=h%BigInt(2)===BigInt(1);(e&&!d||!e&&d)&&(h=n-h);const l=new c(o.toString(16),16),f=new c(h.toString(16),16);return new Dt(l,f)}{const b=new u("k256"),p=new c(0).toRed(b),m=new c(7).toRed(b),g=new c(0).toRed(b);c.isBN(t)||(t=new c(t,16)),null==t.red&&(t=t.toRed(b));const w=t.redSqr().redMul(t).redIAdd(t.redMul(p)).redIAdd(m);let y=w.redSqrt();if(0!==y.redSqr().redSub(w).cmp(g))throw new Error("invalid point");const v=y.fromRed().isOdd();return(e&&!v||!e&&v)&&(y=y.redNeg()),new Dt(t,y)}}static fromJSON(t,e){"string"==typeof t&&(t=JSON.parse(t));const r=new Dt(t[0],t[1],e);if("object"!=typeof t[2])return r;const i=t=>new Dt(t[0],t[1],e),s=t[2];return r.precomputed={beta:null,doubles:"object"==typeof s.doubles&&null!==s.doubles?{step:s.doubles.step,points:[r].concat(s.doubles.points.map(i))}:void 0,naf:"object"==typeof s.naf&&null!==s.naf?{wnd:s.naf.wnd,points:[r].concat(s.naf.points.map(i))}:void 0},r}constructor(t,e,r=!0){super("affine"),this.precomputed=null,null===t&&null===e?(this.x=null,this.y=null,this.inf=!0):(c.isBN(t)||(t=new c(t,16)),this.x=t,c.isBN(e)||(e=new c(e,16)),this.y=e,r&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),null===this.x.red&&(this.x=this.x.toRed(this.curve.red)),null===this.y.red&&(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}validate(){return this.curve.validate(this)}encode(t=!0,e){const r=this.curve.p.byteLength(),i=this.getX().toArray("be",r);let s;return s=t?[this.getY().isEven()?2:3].concat(i):[4].concat(i,this.getY().toArray("be",r)),"hex"!==e?s:_t(s)}toString(){return this.encode(!0,"hex")}toJSON(){return null==this.precomputed?[this.x,this.y]:[this.x,this.y,"object"==typeof this.precomputed&&null!==this.precomputed?{doubles:null!=this.precomputed.doubles?{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)}:void 0,naf:null!=this.precomputed.naf?{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}:void 0}:void 0]}inspect(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"}isInfinity(){return this.inf}add(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return new Dt(null,null);if(0===this.x.cmp(t.x))return new Dt(null,null);let e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));const r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return new Dt(r,i)}dbl(){if(this.inf)return this;const t=this.y.redAdd(this.y);if(0===t.cmpn(0))return new Dt(null,null);const e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),s=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),n=s.redSqr().redISub(this.x.redAdd(this.x)),a=s.redMul(this.x.redSub(n)).redISub(this.y);return new Dt(n,a)}getX(){return this.x.fromRed()}getY(){return this.y.fromRed()}mul(t){return c.isBN(t)||(t=new c(t,16)),this.isInfinity()?this:this._hasDoubles(t)?this._fixedNafMul(t):this._endoWnafMulAdd([this],[t])}mulAdd(t,e,r){const i=[this,e],s=[t,r];return this._endoWnafMulAdd(i,s)}jmulAdd(t,e,r){const i=[this,e],s=[t,r];return this._endoWnafMulAdd(i,s,!0)}eq(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))}neg(t){if(this.inf)return this;const e=new Dt(this.x,this.y.redNeg());if(t&&null!=this.precomputed){const t=this.precomputed,r=t=>t.neg();e.precomputed={naf:null!=t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(r)},doubles:null!=t.doubles&&{step:t.doubles.step,points:t.doubles.points.map((t=>t.neg()))},beta:void 0}}return e}dblp(t){let e=this;for(let r=0;r<t;r++)e=e.dbl();return e}toJ(){return this.inf?new b(null,null,null):new b(this.x,this.y,this.curve.one)}_getBeta(){if("object"!=typeof this.curve.endo)return;const t=this.precomputed;if("object"==typeof t&&null!==t&&"object"==typeof t.beta&&null!==t.beta)return t.beta;const e=new Dt(this.x.redMul(this.curve.endo.beta),this.y);if(null!=t){const r=this.curve,i=t=>new Dt(t.x.redMul(r.endo.beta),t.y);t.beta=e,e.precomputed={beta:null,naf:null!=t.naf?{wnd:t.naf.wnd,points:t.naf.points.map(i)}:void 0,doubles:null!=t.doubles?{step:t.doubles.step,points:t.doubles.points.map(i)}:void 0}}return e}_fixedNafMul(t){if("object"!=typeof this.precomputed||null===this.precomputed)throw new Error("_fixedNafMul requires precomputed values for the point");const e=this._getDoubles(),r=this.curve.getNAF(t,1,this.curve._bitLength);let i=(1<<e.step+1)-(e.step%2==0?2:1);i/=3;const s=[];for(let t=0;t<r.length;t+=e.step){let i=0;for(let s=t+e.step-1;s>=t;s--)i=(i<<1)+r[s];s.push(i)}let n=new b(null,null,null),a=new b(null,null,null);for(let t=i;t>0;t--){for(let r=0;r<s.length;r++){const i=s[r];i===t?a=a.mixedAdd(e.points[r]):i===-t&&(a=a.mixedAdd(e.points[r].neg()))}n=n.add(a)}return n.toP()}_wnafMulAdd(t,e,r,i,s){const n=this.curve._wnafT1,a=this.curve._wnafT2,o=this.curve._wnafT3;let c=0;for(let r=0;r<i;r++){const i=e[r]._getNAFPoints(t);n[r]=i.wnd,a[r]=i.points}for(let t=i-1;t>=1;t-=2){const i=t-1,s=t;if(1!==n[i]||1!==n[s]){o[i]=this.curve.getNAF(r[i],n[i],this.curve._bitLength),o[s]=this.curve.getNAF(r[s],n[s],this.curve._bitLength),c=Math.max(o[i].length,c),c=Math.max(o[s].length,c);continue}const h=[e[i],null,null,e[s]];0===e[i].y.cmp(e[s].y)?(h[1]=e[i].add(e[s]),h[2]=e[i].toJ().mixedAdd(e[s].neg())):0===e[i].y.cmp(e[s].y.redNeg())?(h[1]=e[i].toJ().mixedAdd(e[s]),h[2]=e[i].add(e[s].neg())):(h[1]=e[i].toJ().mixedAdd(e[s]),h[2]=e[i].toJ().mixedAdd(e[s].neg()));const d=[-3,-1,-5,-7,0,7,5,1,3],u=this.curve.getJSF(r[i],r[s]);c=Math.max(u[0].length,c),o[i]=new Array(c),o[s]=new Array(c);for(let t=0;t<c;t++){const e=0|u[0][t],r=0|u[1][t];o[i][t]=d[3*(e+1)+(r+1)],o[s][t]=0,a[i]=h}}let h=new b(null,null,null);const d=this.curve._wnafT4;for(let t=c;t>=0;t--){let e=0;for(;t>=0;){let r=!0;for(let e=0;e<i;e++)d[e]=0|o[e][t],0!==d[e]&&(r=!1);if(!r)break;e++,t--}if(t>=0&&e++,h=h.dblp(e),t<0)break;for(let t=0;t<i;t++){const e=d[t];let r;0!==e&&(e>0?r=a[t][e-1>>1]:e<0&&(r=a[t][-e-1>>1].neg()),h="affine"===r.type?h.mixedAdd(r):h.add(r))}}for(let t=0;t<i;t++)a[t]=null;return s?h:h.toP()}_endoWnafMulAdd(t,e,r){const i=this.curve._endoWnafT1,s=this.curve._endoWnafT2;let n;for(n=0;n<t.length;n++){const r=this.curve._endoSplit(e[n]);let a=t[n],o=a._getBeta();0!==r.k1.negative&&(r.k1.ineg(),a=a.neg(!0)),0!==r.k2.negative&&(r.k2.ineg(),o=o.neg(!0)),i[2*n]=a,i[2*n+1]=o,s[2*n]=r.k1,s[2*n+1]=r.k2}const a=this._wnafMulAdd(1,i,s,2*n,r);for(let t=0;t<2*n;t++)i[t]=null,s[t]=null;return a}_hasDoubles(t){if(null==this.precomputed)return!1;const e=this.precomputed.doubles;return"object"==typeof e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)}_getDoubles(t,e){if("object"==typeof this.precomputed&&null!==this.precomputed&&"object"==typeof this.precomputed.doubles&&null!==this.precomputed.doubles)return this.precomputed.doubles;const r=[this];let i=this;for(let s=0;s<e;s+=t){for(let e=0;e<t;e++)i=i.dbl();r.push(i)}return{step:t,points:r}}_getNAFPoints(t){if("object"==typeof this.precomputed&&null!==this.precomputed&&"object"==typeof this.precomputed.naf&&null!==this.precomputed.naf)return this.precomputed.naf;const e=[this],r=(1<<t)-1,i=1===r?null:this.dbl();for(let t=1;t<r;t++)e[t]=e[t-1].add(i);return{wnd:t,points:e}}}let Ct;class qt{p;red;redN;zero;one;two;g;n;a;b;tinv;zeroA;threeA;endo;_endoWnafT1;_endoWnafT2;_wnafT1;_wnafT2;_wnafT3;_wnafT4;_bitLength;static assert(t,e="Elliptic curve assertion failed"){if(!t)throw new Error(e)}getNAF(t,e,r){const i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);const s=1<<e+1,n=t.clone();for(let t=0;t<i.length;t++){let e;const r=n.andln(s-1);n.isOdd()?(e=r>(s>>1)-1?(s>>1)-r:r,n.isubn(e)):e=0,i[t]=e,n.iushrn(1)}return i}getJSF(t,e){const r=[[],[]];t=t.clone(),e=e.clone();let i=0,s=0;for(;t.cmpn(-i)>0||e.cmpn(-s)>0;){let n,a,o=t.andln(3)+i&3,c=e.andln(3)+s&3;if(3===o&&(o=-1),3===c&&(c=-1),1&o){const e=t.andln(7)+i&7;n=3!==e&&5!==e||2!==c?o:-o}else n=0;if(r[0].push(n),1&c){const t=e.andln(7)+s&7;a=3!==t&&5!==t||2!==o?c:-c}else a=0;r[1].push(a),2*i===n+1&&(i=1-i),2*s===a+1&&(s=1-s),t.iushrn(1),e.iushrn(1)}return r}static cachedProperty(t,e,r){const i="_"+e;t.prototype[e]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}}static parseBytes(t){return"string"==typeof t?xt(t,"hex"):t}static intFromLE(t){return new c(t,"hex","le")}constructor(){if(void 0!==Ct)return Ct;Ct=this;const t={prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",{doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}]};this.p=new c(t.p,16),this.red=new u(t.prime),this.zero=new c(0).toRed(this.red),this.one=new c(1).toRed(this.red),this.two=new c(2).toRed(this.red),this.n=new c(t.n,16),this.g=Dt.fromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n.bitLength(),this.redN=this.n.toRed(this.red),this.a=new c(t.a,16).toRed(this.red),this.b=new c(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}_getEndomorphism(t){if(!this.zeroA||1!==this.p.modrn(3))return;let e,r,i;if(void 0!==t.beta)e=new c(t.beta,16).toRed(this.red);else{const t=this._getEndoRoots(this.p);e=t[0].cmp(t[1])<0?t[0]:t[1],e=e.toRed(this.red)}if(void 0!==t.lambda)r=new c(t.lambda,16);else{const t=this._getEndoRoots(this.n);0===this.g.mul(t[0]).x.cmp(this.g.x.redMul(e))?r=t[0]:(r=t[1],qt.assert(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return i="object"==typeof t.basis&&null!==t.basis?t.basis.map((function(t){return{a:new c(t.a,16),b:new c(t.b,16)}})):this._getEndoBasis(r),{beta:e,lambda:r,basis:i}}_getEndoRoots(t){const e=t===this.p?this.red:new l(t),r=new c(2).toRed(e).redInvm(),i=r.redNeg(),s=new c(3).toRed(e).redNeg().redSqrt().redMul(r);return[i.redAdd(s).fromRed(),i.redSub(s).fromRed()]}_getEndoBasis(t){const e=this.n.ushrn(Math.floor(this.n.bitLength()/2));let r,i,s,n,a,o,h,d,u,l=t,f=this.n.clone(),b=new c(1),p=new c(0),m=new c(0),g=new c(1),w=0;for(;0!==l.cmpn(0);){const t=f.div(l);d=f.sub(t.mul(l)),u=m.sub(t.mul(b));const a=g.sub(t.mul(p));if("object"!=typeof s&&d.cmp(e)<0)r=h.neg(),i=b,s=d.neg(),n=u;else if("object"==typeof s&&2==++w)break;h=d,f=l,l=d,m=b,b=u,g=p,p=a}a=d.neg(),o=u;const y=s.sqr().add(n.sqr());return a.sqr().add(o.sqr()).cmp(y)>=0&&(a=r,o=i),0!==s.negative&&(s=s.neg(),n=n.neg()),0!==a.negative&&(a=a.neg(),o=o.neg()),[{a:s,b:n},{a,b:o}]}_endoSplit(t){const e=this.endo.basis,r=e[0],i=e[1],s=i.b.mul(t).divRound(this.n),n=r.b.neg().mul(t).divRound(this.n),a=s.mul(r.a),o=n.mul(i.a),c=s.mul(r.b),h=n.mul(i.b);return{k1:t.sub(a).sub(o),k2:c.add(h).neg()}}validate(t){if(t.inf)return!0;const e=t.x,r=t.y,i=this.a.redMul(e),s=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(s).cmpn(0)}}class Vt{r;s;static fromDER(t,e){const r=(t,e)=>{const r=t[e.place++];if(128&r)throw new Error("Invalid DER entity length");return r};t=xt(t,e);const i=new class{place;constructor(){this.place=0}};if(48!==t[i.place++])throw new Error("Signature DER must start with 0x30");if(r(t,i)+i.place!==t.length)throw new Error("Signature DER invalid");if(2!==t[i.place++])throw new Error("Signature DER invalid");const s=r(t,i);let n=t.slice(i.place,s+i.place);if(i.place+=s,2!==t[i.place++])throw new Error("Signature DER invalid");const a=r(t,i);if(t.length!==a+i.place)throw new Error("Invalid R-length in signature DER");let o=t.slice(i.place,a+i.place);if(0===n[0]){if(!(128&n[1]))throw new Error("Invalid R-value in signature DER");n=n.slice(1)}if(0===o[0]){if(!(128&o[1]))throw new Error("Invalid S-value in signature DER");o=o.slice(1)}return new Vt(new c(n),new c(o))}static fromCompact(t,e){if(65!==(t=xt(t,e)).length)throw new Error("Invalid Compact Signature");const r=t[0];if(r<27||r>=35)throw new Error("Invalid Compact Byte");return new Vt(new c(t.slice(1,33)),new c(t.slice(33,65)))}constructor(t,e){this.r=t,this.s=e}verify(t,e,r){const i=new c(wt(t,r),16);return jt(i,this,e)}toString(t){return this.toDER(t)}toDER(t){const e=(t,e)=>{if(!(e<128))throw new Error("len must be < 0x80");t.push(e)},r=t=>{let e=0;const r=t.length-1;for(;0===t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)};let i=this.r.toArray(),s=this.s.toArray();for(128&i[0]&&(i=[0].concat(i)),128&s[0]&&(s=[0].concat(s)),i=r(i),s=r(s);0===s[0]&&!(128&s[1]);)s=s.slice(1);let n=[2];e(n,i.length),n=n.concat(i),n.push(2),e(n,s.length);const a=n.concat(s);let o=[48];return e(o,a.length),o=o.concat(a),"hex"===t?_t(o):"base64"===t?At(o):o}toCompact(t,e,r){if(t<0||t>3)throw new Error("Invalid recovery param");if("boolean"!=typeof e)throw new Error("Invalid compressed param");let i=27+t;e&&(i+=4);let s=[i];return s=s.concat(this.r.toArray("be",32)),s=s.concat(this.s.toArray("be",32)),"hex"===r?_t(s):"base64"===r?At(s):s}RecoverPublicKey(t,e){const r=this.r,i=this.s,s=!!(1&t),n=t>>1,a=new qt,o=a.n,c=a.g,h=n?r.add(o):r,d=Dt.fromX(h,s);if(!d.mul(o).isInfinity())throw new Error("nR is not at infinity");const u=e.neg().umod(o),l=r.invm(o),f=l.mul(i).umod(o),b=l.mul(u).umod(o),p=c.mul(b).add(d.mul(f)),m=new Xt(p);return m.validate(),m}CalculateRecoveryFactor(t,e){for(let r=0;r<4;r++){let i;try{i=this.RecoverPublicKey(r,e)}catch(t){continue}if(t.eq(i))return r}throw new Error("Unable to find valid recovery factor")}}class Kt{K;V;constructor(t,e){if(t=xt(t,"hex"),e=xt(e,"hex"),t.length<32)throw new Error("Not enough entropy. Minimum is 256 bits");const r=t.concat(e);this.K=new Array(32),this.V=new Array(32);for(let t=0;t<32;t++)this.K[t]=0,this.V[t]=1;this.update(r)}hmac(){return new ft(this.K)}update(t){let e=this.hmac().update(this.V).update([0]);void 0!==t&&(e=e.update(t)),this.K=e.digest(),this.V=this.hmac().update(this.V).digest(),void 0!==t&&(this.K=this.hmac().update(this.V).update([1]).update(t).digest(),this.V=this.hmac().update(this.V).digest())}generate(t){let e=[];for(;e.length<t;)this.V=this.hmac().update(this.V).digest(),e=e.concat(this.V);const r=e.slice(0,t);return this.update(),_t(r)}}function zt(t,e,r=new qt){const i=8*t.byteLength()-r.n.bitLength();return i>0&&t.iushrn(i),!e&&t.cmp(r.n)>=0?t.sub(r.n):t}const $t=(t,e,r=!1,i)=>{if("function"==typeof BigInt){const s=BigInt(0),n=BigInt(1),a=BigInt(2),o=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),h=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"),d={x:BigInt("0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798"),y:BigInt("0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8")},u=BigInt("0x"+t.toString(16)),l=BigInt("0x"+e.toString(16));if(l<=s||l>=o)throw new Error("Invalid private key");function f(t,e){const r=t.toString(16).padStart(2*e,"0"),i=new Uint8Array(e);for(let t=0;t<e;t++)i[t]=parseInt(r.substr(2*t,2),16);return i}const b=32,p=f(l,b),m=f(u,b),g=new Kt(Array.from(p),Array.from(m)),w=o-n;let y=0;function v(t,e,r=!0){const i=t.toString(2).length-e.toString(2).length;return i>0&&(t>>=BigInt(i)),!r&&t>=e?t-e:t}function k(){if("function"==typeof i){const t=i(y).toString(16);return BigInt("0x"+t)}if(c.isBN(i)){const t=i.toString(16);return BigInt("0x"+t)}{const t=g.generate(b);return BigInt("0x"+t)}}function P(t,e){return(t%e+e)%e}function O(t,e){let r=n,i=s,a=P(t,e),o=e;for(;a>n;){const t=o/a,e=i-r*t,s=o-a*t;i=r,r=e,o=a,a=s}return P(r,e)}function E(t,e){if(null===t)return e;if(null===e)return t;if(t.x===e.x&&t.y===P(-e.y,h))return null;let r;if(t.x===e.x&&t.y===e.y){if(t.y===s)return null;const e=P(BigInt(3)*t.x*t.x,h);r=P(e*O(a*t.y,h),h)}else{const i=P(e.y-t.y,h);r=P(i*O(e.x-t.x,h),h)}const i=P(r*r-t.x-e.x,h);return{x:i,y:P(r*(t.x-i)-t.y,h)}}function I(t,e){let r=e,i=null;for(;t>s;)t%a===n&&(i=E(i,r)),r=E(r,r),t>>=n;return i}for(;;){let _=k();if(y+=1,_=v(_,o,!0),_<=n||_>=w){if(i instanceof c)throw new Error("Invalid fixed custom K value (must be more than 1 and less than N-1)");continue}const x=I(_,d);if(null===x){if(i instanceof c)throw new Error("Invalid fixed custom K value (must not create a point at infinity when multiplied by the generator point)");continue}const S=P(x.x,o);if(S===s){if(i instanceof c)throw new Error("Invalid fixed custom K value (when multiplied by G, the resulting x coordinate mod N must not be zero)");continue}const M=O(_,o),A=P(S*l,o);let F=P(M*(u+A),o);if(F===s){if(i instanceof c)throw new Error("Invalid fixed custom K value (when used with the key, it cannot create a zero value for S)");continue}r&&F>o/a&&(F=o-F);const N=new c(S.toString(16),16),T=new c(F.toString(16),16);return new Vt(N,T)}}else{const B=new qt;t=zt(t);const R=B.n.byteLength(),U=e.toArray("be",R),H=t.toArray("be",R),L=new Kt(U,H),D=B.n.subn(1);for(let C=0;;C++){let q="function"==typeof i?i(C):c.isBN(i)?i:new c(L.generate(R),16);if(q=zt(q,!0),q.cmpn(1)<=0||q.cmp(D)>=0){if(c.isBN(i))throw new Error("Invalid fixed custom K value (must be more than 1 and less than N-1)");continue}const V=B.g.mul(q);if(V.isInfinity()){if(c.isBN(i))throw new Error("Invalid fixed custom K value (must not create a point at infinity when multiplied by the generator point)");continue}const K=V.getX().umod(B.n);if(0===K.cmpn(0)){if(c.isBN(i))throw new Error("Invalid fixed custom K value (when multiplied by G, the resulting x coordinate mod N must not be zero)");continue}let z=q.invm(B.n).mul(K.mul(e).iadd(t));if(z=z.umod(B.n),0!==z.cmpn(0))return r&&z.cmp(B.n.ushrn(1))>0&&(z=B.n.sub(z)),new Vt(K,z);if(c.isBN(i))throw new Error("Invalid fixed custom K value (when used with the key, it cannot create a zero value for S)")}}},jt=(t,e,r)=>{if("function"==typeof BigInt){const i=BigInt(0),s=BigInt(1),n=BigInt(2),a=BigInt(3),o=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"),c=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),h={x:BigInt("0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798"),y:BigInt("0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8")},d=(t,e)=>(t%e+e)%e,u=(t,e)=>{let[r,n]=[t,e],[a,o]=[BigInt(1),BigInt(0)];for(;n!==i;){const t=r/n;[r,n]=[n,r-t*n],[a,o]=[o,a-t*o]}return r>s?i:d(a,e)},l=(t,e,r)=>d(t*e,r),f=(t,e,r)=>d(t-e,r),b=BigInt(4),p=BigInt(8),m=t=>{const{X:e,Y:r,Z:c}=t;if(r===i)return{X:i,Y:s,Z:i};const h=l(r,r,o),d=l(b,l(e,h,o),o),u=l(a,l(e,e,o),o),m=f(l(u,u,o),l(n,d,o),o);return{X:m,Y:f(l(u,f(d,m,o),o),l(p,l(h,h,o),o),o),Z:l(n,l(r,c,o),o)}},g=(t,e)=>{if(t.Z===i)return e;if(e.Z===i)return t;const r=l(t.Z,t.Z,o),a=l(e.Z,e.Z,o),c=l(t.X,a,o),h=l(e.X,r,o),d=l(t.Y,l(a,e.Z,o),o),u=l(e.Y,l(r,t.Z,o),o),b=f(h,c,o),p=f(u,d,o);if(b===i)return p===i?m(t):{X:i,Y:s,Z:i};const g=l(b,b,o),w=l(b,g,o),y=l(c,g,o),v=f(f(l(p,p,o),w,o),l(n,y,o),o);return{X:v,Y:f(l(p,f(y,v,o),o),l(d,w,o),o),Z:l(b,l(t.Z,e.Z,o),o)}},w=(t,e)=>{const r={X:e.x,Y:e.y,Z:s};let n={X:i,Y:s,Z:i};const a=t.toString(2);for(let t=0;t<a.length;t++)n=m(n),"1"===a[t]&&(n=g(n,r));return n},y=(t,e,r)=>{const{r:s,s:n}=r,a=t;if(s<=i||s>=c||n<=i||n>=c)return!1;const f=u(n,c);if(f===i)return!1;const b=l(a,f,c),p=l(s,f,c),m=w(b,h),y=w(p,e),v=g(m,y);if(v.Z===i)return!1;const k=u(v.Z,o);if(k===i)return!1;const P=l(k,k,o),O=l(v.X,P,o);return d(O,c)===s};return y(BigInt("0x"+t.toString(16)),{x:BigInt("0x"+r.x.toString(16)),y:BigInt("0x"+r.y.toString(16))},{r:BigInt("0x"+e.r.toString(16)),s:BigInt("0x"+e.s.toString(16))})}{const i=new qt;t=zt(t);const s=e.r,n=e.s;if(s.cmpn(1)<0||s.cmp(i.n)>=0)return!1;if(n.cmpn(1)<0||n.cmp(i.n)>=0)return!1;const a=n.invm(i.n),o=a.mul(t).umod(i.n),c=a.mul(s).umod(i.n),h=i.g.jmulAdd(o,r,c);return!h.isInfinity()&&h.eqXToP(s)}};class Xt extends Dt{static fromPrivateKey(t){const e=(new qt).g.mul(t);return new Xt(e.x,e.y)}static fromString(t){const e=Dt.fromString(t);return new Xt(e.x,e.y)}static fromDER(t){const e=Dt.fromDER(t);return new Xt(e.x,e.y)}constructor(t,e=null,r=!0){t instanceof Dt?super(t.getX(),t.getY()):super(t,e,r)}deriveSharedSecret(t){if(!this.validate())throw new Error("Public key not valid for ECDH secret derivation");return this.mul(t)}verify(t,e,r){const i=new c(wt(t,r),16);return jt(i,e,this)}toDER(t){return"hex"===t?this.encode(!0,t):this.encode(!0)}toHash(t){const e=kt(this.encode(!0));return"hex"===t?_t(e):e}toAddress(t=[0]){if("string"==typeof t)if("testnet"===t||"test"===t)t=[111];else{if("mainnet"!==t&&"main"!==t)throw new Error(`Invalid prefix ${t}`);t=[0]}return Bt(this.toHash(),t)}deriveChild(t,e){const r=this.deriveSharedSecret(t),i=xt(e,"utf8"),s=Pt(r.encode(!0),i),n=(new qt).g.mul(new c(s)),a=this.add(n);return new Xt(a.x,a.y)}static fromMsgHashAndCompactSignature(t,e,r){const i=xt(e,r);if(65!==i.length)throw new Error("Invalid Compact Signature");const s=i[0];if(s<27||s>=35)throw new Error("Invalid Compact Byte");let n=i[0]-27,a=!1;return n>3&&(!0,n-=4),new Vt(new c(i.slice(1,33)),new c(i.slice(33,65))).RecoverPublicKey(n,t)}}class Gt{_rand;constructor(){const t=()=>{throw new Error("No secure random number generator is available in this environment.")};if("object"==typeof self)self.crypto&&self.crypto.getRandomValues?this._rand=t=>{const e=new Uint8Array(t);return self.crypto.getRandomValues(e),[...e]}:this._rand=t;else try{const t=require("crypto");"function"==typeof t.randomBytes&&(this._rand=e=>[...t.randomBytes(e)])}catch(e){this._rand=t}}generate(t){return this._rand(t)}}let Wt=null;const Yt=t=>(null==Wt&&(Wt=new Gt),Wt.generate(t));class Zt{x;y;constructor(t,e){const r=(new qt).p;this.x=t.umod(r),this.y=e.umod(r)}toString(){return Tt(this.x.toArray())+"."+Tt(this.y.toArray())}static fromString(t){const[e,r]=t.split(".");return new Zt(new c(Nt(e)),new c(Nt(r)))}}class Qt{points;threshold;constructor(t,e){this.points=t,this.threshold=e||t.length}static fromPrivateKey(t,e){const r=(new qt).p,i=[new Zt(new c(0),new c(t.toArray()))];for(let t=1;t<e;t++){const t=new c(Yt(32)).umod(r),e=new c(Yt(32)).umod(r);i.push(new Zt(t,e))}return new Qt(i)}valueAt(t){const e=(new qt).p;let r=new c(0);for(let i=0;i<this.threshold;i++){let s=this.points[i].y;for(let r=0;r<this.threshold;r++)if(i!==r){const n=this.points[r].x,a=this.points[i].x,o=t.sub(n).umod(e),c=a.sub(n).umod(e).invm(e),h=o.mul(c).umod(e);s=s.mul(h).umod(e)}r=r.add(s).umod(e)}return r}}class Jt{points;threshold;integrity;constructor(t,e,r){this.points=t,this.threshold=e,this.integrity=r}static fromBackupFormat(t){let e=0,r="";const i=t.map(((t,i)=>{const s=t.split(".");if(4!==s.length)throw Error("Invalid share format in share "+i+'. Expected format: "x.y.t.i" - received '+t);const[n,a,o,c]=s;if(!o)throw Error("Threshold not found in share "+i);if(!c)throw Error("Integrity not found in share "+i);const h=parseInt(o);if(0!==i&&e!==h)throw Error("Threshold mismatch in share "+i);if(0!==i&&r!==c)throw Error("Integrity mismatch in share "+i);return e=h,r=c,Zt.fromString([n,a].join("."))}));return new Jt(i,e,r)}toBackupFormat(){return this.points.map((t=>t.toString()+"."+this.threshold+"."+this.integrity))}}class te extends c{static fromRandom(){return new te(Yt(32))}static fromString(t,e){return new te(c.fromString(t,e).toArray())}static fromWif(t,e=1){const r=Rt(t,null,e);if(33!==r.data.length)throw new Error("Invalid WIF length");if(1!==r.data[32])throw new Error("Invalid WIF padding");return new te(r.data.slice(0,32))}constructor(t=0,e=10,r="be",i="apply"){if(t instanceof c?(super(),t.copy(this)):super(t,e,r),"nocheck"!==i){const t=this.checkInField();if(!t.inField){if("error"===i)throw new Error("Input is out of field");c.move(this,t.modN)}}}checkInField(){const t=new qt,e=this.mod(t.n);return{inField:0===this.cmp(e),modN:e}}isValid(){return this.checkInField().inField}sign(t,e,r=!0,i){const s=new c(wt(t,e),16);return $t(s,this,r,i)}verify(t,e,r){const i=new c(wt(t,r),16);return jt(i,e,this.toPublicKey())}toPublicKey(){const t=(new qt).g.mul(this);return new Xt(t.x,t.y)}toWif(t=[128]){if(!this.isValid())throw new Error("Value is out of field");return Bt([...this.toArray("be",32),1],t)}toAddress(t=[0]){return this.toPublicKey().toAddress(t)}deriveSharedSecret(t){if(!t.validate())throw new Error("Public key not valid for ECDH secret derivation");return t.mul(this)}deriveChild(t,e){const r=this.deriveSharedSecret(t),i=xt(e,"utf8"),s=Pt(r.encode(!0),i),n=new qt;return new te(this.add(new c(s)).mod(n.n).toArray())}toKeyShares(t,e){if("number"!=typeof t||"number"!=typeof e)throw new Error("threshold and totalShares must be numbers");if(t<2)throw new Error("threshold must be at least 2");if(e<2)throw new Error("totalShares must be at least 2");if(t>e)throw new Error("threshold should be less than or equal to totalShares");const r=Qt.fromPrivateKey(this,t),i=[];for(let t=0;t<e;t++){const t=new c(te.fromRandom().toArray()),e=r.valueAt(t);i.push(new Zt(t,e))}const s=this.toPublicKey().toHash("hex").slice(0,8);return new Jt(i,t,s)}toBackupShares(t,e){return this.toKeyShares(t,e).toBackupFormat()}static fromBackupShares(t){return te.fromKeyShares(Jt.fromBackupFormat(t))}static fromKeyShares(t){const{points:e,threshold:r,integrity:i}=t;if(r<2)throw new Error("threshold must be at least 2");if(e.length<r)throw new Error(`At least ${r} shares are required to reconstruct the private key`);for(let t=0;t<r;t++)for(let i=t+1;i<r;i++)if(e[t].x.eq(e[i].x))throw new Error("Duplicate share detected, each must be unique.");const s=new Qt(e,r),n=new te(s.valueAt(new c(0)).toArray());if(n.toPublicKey().toHash("hex").slice(0,8)!==i)throw new Error("Integrity hash mismatch");return n}}const ee=[[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118],[202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192],[183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21],[4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117],[9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132],[83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207],[208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168],[81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210],[205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115],[96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219],[224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121],[231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8],[186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138],[112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158],[225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223],[140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22]],re=[[0,0,0,0],[1,0,0,0],[2,0,0,0],[4,0,0,0],[8,0,0,0],[16,0,0,0],[32,0,0,0],[64,0,0,0],[128,0,0,0],[27,0,0,0],[54,0,0,0]];function ie(t,e,r){let i,s;for(i=0;i<4;i++)for(s=0;s<4;s++)t[i][s]=t[i][s]^e[r+s][i]}function se(t){let e,r;for(e=0;e<4;e++)for(r=0;r<4;r++)t[e][r]=ee[(240&t[e][r])>>4][15&t[e][r]]}function ne(t){let e;for(e=0;e<4;e++)t[e]=ee[(240&t[e])>>4][15&t[e]]}function ae(t){const e=t[0];t[0]=t[1],t[1]=t[2],t[2]=t[3],t[3]=e}function oe(t){let e,r,i,s,n;for(e=1;e<4;e++)for(r=0;r<(e-1)%2+1;r++){for(n=t[e][r],i=r;s=i+e,s>=4&&(s-=4),s!==r;)t[e][i]=t[e][s],i=s;t[e][i]=n}}function ce(t,e){let r,i=0;for(r=0;r<8;r++)1&e&&(i^=t),128&t?(t<<=1,t^=283):t<<=1,e>>=1;return i}function he(t){let e,r;const i=[[],[],[],[]];for(e=0;e<4;e++)i[0][e]=ce(2,t[0][e])^ce(3,t[1][e])^t[2][e]^t[3][e],i[1][e]=t[0][e]^ce(2,t[1][e])^ce(3,t[2][e])^t[3][e],i[2][e]=t[0][e]^t[1][e]^ce(2,t[2][e])^ce(3,t[3][e]),i[3][e]=ce(3,t[0][e])^t[1][e]^t[2][e]^ce(2,t[3][e]);for(e=0;e<4;e++)for(r=0;r<4;r++)t[e][r]=i[e][r]}function de(t,e){let r,i,s,n;const a=[[],[],[],[]],o=[],c=Array.from(e);if(c.length<=16){for(;c.length<16;)c.unshift(0);n=11}else if(c.length<=24){for(;c.length<24;)c.unshift(0);n=13}else{if(!(e.length<=32))throw new Error("Illegal key length: "+String(e.length));for(;c.length<32;)c.unshift(0);n=15}const h=function(t,e){let r,i;const s=parseInt(String(e.length/4)),n=[];for(r=0;r<e.length;r++)r%4==0&&n.push([]),n[parseInt(String(r/4))].push(e[r]);for(r=s;r<4*t;r++){n[r]=[];const t=n[r-1].slice();if(r%s==0)for(ae(t),ne(t),i=0;i<4;i++)t[i]=t[i]^re[parseInt(String(r/s))][i];else s>6&&r%s==4&&ne(t);for(i=0;i<4;i++)n[r][i]=n[r-s][i]^t[i]}return n}(n,c);for(r=0;r<15;r++)a[parseInt(String(r/4))].push(t[4*r%15]);for(a[3].push(t[15]),ie(a,h,0),s=1;s<n;s++)se(a),oe(a),s+1<n&&he(a),ie(a,h,4*s);for(r=0;r<4;r++)for(i=0;i<4;i++)o.push(a[i][r]);return o}const ue=function(t,e,r){return t[e]&1<<r?1:0},le=function(t){return[(4278190080&t)>>>24,(16711680&t)>>16,(65280&t)>>8,255&t]},fe=function(t){let e;const r=[];for(e=0;e<t;e++)r.push(0);return r},be=[225].concat(fe(15)),pe=function(t,e){let r;const i=[];for(r=0;r<t.length;r++)i[r]=t[r]^e[r];return i},me=function(t){let e,r=0,i=0;for(e=0;e<t.length;e++)i=r,r=1&t[e],t[e]=t[e]>>1,0!==i&&(t[e]=128|t[e]);return t},ge=function(t,e){let r,i,s=e.slice(),n=fe(16);for(r=0;r<16;r++)for(i=7;-1!==i;i--)0!==ue(t,r,i)&&(n=pe(n,s)),s=0!==ue(s,15,0)?pe(me(s),be):me(s);return n},we=function(t){let e;const r=t.slice();for(e=15;11!==e&&(r[e]=r[e]+1,256===r[e]);e--)r[e]=0;return r};function ye(t,e){let r,i=fe(16);for(r=0;r<t.length;r+=16)i=ge(pe(i,t.slice(r,Math.min(r+16,t.length))),e);return i}function ve(t,e,r){let i,s,n,a=e;const o=[];if(0===t.length)return t;const c=Math.ceil(t.length/16);for(i=0;i<c;i++){for(n=pe(t.slice(16*i,Math.min(16*(i+1),t.length)),de(a,r)),s=0;s<n.length;s++)o.push(n[s]);i+1<c&&(a=we(a))}return o}class ke extends c{static fromRandom(){return new ke(Yt(32))}encrypt(t,e){const r=Yt(32);t=xt(t,e);const{result:i,authenticationTag:s}=function(t,e,r,i){let s,n;const a=de(fe(16),i);s=[...r],12===r.length?s=s.concat(fe(3)).concat([1]):(r.length%16!=0&&(s=s.concat(fe(16-r.length%16))),s=s.concat(fe(8)),s=ye(s.concat(fe(4)).concat(le(8*r.length)),a));const o=ve(t,we(s),i);return n=e.slice(),0===e.length?n=n.concat(fe(16)):e.length%16!=0&&(n=n.concat(fe(16-e.length%16))),n=n.concat(o),0===o.length?n=n.concat(fe(16)):o.length%16!=0&&(n=n.concat(fe(16-o.length%16))),n=n.concat(fe(4)).concat(le(8*e.length)).concat(fe(4)).concat(le(8*o.length)),{result:o,authenticationTag:ve(ye(n,a),s,i)}}(t,[],r,this.toArray("be",32));return Mt([...r,...i,...s],e)}decrypt(t,e){const r=(t=xt(t,e)).slice(0,32),i=t.slice(32),s=i.slice(-16),n=function(t,e,r,i,s){let n,a;const o=de(fe(16),s);n=[...r],12===r.length?n=n.concat(fe(3)).concat([1]):(r.length%16!=0&&(n=n.concat(fe(16-r.length%16))),n=n.concat(fe(8)),n=ye(n.concat(fe(4)).concat(le(8*r.length)),o));const c=ve(t,we(n),s);return a=e.slice(),0===e.length?a=a.concat(fe(16)):e.length%16!=0&&(a=a.concat(fe(16-e.length%16))),a=a.concat(t),0===t.length?a=a.concat(fe(16)):t.length%16!=0&&(a=a.concat(fe(16-t.length%16))),a=a.concat(fe(4)).concat(le(8*e.length)).concat(fe(4)).concat(le(8*t.length)),ve(ye(a,o),n,s).join()!==i.join()?null:c}(i.slice(0,-16),[],r,s,this.toArray());if(null===n)throw new Error("Decryption failed!");return Mt(n,e)}}class Pe extends Vt{static SIGHASH_ALL=1;static SIGHASH_NONE=2;static SIGHASH_SINGLE=3;static SIGHASH_FORKID=64;static SIGHASH_ANYONECANPAY=128;scope;static format(t){const e={sourceTXID:t.sourceTXID,sourceOutputIndex:t.sourceOutputIndex,sequence:t.inputSequence},r=[...t.otherInputs];function i(e){const r=new Ut;if(void 0===e){let e;for(const i of t.outputs)r.writeUInt64LE(i.satoshis),e=i.lockingScript.toBinary(),r.writeVarIntNum(e.length),r.write(e)}else{const i=t.outputs[e];r.writeUInt64LE(i.satoshis);const s=i.lockingScript.toBinary();r.writeVarIntNum(s.length),r.write(s)}const i=r.toArray();return vt(i)}r.splice(t.inputIndex,0,e);let s=new Array(32).fill(0),n=new Array(32).fill(0),a=new Array(32).fill(0);t.scope&Pe.SIGHASH_ANYONECANPAY||(s=(()=>{const t=new Ut;for(const e of r)void 0===e.sourceTXID?t.write(e.sourceTransaction.hash()):t.writeReverse(xt(e.sourceTXID,"hex")),t.writeUInt32LE(e.sourceOutputIndex);const e=t.toArray();return vt(e)})()),t.scope&Pe.SIGHASH_ANYONECANPAY||(31&t.scope)===Pe.SIGHASH_SINGLE||(31&t.scope)===Pe.SIGHASH_NONE||(n=(()=>{const t=new Ut;for(const e of r)t.writeUInt32LE(e.sequence);const e=t.toArray();return vt(e)})()),(31&t.scope)!==Pe.SIGHASH_SINGLE&&(31&t.scope)!==Pe.SIGHASH_NONE?a=i():(31&t.scope)===Pe.SIGHASH_SINGLE&&t.inputIndex<t.outputs.length&&(a=i(t.inputIndex));const o=new Ut;o.writeInt32LE(t.transactionVersion),o.write(s),o.write(n),o.writeReverse(xt(t.sourceTXID,"hex")),o.writeUInt32LE(t.sourceOutputIndex);const c=t.subscript.toBinary();o.writeVarIntNum(c.length),o.write(c),o.writeUInt64LE(t.sourceSatoshis);const h=e.sequence;return o.writeUInt32LE(h),o.write(a),o.writeUInt32LE(t.lockTime),o.writeUInt32LE(t.scope>>>0),o.toArray()}static fromChecksigFormat(t){if(0===t.length){const t=new c(1),e=new c(1);return new Pe(t,e,1)}const e=t[t.length-1],r=t.slice(0,t.length-1),i=Vt.fromDER(r);return new Pe(i.r,i.s,e)}constructor(t,e,r){super(t,e),this.scope=r}hasLowS(){return!this.s.ltn(1)&&!this.s.gt(new c("7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0","hex"))}toChecksigFormat(){return[...this.toDER(),this.scope]}}class Oe{curve;constructor(){this.curve=new qt}generateProof(t,e,r,i){const s=te.fromRandom(),n=s.toPublicKey(),a=r.mul(s),o=this.computeChallenge(e,r,i,a,n);return{R:n,SPrime:a,z:s.add(o.mul(t)).umod(this.curve.n)}}verifyProof(t,e,r,i){const{R:s,SPrime:n,z:a}=i,o=this.computeChallenge(t,e,r,n,s),c=this.curve.g.mul(a),h=s.add(t.mul(o));if(!c.eq(h))return!1;const d=e.mul(a),u=n.add(r.mul(o));return!!d.eq(u)}computeChallenge(t,e,r,i,s){const n=[...t.encode(!0),...e.encode(!0),...r.encode(!0),...i.encode(!0),...s.encode(!0)],a=wt(n);return new c(a).umod(this.curve.n)}}const Ee={OP_FALSE:0,OP_0:0,OP_PUSHDATA1:76,OP_PUSHDATA2:77,OP_PUSHDATA4:78,OP_1NEGATE:79,OP_RESERVED:80,OP_TRUE:81,OP_1:81,OP_2:82,OP_3:83,OP_4:84,OP_5:85,OP_6:86,OP_7:87,OP_8:88,OP_9:89,OP_10:90,OP_11:91,OP_12:92,OP_13:93,OP_14:94,OP_15:95,OP_16:96,OP_NOP:97,OP_VER:98,OP_IF:99,OP_NOTIF:100,OP_VERIF:101,OP_VERNOTIF:102,OP_ELSE:103,OP_ENDIF:104,OP_VERIFY:105,OP_RETURN:106,OP_TOALTSTACK:107,OP_FROMALTSTACK:108,OP_2DROP:109,OP_2DUP:110,OP_3DUP:111,OP_2OVER:112,OP_2ROT:113,OP_2SWAP:114,OP_IFDUP:115,OP_DEPTH:116,OP_DROP:117,OP_DUP:118,OP_NIP:119,OP_OVER:120,OP_PICK:121,OP_ROLL:122,OP_ROT:123,OP_SWAP:124,OP_TUCK:125,OP_CAT:126,OP_SUBSTR:127,OP_SPLIT:127,OP_LEFT:128,OP_NUM2BIN:128,OP_RIGHT:129,OP_BIN2NUM:129,OP_SIZE:130,OP_INVERT:131,OP_AND:132,OP_OR:133,OP_XOR:134,OP_EQUAL:135,OP_EQUALVERIFY:136,OP_RESERVED1:137,OP_RESERVED2:138,OP_1ADD:139,OP_1SUB:140,OP_2MUL:141,OP_2DIV:142,OP_NEGATE:143,OP_ABS:144,OP_NOT:145,OP_0NOTEQUAL:146,OP_ADD:147,OP_SUB:148,OP_MUL:149,OP_DIV:150,OP_MOD:151,OP_LSHIFT:152,OP_RSHIFT:153,OP_BOOLAND:154,OP_BOOLOR:155,OP_NUMEQUAL:156,OP_NUMEQUALVERIFY:157,OP_NUMNOTEQUAL:158,OP_LESSTHAN:159,OP_GREATERTHAN:160,OP_LESSTHANOREQUAL:161,OP_GREATERTHANOREQUAL:162,OP_MIN:163,OP_MAX:164,OP_WITHIN:165,OP_RIPEMD160:166,OP_SHA1:167,OP_SHA256:168,OP_HASH160:169,OP_HASH256:170,OP_CODESEPARATOR:171,OP_CHECKSIG:172,OP_CHECKSIGVERIFY:173,OP_CHECKMULTISIG:174,OP_CHECKMULTISIGVERIFY:175,OP_NOP1:176,OP_NOP2:177,OP_NOP3:178,OP_NOP4:179,OP_NOP5:180,OP_NOP6:181,OP_NOP7:182,OP_NOP8:183,OP_NOP9:184,OP_NOP10:185,OP_NOP11:186,OP_NOP12:187,OP_NOP13:188,OP_NOP14:189,OP_NOP15:190,OP_NOP16:191,OP_NOP17:192,OP_NOP18:193,OP_NOP19:194,OP_NOP20:195,OP_NOP21:196,OP_NOP22:197,OP_NOP23:198,OP_NOP24:199,OP_NOP25:200,OP_NOP26:201,OP_NOP27:202,OP_NOP28:203,OP_NOP29:204,OP_NOP30:205,OP_NOP31:206,OP_NOP32:207,OP_NOP33:208,OP_NOP34:209,OP_NOP35:210,OP_NOP36:211,OP_NOP37:212,OP_NOP38:213,OP_NOP39:214,OP_NOP40:215,OP_NOP41:216,OP_NOP42:217,OP_NOP43:218,OP_NOP44:219,OP_NOP45:220,OP_NOP46:221,OP_NOP47:222,OP_NOP48:223,OP_NOP49:224,OP_NOP50:225,OP_NOP51:226,OP_NOP52:227,OP_NOP53:228,OP_NOP54:229,OP_NOP55:230,OP_NOP56:231,OP_NOP57:232,OP_NOP58:233,OP_NOP59:234,OP_NOP60:235,OP_NOP61:236,OP_NOP62:237,OP_NOP63:238,OP_NOP64:239,OP_NOP65:240,OP_NOP66:241,OP_NOP67:242,OP_NOP68:243,OP_NOP69:244,OP_NOP70:245,OP_NOP71:246,OP_NOP72:247,OP_NOP73:248,OP_NOP77:252,OP_SMALLDATA:249,OP_SMALLINTEGER:250,OP_PUBKEYS:251,OP_PUBKEYHASH:253,OP_PUBKEY:254,OP_INVALIDOPCODE:255};for(const t in Ee)Ee[Ee[t]]=t;const Ie=Ee;class _e{chunks;static fromASM(t){const e=[],r=t.split(" ");let i=0;for(;i<r.length;){const t=r[i];let s,n;if(t.startsWith("OP_")&&void 0!==Ie[t]&&(s=t,n=Ie[t]),"0"===t)n=0,e.push({op:n}),i+=1;else if("-1"===t)n=Ie.OP_1NEGATE,e.push({op:n}),i+=1;else if(void 0===s){let t=r[i];t.length%2!=0&&(t="0"+t);const s=xt(t,"hex");if(Mt(s,"hex")!==t)throw new Error("invalid hex string in script");const a=s.length;a>=0&&a<Ie.OP_PUSHDATA1?n=a:a<Math.pow(2,8)?n=Ie.OP_PUSHDATA1:a<Math.pow(2,16)?n=Ie.OP_PUSHDATA2:a<Math.pow(2,32)&&(n=Ie.OP_PUSHDATA4),e.push({data:s,op:n}),i+=1}else n===Ie.OP_PUSHDATA1||n===Ie.OP_PUSHDATA2||n===Ie.OP_PUSHDATA4?(e.push({data:xt(r[i+2],"hex"),op:n}),i+=3):(e.push({op:n}),i+=1)}return new _e(e)}static fromHex(t){if(0===t.length)return _e.fromBinary([]);if(t.length%2!=0)throw new Error("There is an uneven number of characters in the string which suggests it is not hex encoded.");if(!/^[0-9a-fA-F]+$/.test(t))throw new Error("Some elements in this string are not hex encoded.");return _e.fromBinary(xt(t,"hex"))}static fromBinary(t){t=[...t];const e=[],r=new Ht(t);for(;!r.eof();){const t=r.readUInt8();let i=0,s=[];if(t>0&&t<Ie.OP_PUSHDATA1)i=t,e.push({data:r.read(i),op:t});else if(t===Ie.OP_PUSHDATA1){try{i=r.readUInt8(),s=r.read(i)}catch(t){r.read()}e.push({data:s,op:t})}else if(t===Ie.OP_PUSHDATA2){try{i=r.readUInt16LE(),s=r.read(i)}catch(t){r.read()}e.push({data:s,op:t})}else if(t===Ie.OP_PUSHDATA4){try{i=r.readUInt32LE(),s=r.read(i)}catch(t){r.read()}e.push({data:s,op:t})}else e.push({op:t})}return new _e(e)}constructor(t=[]){this.chunks=t}toASM(){let t="";for(let e=0;e<this.chunks.length;e++){const r=this.chunks[e];t+=this._chunkToString(r)}return t.slice(1)}toHex(){return Mt(this.toBinary(),"hex")}toBinary(){const t=new Ut;for(let e=0;e<this.chunks.length;e++){const r=this.chunks[e],i=r.op;t.writeUInt8(i),r.data&&(i<Ie.OP_PUSHDATA1?t.write(r.data):i===Ie.OP_PUSHDATA1?(t.writeUInt8(r.data.length),t.write(r.data)):i===Ie.OP_PUSHDATA2?(t.writeUInt16LE(r.data.length),t.write(r.data)):i===Ie.OP_PUSHDATA4&&(t.writeUInt32LE(r.data.length),t.write(r.data)))}return t.toArray()}writeScript(t){return this.chunks=this.chunks.concat(t.chunks),this}writeOpCode(t){return this.chunks.push({op:t}),this}setChunkOpCode(t,e){return this.chunks[t]={op:e},this}writeBn(t){if(t.cmpn(0)===Ie.OP_0)this.chunks.push({op:Ie.OP_0});else if(0===t.cmpn(-1))this.chunks.push({op:Ie.OP_1NEGATE});else if(t.cmpn(1)>=0&&t.cmpn(16)<=0)this.chunks.push({op:t.toNumber()+Ie.OP_1-1});else{const e=t.toSm("little");this.writeBin(e)}return this}writeBin(t){let e;if(t.length>0&&t.length<Ie.OP_PUSHDATA1)e=t.length;else if(0===t.length)e=Ie.OP_0;else if(t.length<Math.pow(2,8))e=Ie.OP_PUSHDATA1;else if(t.length<Math.pow(2,16))e=Ie.OP_PUSHDATA2;else{if(!(t.length<Math.pow(2,32)))throw new Error("You can't push that much data");e=Ie.OP_PUSHDATA4}return this.chunks.push({data:t,op:e}),this}writeNumber(t){return this.writeBn(new c(t)),this}removeCodeseparators(){const t=[];for(let e=0;e<this.chunks.length;e++)this.chunks[e].op!==Ie.OP_CODESEPARATOR&&t.push(this.chunks[e]);return this.chunks=t,this}findAndDelete(t){const e=t.toHex();for(let t=0;t<this.chunks.length;t++)e===new _e([this.chunks[t]]).toHex()&&this.chunks.splice(t,1);return this}isPushOnly(){for(let t=0;t<this.chunks.length;t++)if(this.chunks[t].op>Ie.OP_16)return!1;return!0}isLockingScript(){throw new Error("Not implemented")}isUnlockingScript(){throw new Error("Not implemented")}_chunkToString(t){const e=t.op;let r="";return r=void 0===t.data?`${r} ${Ie[e]}`:`${r} ${_t(t.data)}`,r}}class xe extends _e{isLockingScript(){return!0}isUnlockingScript(){return!1}}class Se extends _e{isLockingScript(){return!1}isUnlockingScript(){return!0}}const Me=1073741824,Ae=Math.pow(2,31)-1,Fe=!0;class Ne{sourceTXID;sourceOutputIndex;sourceSatoshis;lockingScript;transactionVersion;otherInputs;outputs;inputIndex;unlockingScript;inputSequence;lockTime;context;programCounter;lastCodeSeparator;stack;altStack;ifStack;constructor(t){this.sourceTXID=t.sourceTXID,this.sourceOutputIndex=t.sourceOutputIndex,this.sourceSatoshis=t.sourceSatoshis,this.lockingScript=t.lockingScript,this.transactionVersion=t.transactionVersion,this.otherInputs=t.otherInputs,this.outputs=t.outputs,this.inputIndex=t.inputIndex,this.unlockingScript=t.unlockingScript,this.inputSequence=t.inputSequence,this.lockTime=t.lockTime,this.reset()}reset(){this.context="UnlockingScript",this.programCounter=0,this.lastCodeSeparator=null,this.stack=[],this.altStack=[],this.ifStack=[]}step(){let t;"UnlockingScript"===this.context&&this.programCounter>=this.unlockingScript.chunks.length&&(this.context="LockingScript",this.programCounter=0),t="UnlockingScript"===this.context?this.unlockingScript.chunks[this.programCounter]:this.lockingScript.chunks[this.programCounter];const e=t=>{if(0===t.length)return!0;(t=>{if(t.length<9)return!1;if(t.length>73)return!1;if(48!==t[0])return!1;if(t[1]!==t.length-3)return!1;const e=t[3];if(5+e>=t.length)return!1;const r=t[5+e];if(e+r+7!==t.length)return!1;const i=t.slice(4);if(2!==t[2])return!1;if(0===e)return!1;if(128&i[0])return!1;if(e>1&&0===i[0]&&!(128&i[1]))return!1;const s=t.slice(6+e);return!(2!==t[6+e-2]||0===r||128&s[0]||r>1&&0===s[0]&&!(128&s[1]))})(t)||this.scriptEvaluationError("The signature format is invalid.");const e=Pe.fromChecksigFormat(t);return e.hasLowS()||this.scriptEvaluationError("The signature must have a low S value."),!!(e.scope&Pe.SIGHASH_FORKID)||(this.scriptEvaluationError("The signature must use SIGHASH_FORKID."),!1)},r=t=>(t.length<33&&this.scriptEvaluationError("The public key is too short, it must be at least 33 bytes."),4===t[0]?65!==t.length&&this.scriptEvaluationError("The non-compressed public key must be 65 bytes."):2===t[0]||3===t[0]?33!==t.length&&this.scriptEvaluationError("The compressed public key must be 33 bytes."):this.scriptEvaluationError("The public key is in an unknown format."),!0),i=(t,e,r)=>{const i=Pe.format({sourceTXID:this.sourceTXID,sourceOutputIndex:this.sourceOutputIndex,sourceSatoshis:this.sourceSatoshis,transactionVersion:this.transactionVersion,otherInputs:this.otherInputs,outputs:this.outputs,inputIndex:this.inputIndex,subscript:r,inputSequence:this.inputSequence,lockTime:this.lockTime,scope:t.scope}),s=new c(vt(i));return jt(s,t,e)},s=!this.ifStack.includes(!1);let n,a,o,h,d,u,l,f,b,p,m,g,w,y,v,k,P,O,E,I,_,x,S,M,A,F,N,T,B,R,U,H,L;const D=t.op;var C;if(void 0===D&&this.scriptEvaluationError(`An opcode is missing in this chunk of the ${this.context}!`),Array.isArray(t.data)&&t.data.length>Me&&this.scriptEvaluationError("It's not currently possible to push data larger than 1073741824 bytes."),s&&((C=D)===Ie.OP_2MUL||C===Ie.OP_2DIV||C===Ie.OP_VERIF||C===Ie.OP_VERNOTIF||C===Ie.OP_VER)&&this.scriptEvaluationError("This opcode is currently disabled."),s&&D>=0&&D<=Ie.OP_PUSHDATA4)(t=>{const e=t.data,r=t.op;return!(Array.isArray(e)&&(0===e.length?r!==Ie.OP_0:1===e.length&&e[0]>=1&&e[0]<=16?r!==Ie.OP_1+(e[0]-1):1===e.length&&129===e[0]?r!==Ie.OP_1NEGATE:e.length<=75?r!==e.length:e.length<=255?r!==Ie.OP_PUSHDATA1:e.length<=65535&&r!==Ie.OP_PUSHDATA2))})(t)||this.scriptEvaluationError("This data is not minimally-encoded."),Array.isArray(t.data)?this.stack.push(t.data):this.stack.push([]);else if(s||Ie.OP_IF<=D&&D<=Ie.OP_ENDIF)switch(D){case Ie.OP_1NEGATE:case Ie.OP_1:case Ie.OP_2:case Ie.OP_3:case Ie.OP_4:case Ie.OP_5:case Ie.OP_6:case Ie.OP_7:case Ie.OP_8:case Ie.OP_9:case Ie.OP_10:case Ie.OP_11:case Ie.OP_12:case Ie.OP_13:case Ie.OP_14:case Ie.OP_15:case Ie.OP_16:u=D-(Ie.OP_1-1),n=new c(u).toScriptNum(),this.stack.push(n);break;case Ie.OP_NOP:case Ie.OP_NOP2:case Ie.OP_NOP3:case Ie.OP_NOP1:case Ie.OP_NOP4:case Ie.OP_NOP5:case Ie.OP_NOP6:case Ie.OP_NOP7:case Ie.OP_NOP8:case Ie.OP_NOP9:case Ie.OP_NOP10:case Ie.OP_NOP11:case Ie.OP_NOP12:case Ie.OP_NOP13:case Ie.OP_NOP14:case Ie.OP_NOP15:case Ie.OP_NOP16:case Ie.OP_NOP17:case Ie.OP_NOP18:case Ie.OP_NOP19:case Ie.OP_NOP20:case Ie.OP_NOP21:case Ie.OP_NOP22:case Ie.OP_NOP23:case Ie.OP_NOP24:case Ie.OP_NOP25:case Ie.OP_NOP26:case Ie.OP_NOP27:case Ie.OP_NOP28:case Ie.OP_NOP29:case Ie.OP_NOP30:case Ie.OP_NOP31:case Ie.OP_NOP32:case Ie.OP_NOP33:case Ie.OP_NOP34:case Ie.OP_NOP35:case Ie.OP_NOP36:case Ie.OP_NOP37:case Ie.OP_NOP38:case Ie.OP_NOP39:case Ie.OP_NOP40:case Ie.OP_NOP41:case Ie.OP_NOP42:case Ie.OP_NOP43:case Ie.OP_NOP44:case Ie.OP_NOP45:case Ie.OP_NOP46:case Ie.OP_NOP47:case Ie.OP_NOP48:case Ie.OP_NOP49:case Ie.OP_NOP50:case Ie.OP_NOP51:case Ie.OP_NOP52:case Ie.OP_NOP53:case Ie.OP_NOP54:case Ie.OP_NOP55:case Ie.OP_NOP56:case Ie.OP_NOP57:case Ie.OP_NOP58:case Ie.OP_NOP59:case Ie.OP_NOP60:case Ie.OP_NOP61:case Ie.OP_NOP62:case Ie.OP_NOP63:case Ie.OP_NOP64:case Ie.OP_NOP65:case Ie.OP_NOP66:case Ie.OP_NOP67:case Ie.OP_NOP68:case Ie.OP_NOP69:case Ie.OP_NOP70:case Ie.OP_NOP71:case Ie.OP_NOP72:case Ie.OP_NOP73:case Ie.OP_NOP77:break;case Ie.OP_IF:case Ie.OP_NOTIF:U=!1,s&&(this.stack.length<1&&this.scriptEvaluationError("OP_IF and OP_NOTIF require at least one item on the stack when they are used!"),n=this.stacktop(-1),U=this.castToBool(n),D===Ie.OP_NOTIF&&(U=!U),this.stack.pop()),this.ifStack.push(U);break;case Ie.OP_ELSE:0===this.ifStack.length&&this.scriptEvaluationError("OP_ELSE requires a preceeding OP_IF."),this.ifStack[this.ifStack.length-1]=!this.ifStack[this.ifStack.length-1];break;case Ie.OP_ENDIF:0===this.ifStack.length&&this.scriptEvaluationError("OP_ENDIF requires a preceeding OP_IF."),this.ifStack.pop();break;case Ie.OP_VERIFY:this.stack.length<1&&this.scriptEvaluationError("OP_VERIFY requires at least one item to be on the stack."),n=this.stacktop(-1),U=this.castToBool(n),U?this.stack.pop():this.scriptEvaluationError("OP_VERIFY requires the top stack value to be truthy.");break;case Ie.OP_RETURN:"UnlockingScript"===this.context?this.programCounter=this.unlockingScript.chunks.length:this.programCounter=this.lockingScript.chunks.length,this.ifStack=[];break;case Ie.OP_TOALTSTACK:this.stack.length<1&&this.scriptEvaluationError("OP_TOALTSTACK requires at oeast one item to be on the stack."),this.altStack.push(this.stack.pop());break;case Ie.OP_FROMALTSTACK:this.altStack.length<1&&this.scriptEvaluationError("OP_FROMALTSTACK requires at least one item to be on the stack."),this.stack.push(this.altStack.pop());break;case Ie.OP_2DROP:this.stack.length<2&&this.scriptEvaluationError("OP_2DROP requires at least two items to be on the stack."),this.stack.pop(),this.stack.pop();break;case Ie.OP_2DUP:this.stack.length<2&&this.scriptEvaluationError("OP_2DUP requires at least two items to be on the stack."),a=this.stacktop(-2),o=this.stacktop(-1),this.stack.push([...a]),this.stack.push([...o]);break;case Ie.OP_3DUP:this.stack.length<3&&this.scriptEvaluationError("OP_3DUP requires at least three items to be on the stack."),a=this.stacktop(-3),o=this.stacktop(-2),h=this.stacktop(-1),this.stack.push([...a]),this.stack.push([...o]),this.stack.push([...h]);break;case Ie.OP_2OVER:this.stack.length<4&&this.scriptEvaluationError("OP_2OVER requires at least four items to be on the stack."),a=this.stacktop(-4),o=this.stacktop(-3),this.stack.push([...a]),this.stack.push([...o]);break;case Ie.OP_2ROT:this.stack.length<6&&this.scriptEvaluationError("OP_2ROT requires at least six items to be on the stack."),d=this.stack.splice(this.stack.length-6,2),this.stack.push(d[0]),this.stack.push(d[1]);break;case Ie.OP_2SWAP:this.stack.length<4&&this.scriptEvaluationError("OP_2SWAP requires at least four items to be on the stack."),d=this.stack.splice(this.stack.length-4,2),this.stack.push(d[0]),this.stack.push(d[1]);break;case Ie.OP_IFDUP:this.stack.length<1&&this.scriptEvaluationError("OP_IFDUP requires at least one item to be on the stack."),n=this.stacktop(-1),U=this.castToBool(n),U&&this.stack.push([...n]);break;case Ie.OP_DEPTH:n=new c(this.stack.length).toScriptNum(),this.stack.push(n);break;case Ie.OP_DROP:this.stack.length<1&&this.scriptEvaluationError("OP_DROP requires at least one item to be on the stack."),this.stack.pop();break;case Ie.OP_DUP:this.stack.length<1&&this.scriptEvaluationError("OP_DUP requires at least one item to be on the stack."),this.stack.push([...this.stacktop(-1)]);break;case Ie.OP_NIP:this.stack.length<2&&this.scriptEvaluationError("OP_NIP requires at least two items to be on the stack."),this.stack.splice(this.stack.length-2,1);break;case Ie.OP_OVER:this.stack.length<2&&this.scriptEvaluationError("OP_OVER requires at least two items to be on the stack."),this.stack.push([...this.stacktop(-2)]);break;case Ie.OP_PICK:case Ie.OP_ROLL:this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),n=this.stacktop(-1),y=c.fromScriptNum(n,Fe),u=y.toNumber(),this.stack.pop(),(u<0||u>=this.stack.length)&&this.scriptEvaluationError(`${Ie[D]} requires the top stack element to be 0 or a positive number less than the current size of the stack.`),n=this.stacktop(-u-1),D===Ie.OP_ROLL&&this.stack.splice(this.stack.length-u-1,1),this.stack.push([...n]);break;case Ie.OP_ROT:this.stack.length<3&&this.scriptEvaluationError("OP_ROT requires at least three items to be on the stack."),m=this.stacktop(-3),g=this.stacktop(-2),w=this.stacktop(-1),this.stack[this.stack.length-3]=g,this.stack[this.stack.length-2]=w,this.stack[this.stack.length-1]=m;break;case Ie.OP_SWAP:this.stack.length<2&&this.scriptEvaluationError("OP_SWAP requires at least two items to be on the stack."),m=this.stacktop(-2),g=this.stacktop(-1),this.stack[this.stack.length-2]=g,this.stack[this.stack.length-1]=m;break;case Ie.OP_TUCK:this.stack.length<2&&this.scriptEvaluationError("OP_TUCK requires at least two items to be on the stack."),this.stack.splice(this.stack.length-2,0,[...this.stacktop(-1)]);break;case Ie.OP_SIZE:this.stack.length<1&&this.scriptEvaluationError("OP_SIZE requires at least one item to be on the stack."),y=new c(this.stacktop(-1).length),this.stack.push(y.toScriptNum());break;case Ie.OP_AND:case Ie.OP_OR:case Ie.OP_XOR:switch(this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least one item to be on the stack.`),a=this.stacktop(-2),o=this.stacktop(-1),a.length!==o.length&&this.scriptEvaluationError(`${Ie[D]} requires the top two stack items to be the same size.`),D){case Ie.OP_AND:for(let t=0;t<a.length;t++)a[t]&=o[t];break;case Ie.OP_OR:for(let t=0;t<a.length;t++)a[t]|=o[t];break;case Ie.OP_XOR:for(let t=0;t<a.length;t++)a[t]^=o[t]}this.stack.pop();break;case Ie.OP_INVERT:this.stack.length<1&&this.scriptEvaluationError("OP_INVERT requires at least one item to be on the stack."),n=this.stacktop(-1);for(let t=0;t<n.length;t++)n[t]=~n[t];break;case Ie.OP_LSHIFT:case Ie.OP_RSHIFT:if(this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),a=this.stacktop(-2),0===a.length)this.stack.pop();else{let t;v=new c(a),k=c.fromScriptNum(this.stacktop(-1),Fe),u=k.toNumber(),u<0&&this.scriptEvaluationError(`${Ie[D]} requires the top item on the stack not to be negative.`),this.stack.pop(),this.stack.pop(),D===Ie.OP_LSHIFT&&(t=v.ushln(u)),D===Ie.OP_RSHIFT&&(t=v.ushrn(u));const e=((t,e)=>{const r=t;for(;r.length<e;)r.unshift(0);return r})(t.toArray().slice(-1*a.length),a.length);this.stack.push(e)}break;case Ie.OP_EQUAL:case Ie.OP_EQUALVERIFY:this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),a=this.stacktop(-2),o=this.stacktop(-1),H=_t(a)===_t(o),this.stack.pop(),this.stack.pop(),this.stack.push(H?[1]:[]),D===Ie.OP_EQUALVERIFY&&(H?this.stack.pop():this.scriptEvaluationError("OP_EQUALVERIFY requires the top two stack items to be equal."));break;case Ie.OP_1ADD:case Ie.OP_1SUB:case Ie.OP_NEGATE:case Ie.OP_ABS:case Ie.OP_NOT:case Ie.OP_0NOTEQUAL:switch(this.stack.length<1&&this.scriptEvaluationError(`${Ie[D]} requires at least one items to be on the stack.`),n=this.stacktop(-1),y=c.fromScriptNum(n,Fe),D){case Ie.OP_1ADD:y=y.addn(1);break;case Ie.OP_1SUB:y=y.subn(1);break;case Ie.OP_NEGATE:y=y.neg();break;case Ie.OP_ABS:y.cmpn(0)<0&&(y=y.neg());break;case Ie.OP_NOT:y=new c(0===y.cmpn(0)?1:0);break;case Ie.OP_0NOTEQUAL:y=new c(0!==y.cmpn(0)?1:0)}this.stack.pop(),this.stack.push(y.toScriptNum());break;case Ie.OP_ADD:case Ie.OP_SUB:case Ie.OP_MUL:case Ie.OP_MOD:case Ie.OP_DIV:case Ie.OP_BOOLAND:case Ie.OP_BOOLOR:case Ie.OP_NUMEQUAL:case Ie.OP_NUMEQUALVERIFY:case Ie.OP_NUMNOTEQUAL:case Ie.OP_LESSTHAN:case Ie.OP_GREATERTHAN:case Ie.OP_LESSTHANOREQUAL:case Ie.OP_GREATERTHANOREQUAL:case Ie.OP_MIN:case Ie.OP_MAX:switch(this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),v=c.fromScriptNum(this.stacktop(-2),Fe),k=c.fromScriptNum(this.stacktop(-1),Fe),y=new c(0),D){case Ie.OP_ADD:y=v.add(k);break;case Ie.OP_SUB:y=v.sub(k);break;case Ie.OP_MUL:y=v.mul(k);break;case Ie.OP_DIV:0===k.cmpn(0)&&this.scriptEvaluationError("OP_DIV cannot divide by zero!"),y=v.div(k);break;case Ie.OP_MOD:0===k.cmpn(0)&&this.scriptEvaluationError("OP_MOD cannot divide by zero!"),y=v.mod(k);break;case Ie.OP_BOOLAND:y=new c(0!==v.cmpn(0)&&0!==k.cmpn(0)?1:0);break;case Ie.OP_BOOLOR:y=new c(0!==v.cmpn(0)||0!==k.cmpn(0)?1:0);break;case Ie.OP_NUMEQUAL:case Ie.OP_NUMEQUALVERIFY:y=new c(0===v.cmp(k)?1:0);break;case Ie.OP_NUMNOTEQUAL:y=new c(0!==v.cmp(k)?1:0);break;case Ie.OP_LESSTHAN:y=new c(v.cmp(k)<0?1:0);break;case Ie.OP_GREATERTHAN:y=new c(v.cmp(k)>0?1:0);break;case Ie.OP_LESSTHANOREQUAL:y=new c(v.cmp(k)<=0?1:0);break;case Ie.OP_GREATERTHANOREQUAL:y=new c(v.cmp(k)>=0?1:0);break;case Ie.OP_MIN:y=v.cmp(k)<0?v:k;break;case Ie.OP_MAX:y=v.cmp(k)>0?v:k}this.stack.pop(),this.stack.pop(),this.stack.push(y.toScriptNum()),D===Ie.OP_NUMEQUALVERIFY&&(this.castToBool(this.stacktop(-1))?this.stack.pop():this.scriptEvaluationError("OP_NUMEQUALVERIFY requires the top stack item to be truthy."));break;case Ie.OP_WITHIN:this.stack.length<3&&this.scriptEvaluationError("OP_WITHIN requires at least three items to be on the stack."),v=c.fromScriptNum(this.stacktop(-3),Fe),k=c.fromScriptNum(this.stacktop(-2),Fe),P=c.fromScriptNum(this.stacktop(-1),Fe),U=k.cmp(v)<=0&&v.cmp(P)<0,this.stack.pop(),this.stack.pop(),this.stack.pop(),this.stack.push(U?[1]:[]);break;case Ie.OP_RIPEMD160:case Ie.OP_SHA1:case Ie.OP_SHA256:case Ie.OP_HASH160:case Ie.OP_HASH256:this.stack.length<1&&this.scriptEvaluationError(`${Ie[D]} requires at least one item to be on the stack.`),n=this.stacktop(-1),D===Ie.OP_RIPEMD160?_=mt(n):D===Ie.OP_SHA1?_=gt(n):D===Ie.OP_SHA256?_=wt(n):D===Ie.OP_HASH160?_=kt(n):D===Ie.OP_HASH256&&(_=vt(n)),this.stack.pop(),this.stack.push(_);break;case Ie.OP_CODESEPARATOR:this.lastCodeSeparator=this.programCounter;break;case Ie.OP_CHECKSIG:case Ie.OP_CHECKSIGVERIFY:this.stack.length<2&&this.scriptEvaluationError(`${Ie[D]} requires at least two items to be on the stack.`),O=this.stacktop(-2),E=this.stacktop(-1),e(O)&&r(E)||this.scriptEvaluationError(`${Ie[D]} requires correct encoding for the public key and signature.`),I="UnlockingScript"===this.context?new _e(this.unlockingScript.chunks.slice(this.lastCodeSeparator)):new _e(this.lockingScript.chunks.slice(this.lastCodeSeparator)),I.findAndDelete((new _e).writeBin(O));try{x=Pe.fromChecksigFormat(O),S=Xt.fromDER(E),L=i(x,S,I)}catch(t){L=!1}!L&&O.length>0&&this.scriptEvaluationError(`${Ie[D]} failed to verify the signature, and requires an empty signature when verification fails.`),this.stack.pop(),this.stack.pop(),this.stack.push(L?[1]:[]),D===Ie.OP_CHECKSIGVERIFY&&(L?this.stack.pop():this.scriptEvaluationError("OP_CHECKSIGVERIFY requires that a valid signature is provided."));break;case Ie.OP_CHECKMULTISIG:case Ie.OP_CHECKMULTISIGVERIFY:M=1,this.stack.length<M&&this.scriptEvaluationError(`${Ie[D]} requires at least 1 item to be on the stack.`),F=c.fromScriptNum(this.stacktop(-M),Fe).toNumber(),(F<0||F>Ae)&&this.scriptEvaluationError(`${Ie[D]} requires a key count between 0 and ${Ae}.`),N=++M,M+=F,T=F+2,this.stack.length<M&&this.scriptEvaluationError(`${Ie[D]} requires the number of stack items not to be less than the number of keys used.`),B=c.fromScriptNum(this.stacktop(-M),Fe).toNumber(),(B<0||B>F)&&this.scriptEvaluationError(`${Ie[D]} requires the number of signatures to be no greater than the number of keys.`),R=++M,M+=B,this.stack.length<M&&this.scriptEvaluationError(`${Ie[D]} requires the number of stack items not to be less than the number of signatures provided.`),I="UnlockingScript"===this.context?new _e(this.unlockingScript.chunks.slice(this.lastCodeSeparator)):new _e(this.lockingScript.chunks.slice(this.lastCodeSeparator));for(let t=0;t<B;t++)O=this.stacktop(-R-t),I.findAndDelete((new _e).writeBin(O));for(L=!0;L&&B>0;){O=this.stacktop(-R),E=this.stacktop(-N),e(O)&&r(E)||this.scriptEvaluationError(`${Ie[D]} requires correct encoding for the public key and signature.`);try{x=Pe.fromChecksigFormat(O),S=Xt.fromString(_t(E)),A=i(x,S,I)}catch(t){A=!1}A&&(R++,B--),N++,F--,B>F&&(L=!1)}for(;M-- >1;)!L&&!T&&this.stacktop(-1).length>0&&this.scriptEvaluationError(`${Ie[D]} failed to verify a signature, and requires an empty signature when verification fails.`),T>0&&T--,this.stack.pop();this.stack.length<1&&this.scriptEvaluationError(`${Ie[D]} requires an extra item to be on the stack.`),this.stacktop(-1).length>0&&this.scriptEvaluationError(`${Ie[D]} requires the extra stack item to be empty.`),this.stack.pop(),this.stack.push(L?[1]:[]),D===Ie.OP_CHECKMULTISIGVERIFY&&(L?this.stack.pop():this.scriptEvaluationError("OP_CHECKMULTISIGVERIFY requires that a sufficient number of valid signatures are provided."));break;case Ie.OP_CAT:this.stack.length<2&&this.scriptEvaluationError("OP_CAT requires at least two items to be on the stack."),a=this.stacktop(-2),o=this.stacktop(-1),a.length+o.length>Me&&this.scriptEvaluationError("It's not currently possible to push data larger than 1073741824 bytes."),this.stack[this.stack.length-2]=[...a,...o],this.stack.pop();break;case Ie.OP_SPLIT:this.stack.length<2&&this.scriptEvaluationError("OP_SPLIT requires at least two items to be on the stack."),a=this.stacktop(-2),u=c.fromScriptNum(this.stacktop(-1),Fe).toNumber(),(u<0||u>a.length)&&this.scriptEvaluationError("OP_SPLIT requires the first stack item to be a non-negative number less than or equal to the size of the second-from-top stack item."),o=[...a],this.stack[this.stack.length-2]=o.slice(0,u),this.stack[this.stack.length-1]=o.slice(u);break;case Ie.OP_NUM2BIN:if(this.stack.length<2&&this.scriptEvaluationError("OP_NUM2BIN requires at least two items to be on the stack."),l=c.fromScriptNum(this.stacktop(-1),Fe).toNumber(),l>Me&&this.scriptEvaluationError("It's not currently possible to push data larger than 1073741824 bytes."),this.stack.pop(),f=this.stacktop(-1),f=Lt(f),f.length>l&&this.scriptEvaluationError("OP_NUM2BIN requires that the size expressed in the top stack item is large enough to hold the value expressed in the second-from-top stack item."),f.length===l){this.stack[this.stack.length-1]=f;break}for(p=0,f.length>0&&(p=128&f[f.length-1],f[f.length-1]&=127),b=new Array(l),b.fill(0),u=0;u<l;u++)b[u]=f[u];for(u=f.length-1;u++<l-2;)b[u]=0;b[u]=p,this.stack[this.stack.length-1]=b;break;case Ie.OP_BIN2NUM:this.stack.length<1&&this.scriptEvaluationError("OP_BIN2NUM requires at least one item to be on the stack."),a=this.stacktop(-1),o=Lt(a),this.stack[this.stack.length-1]=o,((t,e=Number.MAX_SAFE_INTEGER)=>!(t.length>e||t.length>0&&!(127&t[t.length-1]||!(t.length<=1)&&128&t[t.length-2])))(o)||this.scriptEvaluationError("OP_BIN2NUM requires that the resulting number is valid.");break;default:this.scriptEvaluationError("Invalid opcode!")}this.programCounter++}validate(){for(this.unlockingScript.isPushOnly()||this.scriptEvaluationError("Unlocking scripts can only contain push operations, and no other opcodes.");this.step(),!("LockingScript"===this.context&&this.programCounter>=this.lockingScript.chunks.length););return this.ifStack.length>0&&this.scriptEvaluationError("Every OP_IF must be terminated prior to the end of the script."),1!==this.stack.length&&this.scriptEvaluationError("The clean stack rule requires exactly one item to be on the stack after script execution."),this.castToBool(this.stacktop(-1))||this.scriptEvaluationError("The top stack element must be truthy after script evaluation."),!0}stacktop(t){return this.stack[this.stack.length+t]}castToBool(t){for(let e=0;e<t.length;e++)if(0!==t[e])return e!==t.length-1||128!==t[e];return!1}scriptEvaluationError(t){throw new Error(`Script evaluation error: ${t}\n\nSource TXID: ${this.sourceTXID}\nSource output index: ${this.sourceOutputIndex}\nContext: ${this.context}\nProgram counter: ${this.programCounter}\nStack size: ${this.stack.length}\nAlt stack size: ${this.altStack.length}`)}}class Te{lock(t){let e;if("string"==typeof t){const r=Rt(t);if(0!==r.prefix[0]&&111!==r.prefix[0])throw new Error("only P2PKH is supported");e=r.data}else e=t;return new xe([{op:Ie.OP_DUP},{op:Ie.OP_HASH160},{op:e.length,data:e},{op:Ie.OP_EQUALVERIFY},{op:Ie.OP_CHECKSIG}])}unlock(t,e="all",r=!1,i,s){return{sign:async(n,a)=>{let o=Pe.SIGHASH_FORKID;"all"===e&&(o|=Pe.SIGHASH_ALL),"none"===e&&(o|=Pe.SIGHASH_NONE),"single"===e&&(o|=Pe.SIGHASH_SINGLE),r&&(o|=Pe.SIGHASH_ANYONECANPAY);const c=n.inputs[a],h=n.inputs.filter(((t,e)=>e!==a)),d=c.sourceTXID?c.sourceTXID:c.sourceTransaction?.id("hex");if(!d)throw new Error("The input sourceTXID or sourceTransaction is required for transaction signing.");if(i||=c.sourceTransaction?.outputs[c.sourceOutputIndex].satoshis,!i)throw new Error("The sourceSatoshis or input sourceTransaction is required for transaction signing.");if(s||=c.sourceTransaction?.outputs[c.sourceOutputIndex].lockingScript,!s)throw new Error("The lockingScript or input sourceTransaction is required for transaction signing.");const u=Pe.format({sourceTXID:d,sourceOutputIndex:c.sourceOutputIndex,sourceSatoshis:i,transactionVersion:n.version,otherInputs:h,inputIndex:a,outputs:n.outputs,inputSequence:c.sequence,subscript:s,lockTime:n.lockTime,scope:o}),l=t.sign(wt(u)),f=new Pe(l.r,l.s,o).toChecksigFormat(),b=t.toPublicKey().encode(!0);return new Se([{op:f.length,data:f},{op:b.length,data:b}])},estimateLength:async()=>108}}}class Be{type="raw";constructor(t="raw"){this.type=t}lock(t){const e=[{op:Ie.OP_OVER},{op:Ie.OP_3},{op:Ie.OP_SPLIT},{op:Ie.OP_NIP},{op:Ie.OP_1},{op:Ie.OP_SPLIT},{op:Ie.OP_SWAP},{op:Ie.OP_SPLIT},{op:Ie.OP_DROP}];return"raw"!==this.type&&e.push({op:Ie["OP_"+this.type]}),e.push({op:t.length,data:t}),e.push({op:Ie.OP_EQUALVERIFY}),e.push({op:Ie.OP_CHECKSIG}),new xe(e)}unlock(t,e,r="all",i=!1){return{sign:async(s,n)=>{void 0===e&&(e=te.fromRandom());let a=Pe.SIGHASH_FORKID;"all"===r&&(a|=Pe.SIGHASH_ALL),"none"===r&&(a|=Pe.SIGHASH_NONE),"single"===r&&(a|=Pe.SIGHASH_SINGLE),i&&(a|=Pe.SIGHASH_ANYONECANPAY);const o=[...s.inputs],[c]=o.splice(n,1);if("object"!=typeof c.sourceTransaction)throw new Error("The source transaction is needed for transaction signing.");const h=Pe.format({sourceTXID:c.sourceTransaction.id("hex"),sourceOutputIndex:c.sourceOutputIndex,sourceSatoshis:c.sourceTransaction.outputs[c.sourceOutputIndex].satoshis,transactionVersion:s.version,otherInputs:o,inputIndex:n,outputs:s.outputs,inputSequence:c.sequence,subscript:c.sourceTransaction.outputs[c.sourceOutputIndex].lockingScript,lockTime:s.lockTime,scope:a}),d=e.sign(wt(h),void 0,!0,t),u=new Pe(d.r,d.s,a).toChecksigFormat(),l=e.toPublicKey().encode(!0);return new Se([{op:u.length,data:u},{op:l.length,data:l}])},estimateLength:async()=>108}}}class Re{value;constructor(t){this.value=t}async computeFee(t){const e=t=>t>2**32?9:t>65536?5:t>253?3:1;let r=4;r+=e(t.inputs.length);for(let i=0;i<t.inputs.length;i++){const s=t.inputs[i];let n;if(r+=40,"object"==typeof s.unlockingScript)n=s.unlockingScript.toBinary().length;else{if("object"!=typeof s.unlockingScriptTemplate)throw new Error("All inputs must have an unlocking script or an unlocking script template for sat/kb fee computation.");n=await s.unlockingScriptTemplate.estimateLength(t,i)}r+=e(n),r+=n}r+=e(t.outputs.length);for(const i of t.outputs){r+=8;const t=i.lockingScript.toBinary().length;r+=e(t),r+=t}return r+=4,Math.ceil(r/1e3*this.value)}}class Ue{blockHeight;path;static fromHex(t){return Ue.fromBinary(xt(t,"hex"))}static fromReader(t){const e=t.readVarIntNum(),r=t.readUInt8(),i=Array(r).fill(0).map((()=>[]));let s,n,a;for(let e=0;e<r;e++){for(a=t.readVarIntNum();a;){n=t.readVarIntNum(),s=t.readUInt8();const r={offset:n};1&s?r.duplicate=!0:(2&s&&(r.txid=!0),r.hash=_t(t.read(32).reverse())),i[e].push(r),a--}i[e].sort(((t,e)=>t.offset-e.offset))}return new Ue(e,i)}static fromBinary(t){const e=new Ht(t);return Ue.fromReader(e)}constructor(t,e){this.blockHeight=t,this.path=e;const r=Array(this.path.length).fill(0).map((()=>new Set));let i;this.path.map(((t,e)=>{if(0===t.length&&0===e)throw new Error(`Empty level at height: ${e}`);const i=new Set;t.map((t=>{if(i.has(t.offset))throw new Error(`Duplicate offset: ${t.offset}, at height: ${e}`);if(i.add(t.offset),0===e){if(!t.duplicate)for(let e=1;e<this.path.length;e++)r[e].add(t.offset>>e^1)}else if(!r[e].has(t.offset))throw new Error(`Invalid offset: ${t.offset}, at height: ${e}, with legal offsets: ${Array.from(r[e]).join(", ")}`)}))})),this.path[0].map(((t,e)=>{if(0===e&&(i=this.computeRoot(t.hash)),i!==this.computeRoot(t.hash))throw new Error("Mismatched roots")}))}toBinary(){const t=new Ut;t.writeVarIntNum(this.blockHeight);const e=this.path.length;t.writeUInt8(e);for(let r=0;r<e;r++){const e=Object.keys(this.path[r]).length;t.writeVarIntNum(e);for(const e of this.path[r]){t.writeVarIntNum(e.offset);let r=0;e?.duplicate&&(r|=1),e?.txid&&(r|=2),t.writeUInt8(r),1&r||t.write(xt(e.hash,"hex").reverse())}}return t.toArray()}toHex(){return _t(this.toBinary())}computeRoot(t){"string"!=typeof t&&(t=this.path[0].find((t=>Boolean(t?.hash))).hash);const e=this.path[0].find((e=>e.hash===t)).offset;if("number"!=typeof e)throw new Error(`This proof does not contain the txid: ${t}`);const r=t=>_t(vt(xt(t,"hex").reverse()).reverse());let i=t;for(let t=0;t<this.path.length;t++){this.path[t];const s=e>>t^1,n=this.findOrComputeLeaf(t,s);if("object"!=typeof n)throw new Error(`Missing hash for index ${e} at height ${t}`);i=n.duplicate?r(i+i):r(s%2!=0?n.hash+i:i+n.hash)}return i}findOrComputeLeaf(t,e){const r=t=>_t(vt(xt(t,"hex").reverse()).reverse());let i=this.path[t].find((t=>t.offset===e));if(i)return i;if(0===t)return;const s=t-1,n=e<<1,a=this.findOrComputeLeaf(s,n);if(!a||!a.hash)return;const o=this.findOrComputeLeaf(s,n+1);if(!o)return;let c;return c=o.duplicate?r(a.hash+a.hash):r(o.hash+a.hash),i={offset:e,hash:c},i}async verify(t,e){const r=this.computeRoot(t);return await e.isValidRootForHeight(r,this.blockHeight)}combine(t){if(this.blockHeight!==t.blockHeight)throw new Error("You cannot combine paths which do not have the same block height.");if(this.computeRoot()!==t.computeRoot())throw new Error("You cannot combine paths which do not have the same root.");const e=[];for(let r=0;r<this.path.length;r++){e.push([]);for(let t=0;t<this.path[r].length;t++)e[r].push(this.path[r][t]);for(let i=0;i<t.path[r].length;i++)e[r].find((e=>e.offset===t.path[r][i].offset))?t.path[r][i]?.txid&&(e[r].find((e=>e.offset===t.path[r][i].offset)).txid=!0):e[r].push(t.path[r][i])}this.path=e,this.trim()}trim(){const t=(t,e)=>{0!==e.length&&e.slice(-1)[0]===t||e.push(t)},e=(t,e)=>{for(let r=t.length;r>=0;r--){const i=this.path[e].findIndex((e=>e.offset===t[r]));i>=0&&this.path[e].splice(i,1)}},r=e=>{const r=[];for(const i of e)t(i>>1,r);return r};let i=[],s=[];for(let t=0;t<this.path.length;t++)this.path[t].sort(((t,e)=>t.offset-e.offset));for(let e=0;e<this.path[0].length;e++){const r=this.path[0][e];if(r.txid)t(r.offset>>1,i);else{const i=r.offset%2==1,n=this.path[0][e+(i?-1:1)];n.txid||t(n.offset,s)}}e(s,0);for(let t=1;t<this.path.length;t++)s=i,i=r(i),e(s,t)}}class He{https;constructor(t){this.https=t}async request(t,e){return await new Promise(((r,i)=>{const s=this.https.request(t,e,(t=>{let e="";t.on("data",(t=>{e+=t})),t.on("end",(()=>{const i=t.statusCode>=200&&t.statusCode<=299,s=t.headers["content-type"],n=e&&s.startsWith("application/json")?JSON.parse(e):e;r({status:t.statusCode,statusText:t.statusMessage,ok:i,data:n})}))}));s.on("error",(t=>{i(t)})),e.data&&s.write(JSON.stringify(e.data)),s.end()}))}}class Le{fetch;constructor(t){this.fetch=t}async request(t,e){const r={method:e.method,headers:e.headers,body:JSON.stringify(e.data)},i=await this.fetch(t,r),s=i.headers.get("Content-Type").startsWith("application/json")?await i.json():await i.text();return{ok:i.ok,status:i.status,statusText:i.statusText,data:s}}}function De(){const t={async request(...t){throw new Error("No method available to perform HTTP request")}};if("undefined"!=typeof window&&"function"==typeof window.fetch)return new Le(window.fetch);if("undefined"==typeof require)return t;try{const t=require("https");return new He(t)}catch(e){return t}}function Ce(){return`ts-sdk-${_t(Yt(16))}`}class qe{URL;apiKey;deploymentId;callbackUrl;callbackToken;headers;httpClient;constructor(t,e){if(this.URL=t,"string"==typeof e)this.apiKey=e,this.httpClient=De(),this.deploymentId=Ce(),this.callbackToken=void 0,this.callbackUrl=void 0;else{const{apiKey:t,deploymentId:r,httpClient:i,callbackToken:s,callbackUrl:n,headers:a}=e??{};this.apiKey=t,this.httpClient=i??De(),this.deploymentId=r??Ce(),this.callbackToken=s,this.callbackUrl=n,this.headers=a}}async broadcast(t){let e;try{e=t.toHexEF()}catch(r){if("All inputs must have source transactions when serializing to EF format"!==r.message)throw r;e=t.toHex()}const r={method:"POST",headers:this.requestHeaders(),data:{rawTx:e}};try{const t=await this.httpClient.request(`${this.URL}/v1/tx`,r);if(t.ok){const{txid:e,extraInfo:r,txStatus:i,competingTxs:s}=t.data;let n={status:"success",txid:e,message:`${i} ${r}`};return s&&(n.competingTxs=s),n}{const e=typeof t.status,r={status:"error",code:"number"===e||"string"===e?t.status.toString():"ERR_UNKNOWN",description:"Unknown error"};let i=t.data;if("string"==typeof i)try{i=JSON.parse(t.data)}catch{}return"object"==typeof i&&(r.more=i,"string"==typeof i.txid&&(r.txid=i.txid),"string"==typeof i.detail&&(r.description=i.detail)),r}}catch(t){return{status:"error",code:"500",description:"string"==typeof t.message?t.message:"Internal Server Error"}}}requestHeaders(){const t={"Content-Type":"application/json","XDeployment-ID":this.deploymentId};if(this.apiKey&&(t.Authorization=`Bearer ${this.apiKey}`),this.callbackUrl&&(t["X-CallbackUrl"]=this.callbackUrl),this.callbackToken&&(t["X-CallbackToken"]=this.callbackToken),this.headers)for(const e in this.headers)t[e]=this.headers[e];return t}}function Ve(){return new qe("https://arc.taal.com")}class Ke{network;apiKey;URL;httpClient;constructor(t="main",e={}){const{apiKey:r,httpClient:i}=e;this.network=t,this.URL=`https://api.whatsonchain.com/v1/bsv/${t}`,this.httpClient=i??De(),this.apiKey=r}async isValidRootForHeight(t,e){const r={method:"GET",headers:this.getHeaders()},i=await this.httpClient.request(`${this.URL}/block/${e}/header`,r);if(i.ok){const{merkleroot:e}=i.data;return e===t}if(404===i.status)return!1;throw new Error(`Failed to verify merkleroot for height ${e} because of an error: ${JSON.stringify(i.data)} `)}getHeaders(){const t={Accept:"application/json"};return this.apiKey&&(t.Authorization=this.apiKey),t}}function ze(){return new Ke}class $e{_bumpIndex;_tx;_rawTx;_txid;inputTxids=[];isValid=void 0;get bumpIndex(){return this._bumpIndex}set bumpIndex(t){this._bumpIndex=t,this.updateInputTxids()}get hasProof(){return void 0!==this._bumpIndex}get isTxidOnly(){return!!this._txid&&!this._rawTx&&!this._tx}get txid(){if(this._txid)return this._txid;if(this._tx)return this._txid=this._tx.id("hex");if(this._rawTx)return this._txid=_t(vt(this._rawTx));throw new Error("Internal")}get tx(){return this._tx?this._tx:this._rawTx?this._tx=Ze.fromBinary(this._rawTx):void 0}get rawTx(){return this._rawTx?this._rawTx:this._tx?this._rawTx=this._tx.toBinary():void 0}constructor(t,e){"string"==typeof t?this._txid=t:Array.isArray(t)?this._rawTx=t:this._tx=t,this.bumpIndex=e,this.updateInputTxids()}updateInputTxids(){if(this.hasProof||!this.tx)this.inputTxids=[];else{const t={};for(const e of this.tx.inputs)t[e.sourceTXID]=!0;this.inputTxids=Object.keys(t)}}toWriter(t,e){if(e===je){if(this.isTxidOnly)t.writeUInt32LE(Ge),t.writeReverse(xt(this._txid,"hex"));else if(this._rawTx)t.write(this._rawTx);else{if(!this._tx)throw new Error("a valid serialized Transaction is expected");t.write(this._tx.toBinary())}void 0===this.bumpIndex?t.writeUInt8(0):(t.writeUInt8(1),t.writeVarIntNum(this.bumpIndex))}else if(this.isTxidOnly)t.writeUInt8(2),t.writeReverse(xt(this._txid,"hex"));else if(void 0===this.bumpIndex?t.writeUInt8(0):(t.writeUInt8(1),t.writeVarIntNum(this.bumpIndex)),this._rawTx)t.write(this._rawTx);else{if(!this._tx)throw new Error("a valid serialized Transaction is expected");t.write(this._tx.toBinary())}}static fromReader(t,e){let r,i;if(e===je)t.readUInt32LE()===Ge?r=_t(t.readReverse(32)):(t.pos-=4,r=Ze.fromReader(t)),i=t.readUInt8()?t.readVarIntNum():void 0;else{const e=t.readUInt8();2===e?r=_t(t.readReverse(32)):(1===e&&(i=t.readVarIntNum()),r=Ze.fromReader(t))}return new $e(r,i)}}const je=4022206465,Xe=4022206466,Ge=4022206465;class We{bumps=[];txs=[];version=void 0;atomicTxid=void 0;constructor(t){this.version=t}get magic(){return"V1"===this.version?je:"V2"===this.version||this.txs.findIndex((t=>t.isTxidOnly))>-1?Xe:je}findTxid(t){return this.txs.find((e=>e.txid===t))}findBump(t){return this.bumps.find((e=>e.path[0].find((e=>e.hash===t))))}findTransactionForSigning(t){const e=this.findTxid(t);if(e){for(const t of e.tx.inputs)if(!t.sourceTransaction){const e=this.findTxid(t.sourceTXID);e&&(t.sourceTransaction=e.tx)}return e.tx}}findAtomicTransaction(t){const e=this.findTxid(t);if(!e)return;const r=(t,e)=>{const i=t.findBump(e.id("hex"));if(i)e.merklePath=i;else for(const i of e.inputs){if(!i.sourceTransaction){const e=t.findTxid(i.sourceTXID);e&&(i.sourceTransaction=e.tx)}if(i.sourceTransaction){const e=t.findBump(i.sourceTransaction.id("hex"));e?i.sourceTransaction.merklePath=e:r(t,i.sourceTransaction)}}};return r(this,e.tx),e.tx}mergeBump(t){let e;for(let r=0;r<this.bumps.length;r++){const i=this.bumps[r];if(i===t)return r;if(i.blockHeight===t.blockHeight&&i.computeRoot()===t.computeRoot()){i.combine(t),e=r;break}}void 0===e&&(e=this.bumps.length,this.bumps.push(t));const r=this.bumps[e];for(const t of this.txs){const i=t.txid;if(!t.bumpIndex)for(const s of r.path[0])if(s.hash===i){t.bumpIndex=e,s.txid=!0;break}}return e}mergeRawTx(t,e){const r=new $e(t,e);return this.removeExistingTxid(r.txid),this.txs.push(r),this.tryToValidateBumpIndex(r),r}mergeTransaction(t){const e=t.id("hex");let r;this.removeExistingTxid(e),t.merklePath&&(r=this.mergeBump(t.merklePath));const i=new $e(t,r);if(this.txs.push(i),this.tryToValidateBumpIndex(i),r=i.bumpIndex,void 0===r)for(const e of t.inputs)e.sourceTransaction&&this.mergeTransaction(e.sourceTransaction);return i}removeExistingTxid(t){const e=this.txs.findIndex((e=>e.txid===t));e>=0&&this.txs.splice(e,1)}mergeTxidOnly(t){if("V1"===this.version)throw new Error("BEEF V1 format does not support txid only transactions.");let e=this.txs.find((e=>e.txid===t));return e||(e=new $e(t),this.txs.push(e),this.tryToValidateBumpIndex(e)),e}mergeBeefTx(t){let e=this.findTxid(t.txid);return!e&&t.isTxidOnly?e=this.mergeTxidOnly(t.txid):e&&!e.isTxidOnly||(e=t._tx?this.mergeTransaction(t._tx):this.mergeRawTx(t._rawTx)),e}mergeBeef(t){const e=Array.isArray(t)?We.fromBinary(t):t;for(const t of e.bumps)this.mergeBump(t);for(const t of e.txs)this.mergeBeefTx(t)}isValid(t){return this.verifyValid(t).valid}async verify(t,e){const r=this.verifyValid(e);if(!r.valid)return!1;for(const e of Object.keys(r.roots))if(!await t.isValidRootForHeight(r.roots[e],Number(e)))return!1;return!0}verifyValid(t){const e={valid:!1,roots:{}};this.sortTxs();const r={};for(const i of this.txs)if(i.isTxidOnly){if(!t)return e;r[i.txid]=!0}const i=(t,r)=>{const i=t.computeRoot(r);return e.roots[t.blockHeight]||(e.roots[t.blockHeight]=i),e.roots[t.blockHeight]===i};for(const t of this.bumps)for(const s of t.path[0])if(s.txid&&s.hash&&(r[s.hash]=!0,!i(t,s.hash)))return e;for(const t of this.txs){for(const i of t.inputTxids)if(!r[i])return e;r[t.txid]=!0}return e.valid=!0,e}toBinary(){const t=new Ut;t.writeUInt32LE(this.magic),t.writeVarIntNum(this.bumps.length);for(const e of this.bumps)t.write(e.toBinary());t.writeVarIntNum(this.txs.length);for(const e of this.txs)e.toWriter(t,this.magic);return t.toArray()}toHex(){return _t(this.toBinary())}static fromReader(t){let e,r=t.readUInt32LE();if(16843009===r&&(e=_t(t.readReverse(32)),r=t.readUInt32LE()),r!==je&&r!==Xe)throw new Error(`Serialized BEEF must start with ${je} or 4022206466 but starts with ${r}`);const i=new We(r===Xe?"V2":void 0),s=t.readVarIntNum();for(let e=0;e<s;e++){const e=Ue.fromReader(t);i.bumps.push(e)}const n=t.readVarIntNum();for(let e=0;e<n;e++){const e=$e.fromReader(t,r);i.txs.push(e)}return i.atomicTxid=e,i}static fromBinary(t){const e=new Ht(t);return We.fromReader(e)}static fromString(t,e){e||="hex";const r=xt(t,e),i=new Ht(r);return We.fromReader(i)}tryToValidateBumpIndex(t){if(void 0!==t.bumpIndex)return!0;const e=t.txid;for(let r=0;r<this.bumps.length;r++){const i=this.bumps[r].path[0].findIndex((t=>t.hash===e));if(i>=0)return t.bumpIndex=r,this.bumps[r].path[0][i].txid=!0,!0}return!1}sortTxs(){const t={},e={};let r=[];const i=[],s=[];for(const n of this.txs)e[n.txid]=n,n.isValid=n.hasProof,n.isValid?(t[n.txid]=!0,i.push(n)):n.isTxidOnly?s.push(n):r.push(n);const n={},a=[],o=r;r=[];for(const t of o){let i=!1;if(!t.isValid)for(const r of t.inputTxids)e[r]||(n[r]=!0,i=!0);i?a.push(t):r.push(t)}for(;r.length>0;){const e=r;r=[];for(const s of e)s.inputTxids.every((e=>t[e]))?(t[s.txid]=!0,i.push(s)):r.push(s);if(e.length===r.length)break}const c=r;return this.txs=i.concat(r).concat(s).concat(a),{missingInputs:Object.keys(n),notValid:c.map((t=>t.txid)),valid:Object.keys(t),withMissingInputs:a.map((t=>t.txid)),txidOnly:s.map((t=>t.txid))}}clone(){const t=new We;return t.bumps=Array.from(this.bumps),t.txs=Array.from(this.txs),t}trimKnownTxids(t){for(let e=0;e<this.txs.length;){const r=this.txs[e];r.isTxidOnly&&t.includes(r.txid)?this.txs.splice(e,1):e++}}getValidTxids(){return this.sortTxs().valid}toLogString(){let t="";t+=`BEEF with ${this.bumps.length} BUMPS and ${this.txs.length} Transactions, isValid ${this.isValid()}\n`;let e=-1;for(const r of this.bumps)e++,t+=` BUMP ${e}\n block: ${r.blockHeight}\n txids: [\n${r.path[0].filter((t=>!!t.txid)).map((t=>` '${t.hash}'`)).join(",\n")}\n ]\n`;e=-1;for(const r of this.txs)e++,t+=` TX ${e}\n txid: ${r.txid}\n`,void 0!==r.bumpIndex&&(t+=` bumpIndex: ${r.bumpIndex}\n`),r.isTxidOnly?t+=" txidOnly\n":t+=` rawTx length=${r.rawTx.length}\n`,r.inputTxids.length>0&&(t+=` inputs: [\n${r.inputTxids.map((t=>` '${t}'`)).join(",\n")}\n ]\n`);return t}}const Ye=We;class Ze{version;inputs;outputs;lockTime;metadata;merklePath;cachedHash;static fromBEEF(t,e){const r=new Ht(t),{transactions:i,BUMPs:s}=Ze.parseBEEFData(r),n=Object.keys(i),a=n[n.length-1],o=e||a;if(!i[o])throw new Error(`Transaction with TXID ${o} not found in BEEF data.`);const c=t=>{if("number"==typeof t.pathIndex){const e=s[t.pathIndex];if("object"!=typeof e)throw new Error("Invalid merkle path index found in BEEF!");t.tx.merklePath=e}else for(let e=0;e<t.tx.inputs.length;e++){const r=t.tx.inputs[e],s=i[r.sourceTXID];if("object"!=typeof s)throw new Error(`Reference to unknown TXID in BEEF: ${r.sourceTXID}`);r.sourceTransaction=s.tx,c(s)}};return c(i[o]),i[o].tx}static fromAtomicBEEF(t){const e=new Ht(t),r=e.readUInt32LE();if(16843009!==r)throw new Error(`Invalid Atomic BEEF prefix. Expected 0x01010101, received ${r.toString(16)}.`);const i=e.read(32),s=_t(i),n=new Ht(e.read()),{transactions:a,BUMPs:o}=Ze.parseBEEFData(n);if(!a[s])throw new Error(`Subject transaction with TXID ${s} not found in Atomic BEEF data.`);const c=new Set,h=t=>{if(c.has(t))return;c.add(t);const e=a[t].tx;for(const t of e.inputs){const e=t.sourceTXID;if(!a[e])throw new Error(`Input transaction with TXID ${e} is missing in Atomic BEEF data.`);h(e)}};h(s);for(const t in a)if(!c.has(t))throw new Error(`Unrelated transaction with TXID ${t} found in Atomic BEEF data.`);const d=t=>{if("number"==typeof t.pathIndex){const e=o[t.pathIndex];if("object"!=typeof e)throw new Error("Invalid merkle path index found in BEEF!");t.tx.merklePath=e}else for(let e=0;e<t.tx.inputs.length;e++){const r=t.tx.inputs[e],i=a[r.sourceTXID];if("object"!=typeof i)throw new Error(`Reference to unknown TXID in BEEF: ${r.sourceTXID}`);r.sourceTransaction=i.tx,d(i)}};return d(a[s]),a[s].tx}static parseBEEFData(t){const e=t.readUInt32LE();if(e!==je)throw new Error(`Invalid BEEF version. Expected ${je}, received ${e}.`);const r=t.readVarIntNum(),i=[];for(let e=0;e<r;e++)i.push(Ue.fromReader(t));const s=t.readVarIntNum(),n={};for(let e=0;e<s;e++){const e=Ze.fromReader(t),r={tx:e},i=e.id("hex");Boolean(t.readUInt8())&&(r.pathIndex=t.readVarIntNum()),n[i]=r}return{transactions:n,BUMPs:i}}static fromEF(t){const e=new Ht(t),r=e.readUInt32LE();if("0000000000ef"!==_t(e.read(6)))throw new Error("Invalid EF marker");const i=e.readVarIntNum(),s=[];for(let t=0;t<i;t++){const t=_t(e.readReverse(32)),r=e.readUInt32LE(),i=e.readVarIntNum(),n=e.read(i),a=Se.fromBinary(n),o=e.readUInt32LE(),c=e.readUInt64LEBn().toNumber(),h=e.readVarIntNum(),d=e.read(h),u=xe.fromBinary(d),l=new Ze(null,[],[],null);l.outputs=Array(r+1).fill(null),l.outputs[r]={satoshis:c,lockingScript:u},s.push({sourceTransaction:l,sourceTXID:t,sourceOutputIndex:r,unlockingScript:a,sequence:o})}const n=e.readVarIntNum(),a=[];for(let t=0;t<n;t++){const t=e.readUInt64LEBn().toNumber(),r=e.readVarIntNum(),i=e.read(r),s=xe.fromBinary(i);a.push({satoshis:t,lockingScript:s})}const o=e.readUInt32LE();return new Ze(r,s,a,o)}static parseScriptOffsets(t){const e=new Ht(t),r=[],i=[];e.pos+=4;const s=e.readVarIntNum();for(let t=0;t<s;t++){e.pos+=36;const i=e.readVarIntNum();r.push({vin:t,offset:e.pos,length:i}),e.pos+=i+4}const n=e.readVarIntNum();for(let t=0;t<n;t++){e.pos+=8;const r=e.readVarIntNum();i.push({vout:t,offset:e.pos,length:r}),e.pos+=r}return{inputs:r,outputs:i}}static fromReader(t){const e=t.readUInt32LE(),r=t.readVarIntNum(),i=[];for(let e=0;e<r;e++){const e=_t(t.readReverse(32)),r=t.readUInt32LE(),s=t.readVarIntNum(),n=t.read(s),a=Se.fromBinary(n),o=t.readUInt32LE();i.push({sourceTXID:e,sourceOutputIndex:r,unlockingScript:a,sequence:o})}const s=t.readVarIntNum(),n=[];for(let e=0;e<s;e++){const e=t.readUInt64LEBn().toNumber(),r=t.readVarIntNum(),i=t.read(r),s=xe.fromBinary(i);n.push({satoshis:e,lockingScript:s})}const a=t.readUInt32LE();return new Ze(e,i,n,a)}static fromBinary(t){const e=new Ht(t);return Ze.fromReader(e)}static fromHex(t){return Ze.fromBinary(xt(t,"hex"))}static fromHexEF(t){return Ze.fromEF(xt(t,"hex"))}static fromHexBEEF(t,e){return Ze.fromBEEF(xt(t,"hex"),e)}constructor(t=1,e=[],r=[],i=0,s={},n){this.version=t,this.inputs=e,this.outputs=r,this.lockTime=i,this.metadata=s,this.merklePath=n}addInput(t){if(void 0===t.sourceTXID&&void 0===t.sourceTransaction)throw new Error("A reference to an an input transaction is required. If the input transaction itself cannot be referenced, its TXID must still be provided.");void 0===t.sequence&&(t.sequence=4294967295),this.cachedHash=void 0,this.inputs.push(t)}addOutput(t){this.cachedHash=void 0,this.outputs.push(t)}updateMetadata(t){this.metadata={...this.metadata,...t}}async fee(t,e="equal"){if(this.cachedHash=void 0,void 0===t&&(t=new Re(10)),"number"==typeof t){const e=t;t={computeFee:async()=>e}}const r=await t.computeFee(this);let i=0;for(const t of this.inputs){if("object"!=typeof t.sourceTransaction)throw new Error("Source transactions are required for all inputs during fee computation");i+=t.sourceTransaction.outputs[t.sourceOutputIndex].satoshis}i-=r;let s=0;for(const t of this.outputs)t.change?s++:i-=t.satoshis;if(i<=s)for(let t=0;t<this.outputs.length;t++)this.outputs[t].change&&(this.outputs.splice(t,1),t--);else{if("random"===e)throw new Error("Not yet implemented");if("equal"===e){const t=Math.floor(i/s);for(const e of this.outputs)e.change&&(e.satoshis=t)}}}getFee(){let t=0;for(const e of this.inputs){if("object"!=typeof e.sourceTransaction)throw new Error("Source transactions or sourceSatoshis are required for all inputs to calculate fee");t+=e.sourceTransaction.outputs[e.sourceOutputIndex].satoshis}let e=0;for(const t of this.outputs)e+=t.satoshis||0;return t-e}async sign(){this.cachedHash=void 0;for(const t of this.outputs)if(void 0===t.satoshis)throw t.change?new Error("There are still change outputs with uncomputed amounts. Use the fee() method to compute the change amounts and transaction fees prior to signing."):new Error("One or more transaction outputs is missing an amount. Ensure all output amounts are provided before signing.");const t=await Promise.all(this.inputs.map((async(t,e)=>"object"==typeof this.inputs[e].unlockingScriptTemplate?await this.inputs[e].unlockingScriptTemplate.sign(this,e):await Promise.resolve(void 0))));for(let e=0,r=this.inputs.length;e<r;e++)"object"==typeof this.inputs[e].unlockingScriptTemplate&&(this.inputs[e].unlockingScript=t[e])}async broadcast(t=Ve()){return await t.broadcast(this)}toBinary(){const t=new Ut;t.writeUInt32LE(this.version),t.writeVarIntNum(this.inputs.length);for(const e of this.inputs){void 0===e.sourceTXID?t.write(e.sourceTransaction.hash()):t.writeReverse(xt(e.sourceTXID,"hex")),t.writeUInt32LE(e.sourceOutputIndex);const r=e.unlockingScript.toBinary();t.writeVarIntNum(r.length),t.write(r),t.writeUInt32LE(e.sequence)}t.writeVarIntNum(this.outputs.length);for(const e of this.outputs){t.writeUInt64LE(e.satoshis);const r=e.lockingScript.toBinary();t.writeVarIntNum(r.length),t.write(r)}return t.writeUInt32LE(this.lockTime),t.toArray()}toEF(){const t=new Ut;t.writeUInt32LE(this.version),t.write([0,0,0,0,0,239]),t.writeVarIntNum(this.inputs.length);for(const e of this.inputs){if(void 0===e.sourceTransaction)throw new Error("All inputs must have source transactions when serializing to EF format");void 0===e.sourceTXID?t.write(e.sourceTransaction.hash()):t.write(xt(e.sourceTXID,"hex").reverse()),t.writeUInt32LE(e.sourceOutputIndex);const r=e.unlockingScript.toBinary();t.writeVarIntNum(r.length),t.write(r),t.writeUInt32LE(e.sequence),t.writeUInt64LE(e.sourceTransaction.outputs[e.sourceOutputIndex].satoshis);const i=e.sourceTransaction.outputs[e.sourceOutputIndex].lockingScript.toBinary();t.writeVarIntNum(i.length),t.write(i)}t.writeVarIntNum(this.outputs.length);for(const e of this.outputs){t.writeUInt64LE(e.satoshis);const r=e.lockingScript.toBinary();t.writeVarIntNum(r.length),t.write(r)}return t.writeUInt32LE(this.lockTime),t.toArray()}toHexEF(){return _t(this.toEF())}toHex(){return _t(this.toBinary())}toHexBEEF(){return _t(this.toBEEF())}toHexAtomicBEEF(){return _t(this.toAtomicBEEF())}hash(t){let e;return this.cachedHash?e=this.cachedHash:(e=vt(this.toBinary()),this.cachedHash=e),"hex"===t?_t(e):e}id(t){const e=[...this.hash()];return e.reverse(),"hex"===t?_t(e):e}async verify(t=ze(),e){const r=new Set,i=[this];for(;i.length>0;){const s=i.shift(),n=s.id("hex");if(r.has(n))continue;if("object"==typeof s.merklePath){if("scripts only"===t){r.add(n);continue}if(await s.merklePath.verify(n,t)){r.add(n);continue}}if(void 0!==e){const t=Ze.fromEF(s.toEF());if(delete t.outputs[0].satoshis,t.outputs[0].change=!0,await t.fee(e),s.getFee()<t.getFee())throw new Error(`Verification failed because the transaction ${n} has an insufficient fee and has not been mined.`)}let a=0;for(let t=0;t<s.inputs.length;t++){const e=s.inputs[t];if("object"!=typeof e.sourceTransaction)throw new Error(`Verification failed because the input at index ${t} of transaction ${n} is missing an associated source transaction. This source transaction is required for transaction verification because there is no merkle proof for the transaction spending a UTXO it contains.`);if("object"!=typeof e.unlockingScript)throw new Error(`Verification failed because the input at index ${t} of transaction ${n} is missing an associated unlocking script. This script is required for transaction verification because there is no merkle proof for the transaction spending the UTXO.`);const o=e.sourceTransaction.outputs[e.sourceOutputIndex];a+=o.satoshis;const c=e.sourceTransaction.id("hex");r.has(c)||i.push(e.sourceTransaction);const h=s.inputs.filter(((e,r)=>r!==t));if(void 0===e.sourceTXID&&(e.sourceTXID=c),!new Ne({sourceTXID:e.sourceTXID,sourceOutputIndex:e.sourceOutputIndex,lockingScript:o.lockingScript,sourceSatoshis:o.satoshis,transactionVersion:s.version,otherInputs:h,unlockingScript:e.unlockingScript,inputSequence:e.sequence,inputIndex:t,outputs:s.outputs,lockTime:s.lockTime}).validate())return!1}let o=0;for(const t of s.outputs){if("number"!=typeof t.satoshis)throw new Error("Every output must have a defined amount during transaction verification.");o+=t.satoshis}if(o>a)return!1;r.add(n)}return!0}toBEEF(t){const e=new Ut;e.writeUInt32LE(4022206465);const r=[],i=[],s=e=>{const n={tx:e},a="object"==typeof e.merklePath;if(a){let t=!1;for(let i=0;i<r.length;i++){if(r[i]===e.merklePath){n.pathIndex=i,t=!0;break}if(r[i].blockHeight===e.merklePath.blockHeight&&r[i].computeRoot()===e.merklePath.computeRoot()){r[i].combine(e.merklePath),n.pathIndex=i,t=!0;break}}t||(n.pathIndex=r.length,r.push(e.merklePath))}if(i.some((t=>t.tx.id("hex")===e.id("hex")))||i.unshift(n),!a)for(let r=0;r<e.inputs.length;r++){const i=e.inputs[r];if("object"==typeof i.sourceTransaction)s(i.sourceTransaction);else if(!t)throw new Error("A required source transaction is missing!")}};s(this),e.writeVarIntNum(r.length);for(const t of r)e.write(t.toBinary());e.writeVarIntNum(i.length);for(const t of i)e.write(t.tx.toBinary()),"number"==typeof t.pathIndex?(e.writeUInt8(1),e.writeVarIntNum(t.pathIndex)):e.writeUInt8(0);return e.toArray()}toAtomicBEEF(t){const e=new Ut;e.writeUInt32LE(16843009),e.write(this.id());const r=this.toBEEF(t);return e.write(r),e.toArray()}}function Qe(t){return"success"===t.status}function Je(t){return"error"===t.status}const tr=class extends We{knownTo={};constructor(t){if(super(),t)for(const e of t)this.addParty(e)}isParty(t){return Object.keys(this.knownTo).includes(t)}addParty(t){if(this.isParty(t))throw new Error(`Party ${t} already exists.`);this.knownTo[t]={}}getKnownTxidsForParty(t){const e=this.knownTo[t];if(!e)throw new Error(`Party ${t} is unknown.`);return Object.keys(e)}getTrimmedBeefForParty(t){const e=this.getKnownTxidsForParty(t),r=this.clone();return r.trimKnownTxids(e),r}addKnownTxidsForParty(t,e){this.isParty(t)||this.addParty(t);const r=this.knownTo[t];for(const t of e)r[t]=!0,this.mergeTxidOnly(t)}mergeBeefFromParty(t,e){const r=Array.isArray(e)?We.fromBinary(e):e,i=r.getValidTxids();this.mergeBeef(r),this.addKnownTxidsForParty(t,i)}};class er{network;URL;httpClient;constructor(t="main",e=De()){this.network=t,this.URL=`https://api.whatsonchain.com/v1/bsv/${t}/tx/raw`,this.httpClient=e}async broadcast(t){const e={method:"POST",headers:{"Content-Type":"application/json",Accept:"text/plain"},data:{txhex:t.toHex()}};try{const t=await this.httpClient.request(this.URL,e);return t.ok?{status:"success",txid:t.data,message:"broadcast successful"}:{status:"error",code:t.status.toString()??"ERR_UNKNOWN",description:t.data??"Unknown error"}}catch(t){return{status:"error",code:"500",description:"string"==typeof t.message?t.message:"Internal Server Error"}}}}const rr="42423301",ir=(t,e,r)=>{const i="object"!=typeof r;if(i){const t=new qt,e=new te(1),i=t.g.mul(e);r=new Xt(i.x,i.y)}const s=Yt(32),n=`2-message signing-${At(s)}`,a=e.deriveChild(r,n).sign(t).toDER(),o=e.toPublicKey().encode(!0);return[...xt(rr,"hex"),...o,...i?[0]:r.encode(!0),...s,...a]},sr=(t,e,r)=>{const i=new Ht(e),s=_t(i.read(4));if(s!==rr)throw new Error(`Message version mismatch: Expected ${rr}, received ${s}`);const n=Xt.fromString(_t(i.read(33))),[a]=i.read(1);if(0===a)r=new te(1);else{const t=i.read(32),e=_t([a,...t]);if("object"!=typeof r)throw new Error(`This signature can only be verified with knowledge of a specific private key. The associated public key is: ${e}`);const s=r.toPublicKey().encode(!0,"hex");if(e!==s)throw new Error(`The recipient public key is ${s} but the signature requres the recipient to have public key ${e}`)}const o=At(i.read(32)),c=_t(i.read(i.bin.length-i.pos)),h=Vt.fromDER(c,"hex"),d=`2-message signing-${o}`;return n.deriveChild(r,d).verify(t,h)},nr="42421033",ar=(t,e,r)=>{const i=Yt(32),s=`2-message encryption-${At(i)}`,n=e.deriveChild(r,s),a=r.deriveChild(e,s),o=n.deriveSharedSecret(a),c=new ke(o.encode(!0).slice(1)).encrypt(t),h=e.toPublicKey().encode(!0);return[...xt(nr,"hex"),...h,...r.encode(!0),...i,...c]},or=(t,e)=>{const r=new Ht(t),i=_t(r.read(4));if(i!==nr)throw new Error(`Message version mismatch: Expected ${nr}, received ${i}`);const s=Xt.fromString(_t(r.read(33))),n=_t(r.read(33)),a=e.toPublicKey().encode(!0,"hex");if(n!==a)throw new Error(`The encrypted message expects a recipient public key of ${n}, but the provided key is ${a}`);const o=At(r.read(32)),c=r.read(r.bin.length-r.pos),h=`2-message encryption-${o}`,d=s.deriveChild(e,h),u=e.deriveChild(s,h),l=d.deriveSharedSecret(u);return new ke(l.encode(!0).slice(1)).decrypt(c)},cr=t=>{const e=new Ut;e.writeVarIntNum(24),e.write(xt("Bitcoin Signed Message:\n","utf8")),e.writeVarIntNum(t.length),e.write(t);const r=e.toArray();return vt(r)},hr=(t,e,r="base64")=>{const i=cr(t),s=$t(new c(i),e,!0);if("raw"===r)return s;const n=new c(i),a=s.CalculateRecoveryFactor(e.toPublicKey(),n);return s.toCompact(a,!0,"base64")},dr=(t,e,r)=>{const i=cr(t);return jt(new c(i),e,r)};class ur{versionBytesNum;depth;parentFingerPrint;childIndex;chainCode;privKey;pubKey;constants={pubKey:76067358,privKey:76066276};constructor(t,e,r,i,s,n,a){this.versionBytesNum=t,this.depth=e,this.parentFingerPrint=r,this.childIndex=i,this.chainCode=s,this.privKey=n,this.pubKey=a}fromRandom(){return this.versionBytesNum=this.constants.privKey,this.depth=0,this.parentFingerPrint=[0,0,0,0],this.childIndex=0,this.chainCode=Yt(32),this.privKey=te.fromRandom(),this.pubKey=this.privKey.toPublicKey(),this}static fromRandom(){return(new this).fromRandom()}static fromString(t){return(new this).fromString(t)}fromString(t){const e=Rt(t);return this.fromBinary([...e.prefix,...e.data])}static fromSeed(t){return(new this).fromSeed(t)}fromSeed(t){if(t.length<16)throw new Error("Need more than 128 bits of entropy");if(t.length>64)throw new Error("More than 512 bits of entropy is nonstandard");const e=Ot(xt("Bitcoin seed","utf8"),t);return this.depth=0,this.parentFingerPrint=[0,0,0,0],this.childIndex=0,this.chainCode=e.slice(32,64),this.versionBytesNum=this.constants.privKey,this.privKey=new te(e.slice(0,32)),this.pubKey=this.privKey.toPublicKey(),this}static fromBinary(t){return(new this).fromBinary(t)}fromBinary(t){if(78!==t.length)throw new Error("incorrect bip32 data length");const e=new Ht(t);this.versionBytesNum=e.readUInt32BE(),this.depth=e.readUInt8(),this.parentFingerPrint=e.read(4),this.childIndex=e.readUInt32BE(),this.chainCode=e.read(32);const r=e.read(33),i=this.versionBytesNum===this.constants.privKey,s=this.versionBytesNum===this.constants.pubKey;if(i&&0===r[0])this.privKey=new te(r.slice(1,33)),this.pubKey=this.privKey.toPublicKey();else{if(!s||2!==r[0]&&3!==r[0])throw new Error("Invalid key");this.pubKey=Xt.fromString(_t(r))}return this}toString(){const t=this.toBinary();return Bt(t,[])}derive(t){if("m"===t)return this;const e=t.split("/");let r=this;for(const t in e){const i=e[t];if("0"===t){if("m"!==i)throw new Error("invalid path");continue}if(parseInt(i.replace("'",""),10).toString()!==i.replace("'",""))throw new Error("invalid path");const s=i.length>1&&"'"===i[i.length-1];let n=2147483647&parseInt(s?i.slice(0,i.length-1):i,10);s&&(n+=2147483648),r=r.deriveChild(n)}return r}deriveChild(t){if("number"!=typeof t)throw new Error("i must be a number");const e=[];e.push(t>>24&255),e.push(t>>16&255),e.push(t>>8&255),e.push(255&t);const r=[...e],i=!!(2147483648&t),s=this.versionBytesNum===this.constants.privKey;if(i&&(!this.privKey||!s))throw new Error("Cannot do private key derivation without private key");let n=null;if(this.privKey){let t=null;t=i?[0,...this.privKey.toArray("be",32),...r]:[...this.pubKey.encode(!0),...r];const e=Ot(this.chainCode,t),s=new c(e.slice(0,32)),a=e.slice(32,64),o=s.add(this.privKey).mod((new qt).n);n=new ur,n.chainCode=a,n.privKey=new te(o.toArray()),n.pubKey=n.privKey.toPublicKey()}else{const t=[...this.pubKey.encode(!0),...r],e=Ot(this.chainCode,t),i=new c(e.slice(0,32)),s=e.slice(32,64),a=(new qt).g.mul(i),o=this.pubKey,h=a.add(o),d=new Xt(h.x,h.y);n=new ur,n.chainCode=s,n.pubKey=d}n.childIndex=t;const a=kt(this.pubKey.encode(!0));return n.parentFingerPrint=a.slice(0,4),n.versionBytesNum=this.versionBytesNum,n.depth=this.depth+1,n}toPublic(){const t=new ur(this.versionBytesNum,this.depth,this.parentFingerPrint,this.childIndex,this.chainCode,this.privKey,this.pubKey);return t.versionBytesNum=this.constants.pubKey,t.privKey=void 0,t}toBinary(){const t=this.versionBytesNum===this.constants.privKey,e=this.versionBytesNum===this.constants.pubKey;if(t)return(new Ut).writeUInt32BE(this.versionBytesNum).writeUInt8(this.depth).write(this.parentFingerPrint).writeUInt32BE(this.childIndex).write(this.chainCode).writeUInt8(0).write(this.privKey.toArray("be",32)).toArray();if(e)return(new Ut).writeUInt32BE(this.versionBytesNum).writeUInt8(this.depth).write(this.parentFingerPrint).writeUInt32BE(this.childIndex).write(this.chainCode).write(this.pubKey.encode(!0)).toArray();throw new Error("bip32: invalid versionBytesNum byte")}isPrivate(){return this.versionBytesNum===this.constants.privKey}}const lr={value:["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"],space:" "};class fr{mnemonic;seed;Wordlist;constructor(t,e,r=lr){this.mnemonic=t,this.seed=e,this.Wordlist=r}toBinary(){const t=new Ut;if(this.mnemonic){const e=xt(this.mnemonic,"utf8");t.writeVarIntNum(e.length),t.write(e)}else t.writeVarIntNum(0);return this.seed?(t.writeVarIntNum(this.seed.length),t.write(this.seed)):t.writeVarIntNum(0),t.toArray()}fromBinary(t){const e=new Ht(t),r=e.readVarIntNum();r>0&&(this.mnemonic=Mt(e.read(r),"utf8"));const i=e.readVarIntNum();return i>0&&(this.seed=e.read(i)),this}fromRandom(t){if(t||(t=128),t%32!=0)throw new Error("bits must be multiple of 32");if(t<128)throw new Error("bits must be at least 128");const e=Yt(t/8);return this.entropy2Mnemonic(e),this.mnemonic2Seed(),this}static fromRandom(t){return(new this).fromRandom(t)}fromEntropy(t){return this.entropy2Mnemonic(t),this}static fromEntropy(t){return(new this).fromEntropy(t)}fromString(t){return this.mnemonic=t,this}static fromString(t){return(new this).fromString(t)}toString(){return this.mnemonic}toSeed(t){return this.mnemonic2Seed(t),this.seed}entropy2Mnemonic(t){if(t.length<16)throw new Error("Entropy is less than 128 bits. It must be 128 bits or more.");const e=wt(t);let r="";const i=8*t.length;for(let e=0;e<t.length;e++)r+=("00000000"+t[e].toString(2)).slice(-8);let s=e[0].toString(2);if(s=("00000000"+s).slice(-8).slice(0,i/32),r+=s,r.length%11!=0)throw new Error("internal error - entropy not an even multiple of 11 bits - "+r.length);let n="";for(let t=0;t<r.length/11;t++){""!==n&&(n+=this.Wordlist.space);const e=parseInt(r.slice(11*t,11*(t+1)),2);n+=this.Wordlist.value[e]}return this.mnemonic=n,this}check(){const t=this.mnemonic.split(this.Wordlist.space);let e="";for(let r=0;r<t.length;r++){const i=this.Wordlist.value.indexOf(t[r]);if(i<0)return!1;e+=("00000000000"+i.toString(2)).slice(-11)}if(e.length%11!=0)throw new Error("internal error - entropy not an even multiple of 11 bits - "+e.length);const r=e.length/33,i=e.slice(-r),s=e.slice(0,e.length-r),n=[];for(let t=0;t<s.length/8;t++)n.push(parseInt(e.slice(8*t,8*(t+1)),2));let a=wt(n.slice(0,s.length/8))[0].toString(2);return a=("00000000"+a).slice(-8).slice(0,r),a===i}mnemonic2Seed(t=""){let e=this.mnemonic;if(!this.check())throw new Error("Mnemonic does not pass the check - was the mnemonic typed incorrectly? Are there extra spaces?");if("string"!=typeof t)throw new Error("passphrase must be a string or undefined");e=e.normalize("NFKD"),t=t.normalize("NFKD");const r=xt(e,"utf8"),i=[...xt("mnemonic","utf8"),...xt(t,"utf8")];return this.seed=Et(r,i,2048,64,"sha512"),this}isValid(t=""){let e;try{e=!!this.mnemonic2Seed(t)}catch(t){e=!1}return e}static isValid(t,e=""){return new fr(t).isValid(e)}}function br(t){let e,r,i;this._tables[0][0][0]||this._precompute();const s=this._tables[0][4],n=this._tables[1],a=t.length;let o=1;if(4!==a&&6!==a&&8!==a)throw new Error("invalid aes key size");this._key=[r=t.slice(0),i=[]];for(var c=a;c<4*a+28;c++)e=r[c-1],(c%a==0||8===a&&c%a==4)&&(e=s[e>>>24]<<24^s[e>>16&255]<<16^s[e>>8&255]<<8^s[255&e],c%a==0&&(e=e<<8^e>>>24^o<<24,o=o<<1^283*(o>>7))),r[c]=r[c-a]^e;for(let t=0;c;t++,c--)e=r[3&t?c:c-4],i[t]=c<=4||t<4?e:n[0][s[e>>>24]]^n[1][s[e>>16&255]]^n[2][s[e>>8&255]]^n[3][s[255&e]]}br.prototype={encrypt:function(t){return this._crypt(t,0)},decrypt:function(t){return this._crypt(t,1)},_tables:[[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)]],_precompute:function(){const t=this._tables[0],e=this._tables[1],r=t[4],i=e[4];let s,n,a;const o=new Uint8Array(256),c=new Uint8Array(256);let h,d,u,l,f,b;for(s=0;s<256;s++)c[(o[s]=s<<1^283*(s>>7))^s]=s;for(n=a=0;!r[n];n^=h||1,a=c[a]||1)for(l=a^a<<1^a<<2^a<<3^a<<4,l=l>>8^255&l^99,r[n]=l,i[l]=n,u=o[d=o[h=o[n]]],b=16843009*u^65537*d^257*h^16843008*n,f=257*o[l]^16843008*l,s=0;s<4;s++)t[s][n]=f=f<<24^f>>>8,e[s][l]=b=b<<24^b>>>8},_crypt:function(t,e){if(4!==t.length)throw new Error("invalid aes block size");const r=this._key[e];let i,s,n,a=t[0]^r[0],o=t[e?3:1]^r[1],c=t[2]^r[2],h=t[e?1:3]^r[3];const d=r.length/4-2;let u,l=4;const f=new Uint32Array(4),b=this._tables[e],p=b[0],m=b[1],g=b[2],w=b[3],y=b[4];for(u=0;u<d;u++)i=p[a>>>24]^m[o>>16&255]^g[c>>8&255]^w[255&h]^r[l],s=p[o>>>24]^m[c>>16&255]^g[h>>8&255]^w[255&a]^r[l+1],n=p[c>>>24]^m[h>>16&255]^g[a>>8&255]^w[255&o]^r[l+2],h=p[h>>>24]^m[a>>16&255]^g[o>>8&255]^w[255&c]^r[l+3],l+=4,a=i,o=s,c=n;for(u=0;u<4;u++)f[e?3&-u:u]=y[a>>>24]<<24^y[o>>16&255]<<16^y[c>>8&255]<<8^y[255&h]^r[l++],i=a,a=o,o=c,c=h,h=i;return f}};class pr{static encrypt(t,e){const r=pr.buf2Words(e),i=pr.buf2Words(t),s=new br(r).encrypt(i);return pr.words2Buf(s)}static decrypt(t,e){const r=pr.buf2Words(t),i=new br(pr.buf2Words(e)).decrypt(r);return pr.words2Buf(i)}static buf2Words(t){if(t.length%4)throw new Error("buf length must be a multiple of 4");const e=[];for(let r=0;r<t.length/4;r++){const i=16777216*t[4*r]+(t[4*r+1]<<16|t[4*r+2]<<8|t[4*r+3]);e.push(i)}return e}static words2Buf(t){const e=new Array(4*t.length);for(let r=0;r<t.length;r++){const i=t[r];e[4*r]=i>>>24&255,e[4*r+1]=i>>>16&255,e[4*r+2]=i>>>8&255,e[4*r+3]=255&i}return e}}class mr{static buf2BlocksBuf(t,e){const r=e/8,i=[];for(let s=0;s<=t.length/r;s++){let n=t.slice(s*r,s*r+r);n.length<e&&(n=mr.pkcs7Pad(n,e)),i.push(n)}return i}static blockBufs2Buf(t){let e=t[t.length-1];return e=mr.pkcs7Unpad(e),t[t.length-1]=e,t.flat()}static encrypt(t,e,r,i){const s=8*e.length,n=mr.buf2BlocksBuf(t,s);return mr.encryptBlocks(n,e,r,i).flat()}static decrypt(t,e,r,i){const s=e.length,n=[];for(let e=0;e<t.length/s;e++)n.push(t.slice(e*s,e*s+s));const a=mr.decryptBlocks(n,e,r,i);return mr.blockBufs2Buf(a)}static encryptBlock(t,e,r,i){const s=mr.xorBufs(t,e);return r.encrypt(s,i)}static decryptBlock(t,e,r,i){const s=r.decrypt(t,i);return mr.xorBufs(s,e)}static encryptBlocks(t,e,r,i){const s=[];for(let n=0;n<t.length;n++){const a=t[n],o=mr.encryptBlock(a,e,r,i);s.push(o),e=o}return s}static decryptBlocks(t,e,r,i){const s=[];for(let n=0;n<t.length;n++){const a=t[n],o=mr.decryptBlock(a,e,r,i);s.push(o),e=a}return s}static pkcs7Pad(t,e){const r=e/8-t.length,i=new Array(r);return i.fill(r),[...t,...i]}static pkcs7Unpad(t){const e=t[t.length-1],r=t.slice(t.length-e,t.length),i=new Array(e);if(i.fill(e),_t(r)!==_t(i))throw new Error("invalid padding");return t.slice(0,t.length-e)}static xorBufs(t,e){if(t.length!==e.length)throw new Error("bufs must have the same length");const r=new Array(t.length);for(let i=0;i<t.length;i++)r[i]=t[i]^e[i];return r}}class gr{static encrypt(t,e,r,i=!0){r=r||new Array(16).fill(0)||Yt(16);const s=mr.encrypt(t,r,pr,e);return i?[...r,...s]:[...s]}static decrypt(t,e,r){if(r){const i=t;return mr.decrypt(i,r,pr,e)}{r=t.slice(0,16);const i=t.slice(16);return mr.decrypt(i,r,pr,e)}}}class wr{static ivkEkM(t,e){const r=t,i=e.mul(r),s=new Xt(i.x,i.y).encode(!0),n=yt(s);return{iv:n.slice(0,16),kE:n.slice(16,32),kM:n.slice(32,64)}}static electrumEncrypt(t,e,r,i=!1){let s;r||(r=te.fromRandom()),i||(s=r.toPublicKey().encode(!0));const{iv:n,kE:a,kM:o}=wr.ivkEkM(r,e),c=gr.encrypt(t,a,n,!1),h=xt("BIE1","utf8");let d;d=s?[...h,...s,...c]:[...h,...c];const u=Pt(o,d);return[...d,...u]}static electrumDecrypt(t,e,r){const i=t.slice(0,4);if("BIE1"!==Mt(i,"utf8"))throw new Error("Invalid Magic");let s=4,n=null;if(t.length-s-32>=33){const e=t[s];2===e||3===e?(n=t.slice(s,s+33),s+=33):4===e&&(n=t.slice(s,s+65),s+=65)}if(n)r||(r=Xt.fromString(_t(n)));else if(!r)throw new Error("Sender public key is required");const{iv:a,kE:o,kM:c}=wr.ivkEkM(e,r),h=t.slice(s,t.length-32),d=t.slice(t.length-32,t.length),u=Pt(c,t.slice(0,t.length-32));if(_t(d)!==_t(u))throw new Error("Invalid checksum");return gr.decrypt(h,o,a)}static bitcoreEncrypt(t,e,r,i){r||(r=te.fromRandom());const s=r,n=r.toPublicKey().encode(!0),a=e.mul(s).getX().toArray("be",32),o=yt(a),c=o.slice(0,32),h=o.slice(32,64),d=gr.encrypt(t,c,i),u=Pt(h,[...d]);return[...n,...d,...u]}static bitcoreDecrypt(t,e){const r=e,i=Xt.fromString(_t(t.slice(0,33))).mul(r);if(i.eq(new Dt(0,0)))throw new Error("P equals 0");const s=i.getX().toArray("be",32),n=yt(s),a=n.slice(0,32),o=n.slice(32,64),c=t.slice(33,t.length-32),h=t.slice(t.length-32,t.length),d=Pt(o,c);if(_t(h)!==_t(d))throw new Error("Invalid checksum");return[...gr.decrypt(c,a)]}}function yr(t,e){const r=new Ze(0,[],[],0);return r.outputs=Array(t.vout+1).fill(null),r.outputs[t.vout]={satoshis:t.satoshis,lockingScript:xe.fromHex(t.script)},{sourceTransaction:r,sourceTXID:t.txid,sourceOutputIndex:t.vout,unlockingScriptTemplate:e,sequence:4294967295}}class vr{static generate(t,e){const r=this.withDefaultOptions(e);return kr(t,this.getCounter(r.timestamp,r.period),r)}static validate(t,e,r){const i=this.withDefaultValidateOptions(r);if((e=e.trim()).length!=i.digits)return!1;const s=this.getCounter(i.timestamp,i.period),n=[s];for(let t=1;t<=i.skew;t++)n.push(s+t),n.push(s-t);for(const r of n)if(e===kr(t,r,i))return!0;return!1}static getCounter(t,e){const r=Math.floor(t/1e3);return Math.floor(r/e)}static withDefaultOptions(t){return{digits:2,algorithm:"SHA-1",period:30,timestamp:Date.now(),...t}}static withDefaultValidateOptions(t){return{skew:1,...this.withDefaultOptions(t)}}}function kr(t,e,r){const i=function(t,e,r){switch(r){case"SHA-1":return new bt(t).update(e);case"SHA-256":return new ft(t).update(e);case"SHA-512":return new pt(t).update(e);default:throw new Error("unsupported HMAC algorithm")}}(t,new c(e).toArray("be",8),r.algorithm),s=i.digest(),n=15&s[s.length-1],a=s.slice(n,n+4);return(2147483647&new c(a).toNumber()).toString().slice(-r.digits)}return e})()));
|