@kassealhq/sdk 0.3.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +118 -2
  3. package/SECURITY.md +3 -2
  4. package/STABILITY.md +25 -12
  5. package/dist/artifacts/contracts/lock/v1/artifacts/build-report.txt +4 -0
  6. package/dist/artifacts/contracts/lock/v1/artifacts/factory.artifact.json +267 -0
  7. package/dist/artifacts/contracts/lock/v1/artifacts/factory.ctor.json +80 -0
  8. package/dist/artifacts/contracts/lock/v1/artifacts/lock.artifact.json +258 -0
  9. package/dist/artifacts/contracts/lock/v1/artifacts/lock.ctor.json +112 -0
  10. package/dist/artifacts/contracts/lock/v1/artifacts/manifest.json +70 -0
  11. package/dist/artifacts/manifest.json +18 -0
  12. package/dist/chunks/chunk-H7LB2HPQ.js +4 -0
  13. package/dist/chunks/chunk-WJFZETEQ.js +1 -0
  14. package/dist/chunks/token-lock-v1-763GG7M6.js +1 -0
  15. package/dist/index.d.ts +458 -12
  16. package/dist/index.js +1 -1
  17. package/dist/node.d.ts +1 -1
  18. package/dist/node.js +1 -1
  19. package/dist/web-lite-mainnet.d.ts +1 -1
  20. package/dist/web-lite-mainnet.js +1 -1
  21. package/dist/web-lite-testnet-10.d.ts +1 -1
  22. package/dist/web-lite-testnet-10.js +1 -1
  23. package/dist/web-mainnet.d.ts +1 -1
  24. package/dist/web-mainnet.js +1 -1
  25. package/dist/web-testnet-10.d.ts +1 -1
  26. package/dist/web-testnet-10.js +1 -1
  27. package/dist/web.d.ts +1 -1
  28. package/dist/web.js +1 -1
  29. package/docs/api.md +52 -0
  30. package/docs/contract-artifacts.md +32 -3
  31. package/docs/errors.md +8 -0
  32. package/docs/explorers.md +27 -1
  33. package/docs/partner-tag.md +134 -0
  34. package/docs/wallets.md +5 -0
  35. package/examples/README.md +1 -0
  36. package/examples/partner-tag.ts +58 -0
  37. package/package.json +2 -1
  38. package/dist/chunks/chunk-FYCRPHEE.js +0 -4
  39. package/dist/chunks/chunk-JZJ7MFR5.js +0 -1
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-XLPNXOE2.js";var ui=class extends Error{static{a(this,"NotSupported")}constructor(t,n){super(`${t} is not supported by the "${n}" data source`);this.name="NotSupported"}};var Rt=class extends Error{static{a(this,"LayoutError")}constructor(t){super(t);this.name=new.target.name}};var Ln=class extends Rt{static{a(this,"UnknownTemplateError")}templateHash;constructor(t){super(`unknown template hash ${t}: refusing to decode. A program is decodable only after its state offset and identifier semantics have been verified and registered. Never infer them.`);this.templateHash=t}};var Do=class extends Rt{static{a(this,"TemplateMismatchError")}expected;computed;constructor(t,n){super(`template hash mismatch: caller asserted ${t} but the program hashes to ${n}`);this.expected=t;this.computed=n}};var Ho=class extends Rt{static{a(this,"TemplateNotDecodableError")}templateHash;constructor(t,n){super(`template ${t} is recognised but not decodable: ${n}`);this.templateHash=t}};var F=class extends Rt{static{a(this,"DecodeError")}};var q=class extends Rt{static{a(this,"ValidationError")}};var vt=class extends Rt{static{a(this,"SupplyError")}};var $r=class extends Rt{static{a(this,"OwnershipError")}};var ne=class extends Rt{static{a(this,"TransferError")}};var Is=0;var Ls=76;var $s=77;var Rs=78;var Us=79;var Ns=81;var Kd=75;function Z(e){const t=e.length;if(t===0)return Uint8Array.of(Is);if(t<=Kd)return _(Uint8Array.of(t),e);if(t<=255)return _(Uint8Array.of(Ls,t),e);if(t<=65535)return _(Uint8Array.of($s,t&255,t>>>8),e);if(t<=4294967295){return _(Uint8Array.of(Rs,t&255,t>>>8&255,t>>>16&255,t>>>24&255),e)}throw new q(`payload too large to push: ${t} bytes`)}a(Z,"encodePushExplicit");function me(e){if(e.length===1){const t=e[0];if(t>=1&&t<=16)return Uint8Array.of(Ns+t-1);if(t===129)return Uint8Array.of(Us)}return Z(e)}a(me,"encodePushMinimal");function Nt(e,t){if(t>=e.length){throw new F(`truncated: expected a push at offset ${t}, buffer is ${e.length} bytes`)}const n=e[t];if(n===Is)return{payload:new Uint8Array(0),next:t+1};let r;let o;if(n<=Kd){r=n;o=1}else if(n===Ls){r=_s(e,t+1,1)[0];o=2;if(r<=Kd)throw Nd(n,r,t)}else if(n===$s){const c=_s(e,t+1,2);r=c[0]|c[1]<<8;o=3;if(r<=255)throw Nd(n,r,t)}else if(n===Rs){const c=_s(e,t+1,4);r=(c[0]|c[1]<<8|c[2]<<16|c[3]<<24)>>>0;o=5;if(r<=65535)throw Nd(n,r,t)}else{throw new F(`offset ${t}: opcode 0x${n.toString(16).padStart(2,"0")} is not a PushExplicit data push`)}const i=t+o;const s=_s(e,i,r);return{payload:s,next:i+r}}a(Nt,"readPushExplicit");function Nd(e,t,n){return new F(`offset ${n}: non-canonical push -- opcode 0x${e.toString(16)} used for a ${t}-byte payload`)}a(Nd,"nonCanonical");function _s(e,t,n){if(t+n>e.length){throw new F(`truncated: need ${n} bytes at offset ${t}, have ${e.length-t}`)}return e.subarray(t,t+n)}a(_s,"need");var Ut=8;var Kt=(1n<<63n)-1n;var fm=-Kt;function ct(e){if(typeof e!=="bigint"){throw new q(`int state value must be a bigint, got ${typeof e}`)}if(e>Kt||e<fm){throw new q(`int out of KCC1 range: ${e}`)}const t=e<0n;let n=t?-e:e;const r=new Uint8Array(Ut);for(let o=0;o<Ut;o++){r[o]=Number(n&0xffn);n>>=8n}if(t)r[Ut-1]|=128;return r}a(ct,"encodeIntState");function sn(e){if(e.length!==Ut){throw new F(`int state payload must be ${Ut} bytes, got ${e.length}`)}const t=(e[Ut-1]&128)!==0;let n=0n;for(let r=Ut-1;r>=0;r--){const o=r===Ut-1?e[r]&127:e[r];n=n<<8n|BigInt(o)}if(t&&n===0n){throw new F("non-canonical int: negative zero")}return t?-n:n}a(sn,"decodeIntState");function _f(e){return Uint8Array.of(e?1:0)}a(_f,"encodeBoolState");function If(e){if(e.length!==1||e[0]!==0&&e[0]!==1){throw new F(`bool payload must be exactly 00 or 01, got ${h(e)}`)}return e[0]===1}a(If,"decodeBoolState");function _(...e){const t=e.reduce((o,i)=>o+i.length,0);const n=new Uint8Array(t);let r=0;for(const o of e){n.set(o,r);r+=o.length}return n}a(_,"concat");function h(e){return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}a(h,"toHex");function L(e){const t=e.startsWith("0x")?e.slice(2):e;if(t.length%2!==0||/[^0-9a-fA-F]/.test(t)){throw new F(`invalid hex string: ${e.slice(0,32)}...`)}const n=new Uint8Array(t.length/2);for(let r=0;r<n.length;r++)n[r]=parseInt(t.slice(r*2,r*2+2),16);return n}a(L,"fromHex");function $(e,t){if(e.length!==t.length)return false;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return false;return true}a($,"bytesEqual");var Rf=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]);var Qe=[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],[14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],[11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4],[7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8],[9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13],[2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9],[12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11],[13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10],[6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5],[10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],[14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3]].flat().map(e=>2*e);var Rr=128;var W=new Uint32Array(32);var fi=new Uint32Array(32);function Ks(e,t){const n=W[e]+W[t];let r=W[e+1]+W[t+1];if(n>=4294967296)r++;W[e]=n;W[e+1]=r}a(Ks,"add64vv");function Lf(e,t,n){const r=W[e]+t;let o=W[e+1]+n;if(r>=4294967296)o++;W[e]=r;W[e+1]=o}a(Lf,"add64vc");function cr(e,t,n,r,o,i){Ks(e,t);Lf(e,fi[o],fi[o+1]);let s=W[r]^W[e];let c=W[r+1]^W[e+1];W[r]=c;W[r+1]=s;Ks(n,r);s=W[t]^W[n];c=W[t+1]^W[n+1];W[t]=s>>>24^c<<8;W[t+1]=c>>>24^s<<8;Ks(e,t);Lf(e,fi[i],fi[i+1]);s=W[r]^W[e];c=W[r+1]^W[e+1];W[r]=s>>>16^c<<16;W[r+1]=c>>>16^s<<16;Ks(n,r);s=W[t]^W[n];c=W[t+1]^W[n+1];W[t]=c>>>31^s<<1;W[t+1]=s>>>31^c<<1}a(cr,"g");function Bd(e,t,n,r,o){for(let i=0;i<16;i++){W[i]=e[i];W[i+16]=Rf[i]}W[24]=W[24]^r>>>0;W[25]=W[25]^Math.floor(r/4294967296);if(o){W[28]=~W[28];W[29]=~W[29]}for(let i=0;i<32;i++){const s=n+4*i;fi[i]=t[s]|t[s+1]<<8|t[s+2]<<16|t[s+3]<<24}for(let i=0;i<12;i++){const s=i*16;cr(0,8,16,24,Qe[s],Qe[s+1]);cr(2,10,18,26,Qe[s+2],Qe[s+3]);cr(4,12,20,28,Qe[s+4],Qe[s+5]);cr(6,14,22,30,Qe[s+6],Qe[s+7]);cr(0,10,20,30,Qe[s+8],Qe[s+9]);cr(2,12,22,24,Qe[s+10],Qe[s+11]);cr(4,14,16,26,Qe[s+12],Qe[s+13]);cr(6,8,18,28,Qe[s+14],Qe[s+15])}for(let i=0;i<16;i++)e[i]=e[i]^W[i]^W[i+16]}a(Bd,"compress");function Go(e,{outLen:t=32,key:n=new Uint8Array(0)}={}){if(!Number.isInteger(t)||t<1||t>64)throw new RangeError(`blake2b: outLen must be 1..64, got ${t}`);if(n.length>64)throw new RangeError(`blake2b: key must be at most 64 bytes, got ${n.length}`);const r=Rf.slice();r[0]=r[0]^(16842752^n.length<<8^t);let o=e;if(n.length>0){const s=new Uint8Array(Rr);s.set(n);o=_(s,e)}if(o.length===0){Bd(r,new Uint8Array(Rr),0,0,true)}else{const s=Math.ceil(o.length/Rr);for(let d=0;d<s-1;d++)Bd(r,o,d*Rr,(d+1)*Rr,false);const c=new Uint8Array(Rr);c.set(o.subarray((s-1)*Rr));Bd(r,c,0,o.length,true)}const i=new Uint8Array(t);for(let s=0;s<t;s++)i[s]=r[s>>2]>>>8*(s&3);return i}a(Go,"blake2b");var pm=256;var $f=64;var Ur=[];function bm(e,t){if(e.length!==t.length)return false;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return false;return true}a(bm,"sameBytes");function Y(e){if(e.length<pm)return _(Uint8Array.of(170,32),Go(e,{outLen:32}),Uint8Array.of(135));for(let n=0;n<Ur.length;n++){const r=Ur[n];if(bm(r.program,e)){if(n>0){Ur.splice(n,1);Ur.unshift(r)}return Uint8Array.from(r.spk)}}const t=_(Uint8Array.of(170,32),Go(e,{outLen:32}),Uint8Array.of(135));Ur.unshift({program:Uint8Array.from(e),spk:Uint8Array.from(t)});if(Ur.length>$f)Ur.length=$f;return t}a(Y,"p2shScript");function mm(e,t){return h(e)===h(Y(t))}a(mm,"p2shCommitsTo");function Vo(e,t){const n=new Uint8Array(t);let r=BigInt(e);if(r<0n)throw new RangeError("le: negative value");for(let o=0;o<t;o++){n[o]=Number(r&0xffn);r>>=8n}if(r!==0n)throw new RangeError(`le: value does not fit in ${t} bytes`);return n}a(Vo,"le");var gm=new TextEncoder().encode("CovenantID");function We(e,t,n){const r=[L(e),Vo(t,4),Vo(n.length,8)];for(const o of n){r.push(Vo(o.index,4),Vo(o.value,8),Vo(o.scriptVersion,2),Vo(o.script.length,8),o.script)}return h(Go(_(...r),{outLen:32,key:gm}))}a(We,"covenantIdKip20");var ge=class extends F{static{a(this,"StateCodecError")}};var Uf=["v1"];function Wo(e){switch(e){case"v3":return e;case"v1":return"v3";default:throw new ge(`unknown contract set ${String(e)}`)}}a(Wo,"poolStateLayoutOf");var F2=1;var $n=53;var j2=1;var Nr=139;var bt=36;var Ve=new Uint8Array(32);var Bs=0;var mt=4;var Kr=0;var Bt=1;var Nf=1000000n;function Md(e){Wo(e);return Nr}a(Md,"poolStateLength");function D2(e){return e===Nr?"v3":void 0}a(D2,"poolStateSetOfLength");function zo(e){return"v3"}a(zo,"poolStateSet");function pi(e){return!$(e.lpCovId,Ve)}a(pi,"isPoolBound");function Br(e){switch(e){case"v1":return"v2";default:throw new ge(`unknown contract set ${String(e)}`)}}a(Br,"feeModelOf");function dt(e){return e.length===bt&&e[0]===0&&e[1]===0&&e[2]===32&&e[35]===172}a(dt,"isP2pkSpk36");function ym(e,t){if(!Number.isInteger(e)||e<0||e>255)throw new ge(`${t} must be a byte`);return Uint8Array.of(e)}a(ym,"byteField");function Kf(e){let t=0;return{next(n){let r;try{r=Nt(e,t)}catch(o){throw new ge(o.message)}if(r.payload.length!==n)throw new ge(`field at ${t}: ${r.payload.length} bytes, expected ${n}`);t=r.next;return r.payload},end(){if(t!==e.length)throw new ge(`trailing bytes: consumed ${t} of ${e.length}`)}}}a(Kf,"reader");function qo(e){try{return sn(e)}catch(t){throw new ge(t.message)}}a(qo,"intField");function hm(e){const t=e[0];if(t===void 0)throw new ge("byte field is empty");return t}a(hm,"byteOf");function Jo(e){if(e.tokenCovId.length!==32)throw new ge("curve state: tokenCovId must be 32 bytes");const t=ym(e.phase,"curve state: phase");if(e.lotsSold<0n||e.feeAccrued<0n)throw new ge("curve state: lotsSold and feeAccrued must be non-negative");const n=_(Z(e.tokenCovId),Z(ct(e.lotsSold)),Z(ct(e.feeAccrued)),Z(t));if(n.length!==$n)throw new ge(`curve state encodes to ${n.length} B`);return n}a(Jo,"encodeCurveState");function Xo(e){if(e.length!==$n)throw new ge(`curve state must be ${$n} B, got ${e.length}`);const t=Kf(e);const n={tokenCovId:Uint8Array.from(t.next(32)),lotsSold:qo(t.next(8)),feeAccrued:qo(t.next(8)),phase:hm(t.next(1))};t.end();if(!$(Jo(n),e))throw new ge("curve state does not round-trip");return n}a(Xo,"decodeCurveState");function Fd(e){if(e.tokenCovId.length!==32)throw new ge("pool state: tokenCovId must be 32 bytes");if(e.creatorSpk===void 0)throw new ge("pool state: creatorSpk is required");if(e.creatorSpk.length!==bt)throw new ge(`pool state: creatorSpk must be ${bt} bytes`);if(e.lpCovId===void 0||e.lpCovId.length!==32)throw new ge("pool state: lpCovId must be 32 bytes");const t=_(Z(e.tokenCovId),Z(ct(e.kasScaled)),Z(ct(e.tokenReserve)),Z(ct(e.lpShares)),Z(e.lpCovId),Z(ct(e.feeAccruedScaled)),Z(e.creatorSpk));if(t.length!==Nr)throw new ge(`pool state encodes to ${t.length} B, expected ${Nr}`);return t}a(Fd,"encodePoolState");function jd(e,t){if(t!==void 0)Wo(t);if(e.length!==Nr)throw new ge(`pool state must be ${Nr} B, got ${e.length}`);const n=Kf(e);const r={tokenCovId:Uint8Array.from(n.next(32)),kasScaled:qo(n.next(8)),tokenReserve:qo(n.next(8)),lpShares:qo(n.next(8))};const o=Uint8Array.from(n.next(32));const i={...r,lpCovId:o,feeAccruedScaled:qo(n.next(8)),creatorSpk:Uint8Array.from(n.next(bt))};n.end();if(!$(Fd(i),e))throw new ge("pool state does not round-trip");return i}a(jd,"decodePoolState");var jf=32;var Qo=64;var Bf=1024;var km=1<<0;var vm=1<<1;var xm=1<<2;var wm=1<<3;var bi=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];var Sm=[2,6,3,10,7,0,4,13,1,11,12,5,9,14,15,8];function Ms(e,t){return(e>>>t|e<<32-t)>>>0}a(Ms,"rotr");function dr(e,t,n,r,o,i,s){e[t]=e[t]+e[n]+i>>>0;e[o]=Ms(e[o]^e[t],16);e[r]=e[r]+e[o]>>>0;e[n]=Ms(e[n]^e[r],12);e[t]=e[t]+e[n]+s>>>0;e[o]=Ms(e[o]^e[t],8);e[r]=e[r]+e[o]>>>0;e[n]=Ms(e[n]^e[r],7)}a(dr,"g");function Mr(e,t){dr(e,0,4,8,12,t[0],t[1]);dr(e,1,5,9,13,t[2],t[3]);dr(e,2,6,10,14,t[4],t[5]);dr(e,3,7,11,15,t[6],t[7]);dr(e,0,5,10,15,t[8],t[9]);dr(e,1,6,11,12,t[10],t[11]);dr(e,2,7,8,13,t[12],t[13]);dr(e,3,4,9,14,t[14],t[15])}a(Mr,"round");function Yo(e){const t=new Uint32Array(16);for(let n=0;n<16;n++)t[n]=e[Sm[n]];return t}a(Yo,"permute");function Vd(e,t,n,r,o){const i=n%4294967296;const s=Math.floor(n/4294967296);const c=new Uint32Array(16);for(let u=0;u<8;u++)c[u]=e[u];c[8]=bi[0];c[9]=bi[1];c[10]=bi[2];c[11]=bi[3];c[12]=i>>>0;c[13]=s>>>0;c[14]=r>>>0;c[15]=o>>>0;let d=t;Mr(c,d);d=Yo(d);Mr(c,d);d=Yo(d);Mr(c,d);d=Yo(d);Mr(c,d);d=Yo(d);Mr(c,d);d=Yo(d);Mr(c,d);d=Yo(d);Mr(c,d);for(let u=0;u<8;u++){c[u]=(c[u]^c[u+8])>>>0;c[u+8]=(c[u+8]^e[u])>>>0}return c}a(Vd,"compress");function Mf(e){const t=new Uint32Array(16);for(let n=0;n<16;n++){const r=n*4;t[n]=(e[r]|e[r+1]<<8|e[r+2]<<16|e[r+3]<<24)>>>0}return t}a(Mf,"wordsFromLEBytes");function Dd(e){return Vd(e.cv,e.block,e.counter,e.blockLen,e.flags).subarray(0,8)}a(Dd,"chainingValue");function Am(e,t){const n=new Uint8Array(t);let r=0;let o=0;while(o<t){const i=Vd(e.cv,e.block,r,e.blockLen,e.flags|wm);for(let s=0;s<16&&o<t;s++){const c=i[s];for(let d=0;d<4&&o<t;d++)n[o++]=c>>>8*d&255}r++}return n}a(Am,"rootBytes");var Fs=class{static{a(this,"ChunkState")}cv;chunkCounter;block=new Uint8Array(Qo);blockLen=0;blocksCompressed=0;constructor(t,n){this.cv=Uint32Array.from(t);this.chunkCounter=n}len(){return Qo*this.blocksCompressed+this.blockLen}startFlag(){return this.blocksCompressed===0?km:0}update(t){let n=0;while(n<t.length){if(this.blockLen===Qo){this.cv=Vd(this.cv,Mf(this.block),this.chunkCounter,Qo,this.startFlag()).subarray(0,8);this.blocksCompressed++;this.block.fill(0);this.blockLen=0}const r=Qo-this.blockLen;const o=Math.min(r,t.length-n);this.block.set(t.subarray(n,n+o),this.blockLen);this.blockLen+=o;n+=o}}output(){return{cv:this.cv,block:Mf(this.block),counter:this.chunkCounter,blockLen:this.blockLen,flags:this.startFlag()|vm}}};function Ff(e,t,n){const r=new Uint32Array(16);r.set(e,0);r.set(t,8);return{cv:n,block:r,counter:0,blockLen:Qo,flags:xm}}a(Ff,"parentOutput");var Hd=class{static{a(this,"Blake3Hasher")}#e=Uint32Array.from(bi);#t=new Fs(this.#e,0);#n=[];update(t){let n=0;while(n<t.length){if(this.#t.len()===Bf){const i=Dd(this.#t.output());const s=this.#t.chunkCounter+1;this.#r(i,s);this.#t=new Fs(this.#e,s)}const r=Bf-this.#t.len();const o=Math.min(r,t.length-n);this.#t.update(t.subarray(n,n+o));n+=o}return this}#r(t,n){let r=t;let o=n;while((o&1)===0){r=Dd(Ff(this.#n.pop(),r,this.#e));o=Math.floor(o/2)}this.#n.push(r)}digest(t=jf){let n=this.#t.output();for(let r=this.#n.length-1;r>=0;r--){n=Ff(this.#n[r],Dd(n),this.#e)}return Am(n,t)}};function Zo(e,t=jf){return new Hd().update(e).digest(t)}a(Zo,"blake3");function ea(e){switch(e.semantic){case"pubkey":return{kind:"signature",semantic:"pubkey",pubkey:e.identifier};case"p2pkh-schnorr":case"p2pkh-ecdsa":return{kind:"signature-with-pubkey-reveal",semantic:e.semantic,pubkeyHash:e.identifier};case"script-hash":return{kind:"p2sh-input",semantic:"script-hash",scriptHash:e.identifier};case"covenant-id":return{kind:"covenant-input",semantic:"covenant-id",covenantId:e.identifier};case"address-presence":return{kind:"presence-input",semantic:"address-presence",pubkey:e.identifier}}}a(ea,"describeAuth");var Rn="kcc0020-112";var Fr=112;var Ze=32;var cn=new Map([[0,"pubkey"],[1,"p2pkh-schnorr"],[2,"p2pkh-ecdsa"],[3,"script-hash"],[4,"covenant-id"]]);var Tm=new Map([["pubkey","p2pk-schnorr/v1"],["p2pkh-schnorr","p2pkh-schnorr/v1"],["p2pkh-ecdsa","p2pkh-ecdsa/v1"],["script-hash","p2sh/v1"],["covenant-id","covenant-id/v1"]]);var Gf=0;var Gs=1;var qf=2;var Wf=3;var Wd=new Map([[Gf,"disabled/v1"],[Gs,"amount-threshold/v1"],[qf,"schnorr-signature/v1"],[Wf,"hash-chain/v1"]]);var Cm=0;var Pm=1;var Nn=3;var Hr=3;var js=65;var Ds=32;var Gd=33;var Df=129;var ta=Object.freeze({transfer:Object.freeze({signature:"transfer({int,byte[32],byte,byte,byte[32],byte[32]}[],byte[])",tagHex:"79c71c23"}),transferDelegator:Object.freeze({signature:"transfer_delegator(byte[])",tagHex:"fd3ef14a"})});function qs(e){return Zo(new TextEncoder().encode(e)).slice(0,4)}a(qs,"dispatchTag");var lr="borrowScheme";var jr="borrowGuard";var Dr="extensionCommitment";var Hf=new Uint8Array(Ze);function et(e,t=cn){const n=t.get(e.ownerScheme);if(n===void 0){throw new q(`owner_scheme ${Un(e.ownerScheme)} is not defined by this template (known: ${zd(t)})`)}const r={layoutId:Rn,amount:e.amount,owner:{schemeByte:e.ownerScheme,semantic:n,identifier:Uint8Array.from(e.owner)},mintCapable:null,extra:Object.freeze({[lr]:Uint8Array.of(e.borrowScheme),[jr]:Uint8Array.from(e.borrowGuard??Hf),[Dr]:Uint8Array.from(e.extensionCommitment??Hf)})};Mt.validate(r,t);return r}a(et,"makeKcc0020State");function Ae(e,t=cn){Mt.validate(e,t);return{amount:e.amount,owner:e.owner.identifier,ownerScheme:e.owner.schemeByte,borrowScheme:e.extra[lr][0],borrowGuard:e.extra[jr],extensionCommitment:e.extra[Dr]}}a(Ae,"kcc0020Fields");function Hs(e){return $m(e,lr)}a(Hs,"borrowSchemeOf");function Vs(e){return Zf(e,jr)}a(Vs,"borrowGuardOf");function qd(e){return Zf(e,Dr)}a(qd,"extensionCommitmentOf");function zf(e){const t=new Uint8Array(Ze);t.set(ct(e),0);return t}a(zf,"thresholdGuard");function Em(e){if(e.length!==Ze)throw new q(`borrow_guard must be ${Ze} bytes, got ${e.length}`);const t=(e[7]&128)!==0;let n=0n;for(let o=7;o>=0;o--){const i=o===7?e[o]&127:e[o];n=n<<8n|BigInt(i)}const r=t?-n:n;return{decoded:r,effective:r<0n?0n:r}}a(Em,"decodeThresholdGuard");function Jf(e,t){if(t.length!==Ze)throw new q(`covenant id must be ${Ze} bytes, got ${t.length}`);return e.owner.semantic==="covenant-id"&&$(e.owner.identifier,t)}a(Jf,"isSelfOwned");function Vr(e,t,n="token output"){if(Jf(e,t)){throw new ne(`${n} is self-owned: owner_scheme covenant-id/v1 with owner == its own covenant id ${h(t)} is anyone-can-spend; refusing to construct it`)}}a(Vr,"assertNotSelfOwned");var Mt={id:Rn,stateLength:Fr,referenceSchemes:cn,encode(e,t=cn){this.validate(e,t);const n=_(Z(ct(e.amount)),Z(e.owner.identifier),Z(Uint8Array.of(e.owner.schemeByte)),Z(e.extra[lr]),Z(e.extra[jr]),Z(e.extra[Dr]));if(n.length!==Fr){throw new q(`encoded ${n.length} bytes, expected ${Fr}`)}return n},decode(e,t){if(e.length!==Fr){throw new F(`${Rn} state must be exactly ${Fr} bytes, got ${e.length}`)}let n=0;const r=a((f,b)=>{const g=Nt(e,n);if(g.payload.length!==b)throw new F(`${f} must be ${b} bytes, got ${g.payload.length}`);n=g.next;return g.payload},"field");const o=sn(r("amount",8));const i=r("owner",Ze);const s=r("owner_scheme",1)[0];const c=r("borrow_scheme",1)[0];const d=r("borrow_guard",Ze);const u=r("extension_commitment",Ze);if(n!==e.length)throw new F(`trailing bytes: consumed ${n} of ${e.length}`);if(o<0n)throw new F(`negative amount ${o} in state ${h(e)}`);const l=t.get(s);if(l===void 0){throw new F(`owner_scheme ${Un(s)} is not defined by this template (known: ${zd(t)}). Refusing to guess an owner.`)}if(!Wd.has(c)){throw new F(`borrow_scheme ${Un(c)} is unassigned (known: 0x00..0x03)`)}return{layoutId:Rn,amount:o,owner:{schemeByte:s,semantic:l,identifier:Uint8Array.from(i)},mintCapable:null,extra:Object.freeze({[lr]:Uint8Array.of(c),[jr]:Uint8Array.from(d),[Dr]:Uint8Array.from(u)})}},validate(e,t=cn){if(e===null||typeof e!=="object")throw new q("state must be an object");if(e.layoutId!==Rn)throw new q(`expected ${Rn}, got ${String(e.layoutId)}`);if(typeof e.amount!=="bigint")throw new q(`amount must be a bigint, got ${typeof e.amount}`);if(e.amount<0n)throw new q(`amount must be non-negative, got ${e.amount}`);if(e.amount>Kt)throw new q(`amount ${e.amount} exceeds the KCC1 int range`);const n=e.owner;if(n===null||typeof n!=="object")throw new q("owner must be an object");if(!(n.identifier instanceof Uint8Array)||n.identifier.length!==Ze){throw new q(`owner must be a ${Ze}-byte Uint8Array`)}if(!Number.isInteger(n.schemeByte)||n.schemeByte<0||n.schemeByte>255){throw new q(`owner_scheme must be a single byte, got ${String(n.schemeByte)}`)}const r=t.get(n.schemeByte);if(r===void 0){throw new q(`owner_scheme ${Un(n.schemeByte)} is not defined by this template (known: ${zd(t)})`)}if(r!==n.semantic){throw new q(`owner_scheme ${Un(n.schemeByte)} means '${r}' under this template, but the state claims '${String(n.semantic)}'`)}if(e.mintCapable!==null){throw new q(`${Rn} has no minter concept; mintCapable must be null, got ${String(e.mintCapable)}`)}const o=e.extra;if(o===null||typeof o!=="object")throw new q("extra must be an object");const i=o[lr];if(!(i instanceof Uint8Array)||i.length!==1){throw new q(`extra.${lr} must be a 1-byte Uint8Array`)}if(!Wd.has(i[0])){throw new q(`borrow_scheme ${Un(i[0])} is unassigned (known: 0x00..0x03)`)}for(const c of[jr,Dr]){const d=o[c];if(!(d instanceof Uint8Array)||d.length!==Ze){throw new q(`extra.${c} must be a ${Ze}-byte Uint8Array`)}}const s=Object.keys(o);if(s.length!==3){throw new q(`extra must hold exactly ${lr}, ${jr}, ${Dr}; got ${s.join(", ")}`)}},checkOwnershipTransition(e,t){Yf(e,t,Nn,Hr,cn);return e.map(n=>ea(n.state.owner))},checkSupply(e,t){if(e.length===0)throw new vt("a transition must consume at least one state");for(const n of[...e,...t])this.validate(n.state);Xf(e,t)}};function Xf(e,t){const n=e.reduce((o,i)=>o+i.state.amount,0n);const r=t.reduce((o,i)=>o+i.state.amount,0n);if(n>Kt)throw new vt(`total input amount ${n} exceeds the KCC1 int range`);if(n!==r){throw new vt(`supply not conserved: in=${n} out=${r} (delta ${r-n})`)}return n}a(Xf,"checkConservation");function Yf(e,t,n,r,o){if(e.length===0)throw new ne("a transfer must consume at least one state");if(e.length>n)throw new ne(`${e.length} token inputs exceed max_token_inputs ${n}`);if(t.length>r)throw new ne(`${t.length} token outputs exceed max_token_outputs ${r}`);for(const s of[...e,...t])Mt.validate(s.state,o);const i=qd(e[0].state);for(const s of e){if(!$(qd(s.state),i)){throw new ne(`input ${s.index}: extension_commitment differs from the leader's`)}}for(const s of t){if(!$(qd(s.state),i)){throw new ne(`output ${s.index}: extension_commitment differs from the inputs'`)}}}a(Yf,"checkFamilyShape");function Om(e,t){const n=a((r,o)=>{if(e.length!==r){throw new ne(`${Tm.get(t.semantic)} owner-authentication bytes must be ${o} (${r} bytes), got ${e.length}`)}},"want");switch(t.semantic){case"pubkey":n(js,"a 65-byte signature");return{scheme:"p2pk-schnorr/v1",signature:e};case"p2pkh-schnorr":{n(Ds+js,"a 32-byte public key then a 65-byte signature");const r=e.subarray(0,Ds);Vf(r,t.identifier);return{scheme:"p2pkh-schnorr/v1",pubkey:r,signature:e.subarray(Ds)}}case"p2pkh-ecdsa":{n(Gd+js,"a 33-byte compressed public key then a 65-byte signature");const r=e.subarray(0,Gd);Vf(r,t.identifier);return{scheme:"p2pkh-ecdsa/v1",pubkey:r,signature:e.subarray(Gd)}}case"script-hash":n(1,"one unsigned byte, the authority input index");return{scheme:"p2sh/v1",authorityInputIndex:e[0]};case"covenant-id":n(0,"empty");return{scheme:"covenant-id/v1"};case"address-presence":throw new ne("address-presence is not a KCC-2 owner scheme")}}a(Om,"parseOwnerWitness");function Vf(e,t){const n=Zo(e);if(!$(n,t)){throw new ne(`revealed public key hashes to ${h(n)}, but the state's owner is ${h(t)}`)}}a(Vf,"requireKeyHash");function _m(e,t){switch(t){case Gf:throw new ne("borrow_scheme is disabled/v1: borrowing is rejected");case Gs:if(e.length!==0)throw new ne(`amount-threshold/v1 borrow witness must be empty, got ${e.length} bytes`);return{scheme:"amount-threshold/v1"};case qf:if(e.length!==js){throw new ne(`schnorr-signature/v1 borrow witness must be a 65-byte signature, got ${e.length} bytes`)}return{scheme:"schnorr-signature/v1",signature:e};case Wf:if(e.length!==Df){throw new ne(`hash-chain/v1 borrow witness must be exactly ${Df} bytes, got ${e.length}`)}return{scheme:"hash-chain/v1",nextBorrowGuard:e.subarray(0,32),oneTimePubkey:e.subarray(32,64),signature:e.subarray(64)};default:throw new ne(`borrow_scheme ${Un(t)} is unassigned`)}}a(_m,"parseBorrowWitness");function Im(e,t){if(e.length!==Ze||t.length!==Ds){throw new q(`hash-chain link needs a 32-byte value and a 32-byte key, got ${e.length} and ${t.length}`)}return Zo(_(e,t))}a(Im,"hashChainLink");function Qf(e){const t=e.schemes??cn;const n=e.maxTokenInputs??Nn;const r=e.maxTokenOutputs??Hr;Yf(e.inputs,e.outputs,n,r,t);const o=Xf(e.inputs,e.outputs);if(!(e.witness instanceof Uint8Array)||e.witness.length===0){throw new ne("leader witness must carry a path byte")}const i=e.witness[0];const s=e.witness.subarray(1);const c=e.inputs[0].state;let d;let u;if(i===Cm){u="normal";d={kind:"owner",requirement:ea(c.owner),witness:Om(s,c.owner)}}else if(i===Pm){u="borrowed";d=Lm(e.inputs[0],e.outputs[0],s)}else{throw new ne(`witness path byte ${Un(i)} is reserved`)}const l=[];if(e.covenantId!==void 0){e.outputs.forEach((f,b)=>{if(Jf(f.state,e.covenantId))l.push(b)})}return{path:u,leader:d,delegators:e.inputs.slice(1).map(f=>ea(f.state.owner)),totalAmount:o,selfOwnedOutputs:l}}a(Qf,"checkTransfer");function Lm(e,t,n){if(t===void 0)throw new ne("a borrowed receive needs a successor at next_states[0]");const r=e.state;const o=t.state;const i=Hs(r);const s=Vs(r);const c=_m(n,i);let d=0n;let u=s;let l;switch(c.scheme){case"amount-threshold/v1":d=Em(s).effective;break;case"schnorr-signature/v1":l=s;break;case"hash-chain/v1":{const b=Im(c.nextBorrowGuard,c.oneTimePubkey);if(!$(b,s)){throw new ne(`revealed link hashes to ${h(b)}, not to the leader's borrow_guard ${h(s)}`)}u=c.nextBorrowGuard;l=c.oneTimePubkey;break}}const f=o.amount-r.amount;if(f<0n){throw new ne(`borrowed successor amount ${o.amount} is smaller than the leader's ${r.amount}`)}if(f<=d){throw new ne(`amount increase ${f} does not strictly exceed the effective threshold ${d}`)}if(!$(o.owner.identifier,r.owner.identifier))throw new ne("borrowed successor does not preserve owner");if(o.owner.schemeByte!==r.owner.schemeByte)throw new ne("borrowed successor does not preserve owner_scheme");if(Hs(o)!==i)throw new ne("borrowed successor does not preserve borrow_scheme");if(!$(Vs(o),u)){throw new ne(`borrowed successor does not carry the expected next_borrow_guard ${h(u)}`)}if(e.kasValue!==void 0&&t.kasValue!==void 0&&t.kasValue<e.kasValue){throw new ne(`borrowed successor output carries ${t.kasValue} sompi, less than the borrowed input's ${e.kasValue}`)}return{kind:"borrow",scheme:i,schemeName:Wd.get(i),witness:c,increase:f,effectiveThreshold:d,...l===void 0?{}:{signer:l}}}a(Lm,"checkBorrowedReceive");function Ws(e,t,n=cn){if(e.length>Hr){throw new ne(`${e.length} next_states exceed max_token_outputs ${Hr}`)}const r=e.map(d=>Ae(d,n));const o=a(d=>me(_(...r.map(d))),"group");const i=[o(d=>ct(d.amount)),o(d=>d.owner),o(d=>Uint8Array.of(d.ownerScheme)),o(d=>Uint8Array.of(d.borrowScheme)),o(d=>d.borrowGuard),o(d=>d.extensionCommitment)];const s=me(t);const c=me(L(ta.transfer.tagHex));return{groupedFieldPushes:i,witnessPush:s,dispatchTagPush:c,bytes:_(...i,s,c)}}a(Ws,"encodeTransferArguments");var Un=a(e=>"0x"+e.toString(16).padStart(2,"0"),"hex2");var zd=a(e=>[...e.keys()].map(Un).join(", "),"knownSchemes");function $m(e,t){const n=e.extra?.[t];if(!(n instanceof Uint8Array)||n.length!==1)throw new q(`extra.${t} must be a 1-byte Uint8Array`);return n[0]}a($m,"extraByte");function Zf(e,t){const n=e.extra?.[t];if(!(n instanceof Uint8Array)||n.length!==Ze)throw new q(`extra.${t} must be a ${Ze}-byte Uint8Array`);return n}a(Zf,"extra32");var Rm=32;var na=64;var ep=1024;var Um=1<<0;var Nm=1<<1;var Km=1<<2;var Bm=1<<3;var Mm=1<<4;var zs=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];var Fm=[2,6,3,10,7,0,4,13,1,11,12,5,9,14,15,8];var Js=a((e,t)=>(e>>>t|e<<32-t)>>>0,"rotr");function ur(e,t,n,r,o,i,s){e[t]=e[t]+e[n]+i>>>0;e[o]=Js(e[o]^e[t],16);e[r]=e[r]+e[o]>>>0;e[n]=Js(e[n]^e[r],12);e[t]=e[t]+e[n]+s>>>0;e[o]=Js(e[o]^e[t],8);e[r]=e[r]+e[o]>>>0;e[n]=Js(e[n]^e[r],7)}a(ur,"g");function tp(e,t){ur(e,0,4,8,12,t[0],t[1]);ur(e,1,5,9,13,t[2],t[3]);ur(e,2,6,10,14,t[4],t[5]);ur(e,3,7,11,15,t[6],t[7]);ur(e,0,5,10,15,t[8],t[9]);ur(e,1,6,11,12,t[10],t[11]);ur(e,2,7,8,13,t[12],t[13]);ur(e,3,4,9,14,t[14],t[15])}a(tp,"round");function jm(e){const t=new Uint32Array(16);for(let n=0;n<16;n++)t[n]=e[Fm[n]];return t}a(jm,"permute");function Yd(e,t,n,r,o){const i=new Uint32Array(16);for(let c=0;c<8;c++)i[c]=e[c];i[8]=zs[0];i[9]=zs[1];i[10]=zs[2];i[11]=zs[3];i[12]=n%4294967296>>>0;i[13]=Math.floor(n/4294967296)>>>0;i[14]=r>>>0;i[15]=o>>>0;let s=t;for(let c=0;c<6;c++){tp(i,s);s=jm(s)}tp(i,s);for(let c=0;c<8;c++){i[c]=(i[c]^i[c+8])>>>0;i[c+8]=(i[c+8]^e[c])>>>0}return i}a(Yd,"compress");function Xd(e){const t=new Uint32Array(16);for(let n=0;n<16;n++){const r=n*4;t[n]=(e[r]|e[r+1]<<8|e[r+2]<<16|e[r+3]<<24)>>>0}return t}a(Xd,"words");var Jd=a(e=>Yd(e.cv,e.block,e.counter,e.blockLen,e.flags).subarray(0,8),"chainingValue");function Dm(e,t){const n=new Uint8Array(t);let r=0;let o=0;while(o<t){const i=Yd(e.cv,e.block,r++,e.blockLen,e.flags|Bm);for(let s=0;s<16&&o<t;s++)for(let c=0;c<4&&o<t;c++)n[o++]=i[s]>>>8*c&255}return n}a(Dm,"rootBytes");var Xs=class{static{a(this,"ChunkState")}cv;chunkCounter;base;block=new Uint8Array(na);blockLen=0;blocksCompressed=0;constructor(t,n,r){this.cv=Uint32Array.from(t);this.chunkCounter=n;this.base=r}len(){return na*this.blocksCompressed+this.blockLen}startFlag(){return this.blocksCompressed===0?Um:0}update(t){let n=0;while(n<t.length){if(this.blockLen===na){this.cv=Yd(this.cv,Xd(this.block),this.chunkCounter,na,this.base|this.startFlag()).subarray(0,8);this.blocksCompressed++;this.block.fill(0);this.blockLen=0}const r=Math.min(na-this.blockLen,t.length-n);this.block.set(t.subarray(n,n+r),this.blockLen);this.blockLen+=r;n+=r}}output(){return{cv:this.cv,block:Xd(this.block),counter:this.chunkCounter,blockLen:this.blockLen,flags:this.base|this.startFlag()|Nm}}};function np(e,t,n,r){const o=new Uint32Array(16);o.set(e,0);o.set(t,8);return{cv:n,block:o,counter:0,blockLen:na,flags:r|Km}}a(np,"parentOutput");function Hm(e,t,n=Rm){if(e.length!==32)throw new RangeError(`blake3Keyed: key must be 32 bytes, got ${e.length}`);const r=Xd(e).subarray(0,8);const o=Mm;let i=new Xs(r,0,o);const s=[];const c=a((l,f)=>{let b=l;let g=f;while((g&1)===0){b=Jd(np(s.pop(),b,r,o));g=Math.floor(g/2)}s.push(b)},"addChunk");let d=0;while(d<t.length){if(i.len()===ep){const f=i.chunkCounter+1;c(Jd(i.output()),f);i=new Xs(r,f,o)}const l=Math.min(ep-i.len(),t.length-d);i.update(t.subarray(d,d+l));d+=l}let u=i.output();for(let l=s.length-1;l>=0;l--)u=np(s[l],Jd(u),r,o);return Dm(u,n)}a(Hm,"blake3Keyed");function Vm(e){const t=new TextEncoder().encode(e);if(t.length>32)throw new RangeError(`domain ${e} exceeds 32 bytes`);const n=new Uint8Array(32);n.set(t);return n}a(Vm,"domainKey");function Ys(e,t){return Hm(Vm(e),t)}a(Ys,"keyedBlake3");var rp="9c0ca2acb45e92ffe6ceb4ae29188b35c82d9676cdd3ce067fd6ccc30a9c4a38";var Qs="00".repeat(20);function zt(e,t){const n=new Uint8Array(t);let r=BigInt(e);if(r<0n)throw new RangeError("le: negative value");for(let o=0;o<t;o++){n[o]=Number(r&0xffn);r>>=8n}if(r!==0n)throw new RangeError(`le: value does not fit in ${t} bytes`);return n}a(zt,"le");var Qd=a(e=>_(zt(e.length,8),e),"varBytes");function op(e){return e.length===0?L(rp):Ys("PayloadDigest",e)}a(op,"payloadDigest");function ap(e){const t=[zt(e.version,2),zt(e.inputs.length,8)];for(const r of e.inputs){const o=L(r.transactionId);if(o.length!==32)throw new RangeError(`input transaction id must be 32 bytes, got ${o.length}`);t.push(o,zt(r.index,4),Qd(new Uint8Array(0)),zt(r.sequence,8))}t.push(zt(e.outputs.length,8));for(const r of e.outputs){t.push(zt(r.value,8),zt(r.scriptVersion,2),Qd(L(r.script)));if(e.version>=1){if(r.covenant){const o=L(r.covenant.covenantId);if(o.length!==32)throw new RangeError(`covenant id must be 32 bytes, got ${o.length}`);t.push(Uint8Array.of(1),zt(r.covenant.authorizingInput,2),o)}else{t.push(Uint8Array.of(0))}}}const n=L(e.subnetworkId);if(n.length!==20)throw new RangeError(`subnetwork id must be 20 bytes, got ${n.length}`);t.push(zt(e.lockTime,8),n,zt(e.gas,8),Qd(new Uint8Array(0)));return _(...t)}a(ap,"restPreimage");function gt(e){if(e.version<1)throw new Error("txidV1: version 0 transactions use the BLAKE2b TransactionID hash");const t=op(L(e.payload));const n=Ys("TransactionRest",ap(e));return{txid:h(Ys("TransactionV1Id",_(t,n))),payloadDigest:h(t),restDigest:h(n)}}a(gt,"txidV1");function mi(e){return{version:e.version,inputs:e.inputs.map(t=>({...t,sequence:t.sequence.toString()})),outputs:e.outputs.map(t=>({...t,value:t.value.toString()})),lockTime:e.lockTime.toString(),subnetworkId:e.subnetworkId,gas:e.gas.toString(),payload:e.payload}}a(mi,"plainTxToJson");function Zs(e){const t=e["inputs"];const n=e["outputs"];return{version:Number(e["version"]),inputs:t.map(r=>({transactionId:String(r["transactionId"]),index:Number(r["index"]),sequence:BigInt(String(r["sequence"]??"0")),signatureScript:String(r["signatureScript"]??""),computeBudget:Number(r["computeBudget"]??0)})),outputs:n.map(r=>{const o=r["covenant"];return{value:BigInt(String(r["value"])),scriptVersion:Number(r["scriptVersion"]??0),script:String(r["script"]),covenant:o?{authorizingInput:Number(o["authorizingInput"]),covenantId:String(o["covenantId"])}:null}}),lockTime:BigInt(String(e["lockTime"]??"0")),subnetworkId:String(e["subnetworkId"]??Qs),gas:BigInt(String(e["gas"]??"0")),payload:String(e["payload"]??"")}}a(Zs,"plainTxFromJson");var G=class extends F{static{a(this,"SigScriptError")}};var Gm=96;var ip=75;function fr(e){const t=[];let n=0;while(n<e.length){const r=e[n];if(r===Is){t.push({offset:n,dataOffset:n+1,end:n+1,payload:new Uint8Array(0)});n+=1;continue}if(r===Us||r>=Ns&&r<=Gm){t.push({offset:n,dataOffset:n+1,end:n+1,payload:Uint8Array.of(r===Us?129:r-Ns+1)});n+=1;continue}let o;let i;if(r<=ip){o=r;i=1}else if(r===Ls){ec(e,n,2);o=e[n+1];i=2;if(o<=ip)throw new G(`offset ${n}: non-minimal push, PUSHDATA1 for ${o} bytes`)}else if(r===$s){ec(e,n,3);o=e[n+1]|e[n+2]<<8;i=3;if(o<=255)throw new G(`offset ${n}: non-minimal push, PUSHDATA2 for ${o} bytes`)}else if(r===Rs){ec(e,n,5);o=(e[n+1]|e[n+2]<<8|e[n+3]<<16|e[n+4]<<24)>>>0;i=5;if(o<=65535)throw new G(`offset ${n}: non-minimal push, PUSHDATA4 for ${o} bytes`)}else{throw new G(`offset ${n}: opcode 0x${r.toString(16).padStart(2,"0")} is not a data push`)}ec(e,n,i+o);const s=e.subarray(n+i,n+i+o);if(o===1&&(s[0]>=1&&s[0]<=16||s[0]===129)){throw new G(`offset ${n}: non-minimal push of byte 0x${s[0].toString(16)} (a small-number opcode exists)`)}t.push({offset:n,dataOffset:n+i,end:n+i+o,payload:s});n+=i+o}return t}a(fr,"parseSigScriptPushes");function ec(e,t,n){if(t+n>e.length)throw new G(`offset ${t}: truncated push, need ${n} bytes, have ${e.length-t}`)}a(ec,"need");function qm(e){const t=fr(e);if(t.length===0)throw new G("empty sigscript");return t[t.length-1].payload}a(qm,"programFromSigScript");function Wr(e){const t=fr(e);if(t.length<2)throw new G(`a KCC-1 sigscript has a tag push and a program push, got ${t.length} push(es)`);const n=t[t.length-2];if(e[n.offset]!==4||n.payload.length!==4)throw new G(`offset ${n.offset}: the dispatch tag must be OP_DATA_4 with 4 bytes`);const r=t[t.length-1];if(r.payload.length===0)throw new G("empty program push");return{argumentPushes:t.slice(0,-2),tag:h(n.payload),program:r.payload,programOffset:r.offset}}a(Wr,"parseSigScriptEnvelope");function Wm(e){return Wr(e).tag}a(Wm,"dispatchTagOfSigScript");var ra=8;function oa(e){if(e>Kt||e<-Kt)throw new G(`int argument out of range: ${e}`);if(e===0n)return new Uint8Array(0);const t=e<0n;let n=t?-e:e;const r=[];while(n>0n){r.push(Number(n&0xffn));n>>=8n}if((r[r.length-1]&128)!==0)r.push(t?128:0);else if(t)r[r.length-1]|=128;return Uint8Array.from(r)}a(oa,"encodeScriptNum");function Ke(e,t=ra){if(e.length>t)throw new G(`int argument is ${e.length} bytes, above ${t}`);if(e.length===0)return 0n;const n=e[e.length-1];if((n&127)===0&&(e.length===1||(e[e.length-2]&128)===0)){throw new G(`int argument ${h(e)} is not minimally encoded`)}let r=BigInt(n&127);for(let i=e.length-2;i>=0;i--)r=r<<8n|BigInt(e[i]);const o=(n&128)!==0?-r:r;if(o>Kt||o<-Kt)throw new G(`int argument out of range: ${o}`);return o}a(Ke,"decodeScriptNum");var Be=a(e=>me(oa(e)),"pushScriptNum");var nc=a(e=>{if(!Number.isInteger(e)||e<0||e>255)throw new G(`byte argument out of range: ${e}`);return me(Uint8Array.of(e))},"pushByteArgument");var Kn="{byte[32],int,byte[32],byte,byte,byte[32],byte[32]}";var Gr=7;function pr(e,t){const n=Ae(e);return{ctx:L(t),amount:n.amount,owner:n.owner,scheme:n.ownerScheme,borrow:n.borrowScheme,guard:n.borrowGuard,ext:n.extensionCommitment}}a(pr,"kcc20Full");function qr(e){for(const[t,n]of[["ctx",e.ctx],["owner",e.owner],["guard",e.guard],["ext",e.ext]]){if(n.length!==32)throw new G(`KCC20Full.${t} must be 32 bytes, got ${n.length}`)}return _(me(e.ctx),Be(e.amount),me(e.owner),nc(e.scheme),nc(e.borrow),me(e.guard),me(e.ext))}a(qr,"encodeKcc20Full");function gi(e){if(e.length!==Gr)throw new G(`KCC20Full takes ${Gr} pushes, got ${e.length}`);const[t,n,r,o,i,s,c]=e.map(d=>d.payload);return{ctx:tc(t,32,"KCC20Full.ctx"),amount:Ke(n),owner:tc(r,32,"KCC20Full.owner"),scheme:sp(o,"KCC20Full.scheme"),borrow:sp(i,"KCC20Full.borrow"),guard:tc(s,32,"KCC20Full.guard"),ext:tc(c,32,"KCC20Full.ext")}}a(gi,"decodeKcc20Full");function tc(e,t,n){if(e.length!==t)throw new G(`${n} must be ${t} bytes, got ${e.length}`);return Uint8Array.from(e)}a(tc,"bytesN");function sp(e,t){if(e.length!==1)throw new G(`${t} must be one byte, got ${e.length}`);return e[0]}a(sp,"byteArg");var dn=Object.freeze({Curve:Object.freeze({init:["byte[]","byte[]"],buy:["int",Kn],sell:["int"],sweep:[],graduate:["byte[]","byte[]"]}),Pool:Object.freeze({swapKasForTokens:["int",Kn],swapTokensForKas:["int","int"],sweep:[]})});var Zd=Object.freeze({bindLp:["byte[]","byte[]"],addLiquidity:["int",Kn],removeLiquidity:["int",Kn]});var yi=Object.freeze(["int","int",Kn]);var hi=Object.freeze(["int","int","int","int"]);var ki=Object.freeze(["int","int","int","int"]);function xt(e,t){return h(qs(`__covenant_entrypoint_auth_${e}(${t.join(",")})`))}a(xt,"covenantDispatchTag");var cp=a(e=>Object.fromEntries(Object.entries(e).map(([t,n])=>[t,xt(t,n)])),"tagsOf");var lp=Object.freeze({token:Object.freeze({transfer:ta.transfer.tagHex,transferDelegator:ta.transferDelegator.tagHex}),curve:Object.freeze(cp(dn.Curve)),pool:Object.freeze(cp({...dn.Pool,...Zd}))});var Bn=xt("swapKasForTokens",yi);var Mn=xt("swapKasForTokens",hi);var Fn=xt("swapTokensForKas",ki);function el(e){const t=[];for(const n of["token","curve","pool"]){for(const[r,o]of Object.entries(lp[n]))if(o===e)t.push({contract:n,entry:r})}if(e===Bn||e===Mn)t.push({contract:"pool",entry:"swapKasForTokens"});if(e===Fn)t.push({contract:"pool",entry:"swapTokensForKas"});return t}a(el,"entriesOfTag");function zm(e){switch(e.contract){case"token":if(e.entry==="transfer")return Jm(e.nextStates,e.witness);return me(e.witness);case"curve":switch(e.entry){case"init":return _(me(e.tokenPrefix),me(e.tokenSuffix));case"buy":return _(Be(e.n),qr(e.user));case"sell":return Be(e.n);case"sweep":return new Uint8Array(0);case"graduate":return _(me(e.poolPrefix),me(e.poolSuffix))}break;case"pool":switch(e.entry){case"swapKasForTokens":if(e.reserveK!==void 0&&e.user!==void 0)throw new G("swapKasForTokens: a user cell and positions together");if(e.reserveK!==void 0)return _(Be(e.kasInScaled),Be(e.minTokensOut),Be(e.reserveK),Be(e.restK));return e.minTokensOut===void 0?_(Be(e.kasInScaled),qr(e.user)):_(Be(e.kasInScaled),Be(e.minTokensOut),qr(e.user));case"swapTokensForKas":if(e.reserveK===void 0!==(e.mergedK===void 0))throw new G("swapTokensForKas: reserveK and mergedK come together");return e.reserveK===void 0?_(Be(e.tokensIn),Be(e.minOutScaled)):_(Be(e.tokensIn),Be(e.minOutScaled),Be(e.reserveK),Be(e.mergedK));case"sweep":return new Uint8Array(0);case"bindLp":return _(me(e.tokenPrefix),me(e.tokenSuffix));case"addLiquidity":return _(Be(e.shares),qr(e.lpUser));case"removeLiquidity":return _(Be(e.shares),qr(e.tokUser))}}throw new G("unknown invocation")}a(zm,"encodeInvocationArguments");function Jm(e,t){const n=Ws(e,t);return _(...n.groupedFieldPushes,n.witnessPush)}a(Jm,"groupedTransferPushes");function Xm(e){if(e.contract==="pool"&&e.entry==="swapKasForTokens"&&e.reserveK!==void 0)return Mn;if(e.contract==="pool"&&e.entry==="swapKasForTokens"&&e.minTokensOut!==void 0)return Bn;if(e.contract==="pool"&&e.entry==="swapTokensForKas"&&e.reserveK!==void 0)return Fn;return lp[e.contract][e.entry]}a(Xm,"tagOfInvocation");function Ft(e,t){if(t.length===0)throw new G("empty program");return _(zm(e),Uint8Array.of(4),L(Xm(e)),me(t))}a(Ft,"encodeInvocation");function aa(e,t){const n=Wr(e);const r=el(n.tag).filter(l=>t===void 0||l.contract===t);if(r.length===0)throw new G(`dispatch tag ${n.tag} names no entry of ${t??"the token, curve or pool"}`);if(r.length>1)throw new G(`dispatch tag ${n.tag} is ambiguous (${r.map(l=>`${l.contract}.${l.entry}`).join(", ")}); name the contract`);const{contract:o,entry:i}=r[0];const s=n.argumentPushes;const c=a(l=>{if(s.length!==l)throw new G(`${o}.${i} takes ${l} argument push(es), got ${s.length}`)},"arity");let d;try{d=Ym(o,i,s,c,n.tag)}catch(l){if(l instanceof G)throw l;throw new G(`${o}.${i}: ${l.message}`)}let u;try{u=Ft(d,n.program)}catch(l){throw new G(`${o}.${i}: decoded arguments do not re-encode: ${l.message}`)}if(!$(u,e))throw new G(`${o}.${i}: sigscript is not the canonical encoding of its arguments`);return{invocation:d,tag:n.tag,program:Uint8Array.from(n.program)}}a(aa,"decodeInvocation");function Ym(e,t,n,r,o){const i=a(s=>n[s].payload,"p");if(e==="token"){if(t==="transfer"){r(7);return{contract:"token",entry:"transfer",nextStates:Qm(n.slice(0,6).map(s=>s.payload)),witness:Uint8Array.from(i(6))}}r(1);return{contract:"token",entry:"transferDelegator",witness:Uint8Array.from(i(0))}}if(e==="curve"){switch(t){case"init":r(2);return{contract:"curve",entry:"init",tokenPrefix:Uint8Array.from(i(0)),tokenSuffix:Uint8Array.from(i(1))};case"buy":r(1+Gr);return{contract:"curve",entry:"buy",n:Ke(i(0)),user:gi(n.slice(1))};case"sell":r(1);return{contract:"curve",entry:"sell",n:Ke(i(0))};case"sweep":r(0);return{contract:"curve",entry:"sweep"};case"graduate":r(2);return{contract:"curve",entry:"graduate",poolPrefix:Uint8Array.from(i(0)),poolSuffix:Uint8Array.from(i(1))}}}switch(t){case"swapKasForTokens":if(o===Mn){r(4);return{contract:"pool",entry:"swapKasForTokens",kasInScaled:Ke(i(0)),minTokensOut:Ke(i(1)),reserveK:Ke(i(2)),restK:Ke(i(3))}}if(o===Bn){r(2+Gr);return{contract:"pool",entry:"swapKasForTokens",kasInScaled:Ke(i(0)),minTokensOut:Ke(i(1)),user:gi(n.slice(2))}}r(1+Gr);return{contract:"pool",entry:"swapKasForTokens",kasInScaled:Ke(i(0)),user:gi(n.slice(1))};case"swapTokensForKas":if(o===Fn){r(4);return{contract:"pool",entry:"swapTokensForKas",tokensIn:Ke(i(0)),minOutScaled:Ke(i(1)),reserveK:Ke(i(2)),mergedK:Ke(i(3))}}r(2);return{contract:"pool",entry:"swapTokensForKas",tokensIn:Ke(i(0)),minOutScaled:Ke(i(1))};case"sweep":r(0);return{contract:"pool",entry:"sweep"};case"bindLp":r(2);return{contract:"pool",entry:"bindLp",tokenPrefix:Uint8Array.from(i(0)),tokenSuffix:Uint8Array.from(i(1))};case"addLiquidity":r(1+Gr);return{contract:"pool",entry:"addLiquidity",shares:Ke(i(0)),lpUser:gi(n.slice(1))};case"removeLiquidity":r(1+Gr);return{contract:"pool",entry:"removeLiquidity",shares:Ke(i(0)),tokUser:gi(n.slice(1))}}throw new G(`no decoder for ${e}.${t}`)}a(Ym,"decodeArguments");function Qm(e){const[t,n,r,o,i,s]=e;if(t.length%Ut!==0)throw new G(`next_states.amount group is ${t.length} bytes, not a multiple of ${Ut}`);const c=t.length/Ut;if(c>Hr)throw new G(`${c} next_states exceed max_token_outputs ${Hr}`);const d=[["owner",n,32],["owner_scheme",r,1],["borrow_scheme",o,1],["borrow_guard",i,32],["extension_commitment",s,32]];for(const[l,f,b]of d)if(f.length!==c*b)throw new G(`next_states.${l} group is ${f.length} bytes, expected ${c} x ${b}`);const u=[];for(let l=0;l<c;l++){u.push(et({amount:sn(t.subarray(l*8,l*8+8)),owner:n.subarray(l*32,l*32+32),ownerScheme:r[l],borrowScheme:o[l],borrowGuard:i.subarray(l*32,l*32+32),extensionCommitment:s.subarray(l*32,l*32+32)}))}return u}a(Qm,"decodeGroupedStates");var dp=65;function Zm(e){const{invocation:t}=aa(e,"token");if(t.contract!=="token")throw new G("not a token sigscript");const n=fr(e);if(t.entry==="transfer"){if(t.witness.length!==1+dp||t.witness[0]!==0)return void 0;return n[6].dataOffset+1}return t.witness.length===dp?n[0].dataOffset:void 0}a(Zm,"tokenSignatureOffset");var eg=0;var tg=75;var up=76;var fp=77;var ng=78;var rg=79;var og=80;var pp=81;var ag=96;function rc(e){const t=[];let n=0;const r=a((i,s)=>{if(i+s>e.length)throw new G(`offset ${n}: truncated push, need ${s} bytes, have ${Math.max(0,e.length-i)}`);return e.subarray(i,i+s)},"take");while(n<e.length){const i=e[n];if(i===eg){t.push(new Uint8Array(0));n+=1}else if(i<=tg){t.push(r(n+1,i));n+=1+i}else if(i===up||i===fp||i===ng){const s=i===up?1:i===fp?2:4;const c=r(n+1,s);let d=0;for(let u=s-1;u>=0;u--)d=d*256+c[u];t.push(r(n+1+s,d));n+=1+s+d}else if(i===rg){t.push(Uint8Array.of(129));n+=1}else if(i===og){throw new G(`offset ${n}: OP_RESERVED fails when executed`)}else if(i>=pp&&i<=ag){t.push(Uint8Array.of(i-pp+1));n+=1}else{throw new G(`offset ${n}: opcode 0x${i.toString(16).padStart(2,"0")} is not a data push (a signature script is push-only)`)}}const o=_(...t.map(i=>me(i)));return{payloads:t,minimal:$(o,e),canonical:o}}a(rc,"consensusSigScript");var tl="non-minimal-push";function bp(e){if(e.length>ra)throw new G(`int argument is ${e.length} bytes, above ${ra} (consensus refuses it)`);if(e.length===0)return 0n;const t=e[e.length-1];let n=BigInt(t&127);for(let r=e.length-2;r>=0;r--)n=n<<8n|BigInt(e[r]);return(t&128)!==0?-n:n}a(bp,"decodeScriptNumConsensus");function ig(e){return e.length<=ra&&$(oa(bp(e)),e)}a(ig,"isMinimalScriptNum");function sg(e){return e.flatMap(t=>t.startsWith("{")&&t.endsWith("}")?t.slice(1,-1).split(","):[t])}a(sg,"pushTypes");var cg={...dn.Pool,...Zd};function dg(e,t){const n=el(t).find(o=>o.contract===e)?.entry;if(n===void 0)return void 0;const r=e==="curve"?dn.Curve[n]:t===Bn?yi:t===Mn?hi:t===Fn?ki:cg[n];if(r===void 0)return void 0;return sg(r).flatMap((o,i)=>o==="int"?[i]:[])}a(dg,"intArgumentPushes");function lg(e,t){const n={sigscript:e,nonMinimal:[]};let r;try{r=Wr(e)}catch(c){if(c instanceof G)return n;throw c}const o=dg(t,r.tag);if(o===void 0)return n;const i=r.argumentPushes.map(c=>c.payload);const s=[];for(const c of o){const d=i[c];if(d===void 0||d.length>ra||ig(d))continue;i[c]=oa(bp(d));s.push(c)}if(s.length===0)return n;return{sigscript:_(...i.map(c=>me(c)),Uint8Array.of(4),L(r.tag),me(r.program)),nonMinimal:s}}a(lg,"canonicalNumbers");var nl="non-minimal-number";function rl(e,t){const n=rc(e);const r=t==="token"?{sigscript:n.canonical,nonMinimal:[]}:lg(n.canonical,t);return{decoded:aa(r.sigscript,t),minimalPushes:n.minimal,nonMinimalNumbers:r.nonMinimal}}a(rl,"decodeInvocationByConsensus");var ol=/^[0-9a-f]{64}$/;function mp(e){if(!Number.isSafeInteger(e)||e<0)throw new RangeError(`LE64: not a non-negative safe integer: ${e}`);const t=new Uint8Array(8);let n=e;for(let r=0;r<8;r++){t[r]=n%256;n=Math.floor(n/256)}return t}a(mp,"le64");function gp(e,t){if(e.length!==t.length)return false;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return false;return true}a(gp,"sameBytes");var yp=16;var zr=[];function ug(e,t){for(let o=0;o<zr.length;o++){const i=zr[o];if(gp(i.suffix,t)&&gp(i.prefix,e)){if(o>0){zr.splice(o,1);zr.unshift(i)}return Uint8Array.from(i.hash)}}const n=new Uint8Array(8+e.length+8+t.length);n.set(mp(e.length),0);n.set(e,8);n.set(mp(t.length),8+e.length);n.set(t,16+e.length);const r=Zo(n);zr.unshift({prefix:Uint8Array.from(e),suffix:Uint8Array.from(t),hash:Uint8Array.from(r)});if(zr.length>yp)zr.length=yp;return r}a(ug,"templateHashBytes");function tt(e,t){return h(ug(e,t))}a(tt,"templateHash");function Jt(e,t,n){if(!Number.isInteger(t)||t<0||!Number.isInteger(n)||n<0){throw new F(`invalid state window: start ${t}, length ${n}`)}const r=t+n;if(r>e.length){throw new F(`program is ${e.length} bytes; state window [${t}, ${r}) does not fit`)}return tt(e.subarray(0,t),e.subarray(r))}a(Jt,"templateHashOfProgram");var jn="kcc20-46";var Jr=46;var oc=32;var vi=new Map([[0,"pubkey"],[1,"script-hash"],[2,"covenant-id"]]);var al=a(e=>"0x"+e.toString(16).padStart(2,"0"),"hex2");var hp={id:jn,stateLength:Jr,referenceSchemes:vi,encode(e,t=vi){this.validate(e,t);if(e.mintCapable===null){throw new q(`${jn} requires an explicit isMinter; refusing to encode mintCapable=null`)}const n=_(Z(e.owner.identifier),Z(Uint8Array.of(e.owner.schemeByte)),Z(ct(e.amount)),Z(_f(e.mintCapable)));if(n.length!==Jr){throw new q(`encoded ${n.length} bytes, expected ${Jr}`)}return n},decode(e,t){if(e.length!==Jr){throw new F(`${jn} state must be exactly ${Jr} bytes, got ${e.length}`)}const n=Nt(e,0);if(n.payload.length!==oc){throw new F(`ownerIdentifier must be ${oc} bytes, got ${n.payload.length}`)}const r=Nt(e,n.next);if(r.payload.length!==1){throw new F(`identifierType must be 1 byte, got ${r.payload.length}`)}const o=Nt(e,r.next);const i=sn(o.payload);const s=Nt(e,o.next);const c=If(s.payload);if(s.next!==e.length){throw new F(`trailing bytes: consumed ${s.next} of ${e.length}`)}const d=r.payload[0];const u=t.get(d);if(u===void 0){throw new F(`identifierType 0x${d.toString(16).padStart(2,"0")} is not defined by this template (known: ${[...t.keys()].map(l=>"0x"+l.toString(16).padStart(2,"0")).join(", ")}). Refusing to guess an owner.`)}if(i<0n){throw new F(`negative amount ${i} in state ${h(e)}`)}return{layoutId:jn,amount:i,owner:{schemeByte:d,semantic:u,identifier:Uint8Array.from(n.payload)},mintCapable:c,extra:Object.freeze({})}},validate(e,t=vi){if(e===null||typeof e!=="object")throw new q("state must be an object");if(e.layoutId!==jn)throw new q(`expected ${jn}, got ${String(e.layoutId)}`);if(typeof e.amount!=="bigint"){throw new q(`amount must be a bigint, got ${typeof e.amount}`)}if(e.amount<0n)throw new q(`amount must be non-negative, got ${e.amount}`);if(e.amount>Kt)throw new q(`amount ${e.amount} exceeds the KCC1 int range`);const n=e.owner;if(n===null||typeof n!=="object")throw new q("owner must be an object");if(!(n.identifier instanceof Uint8Array)||n.identifier.length!==oc){throw new q(`ownerIdentifier must be a ${oc}-byte Uint8Array`)}if(!Number.isInteger(n.schemeByte)||n.schemeByte<0||n.schemeByte>255){throw new q(`identifierType must be a single byte, got ${String(n.schemeByte)}`)}const r=t.get(n.schemeByte);if(r===void 0){throw new q(`identifierType ${al(n.schemeByte)} is not defined by this template (known: ${[...t.keys()].map(al).join(", ")})`)}if(r!==n.semantic){throw new q(`identifierType ${al(n.schemeByte)} means '${r}' under this template, but the state claims '${String(n.semantic)}'`)}if(typeof e.mintCapable!=="boolean"){throw new q(`${jn} always carries isMinter; got ${String(e.mintCapable)}`)}},checkOwnershipTransition(e,t){if(e.length===0)throw new $r("a transition must consume at least one state");for(const r of[...e,...t])this.validate(r.state);const n=e[0].state;if(n.mintCapable===false){for(const r of t){if(r.state.mintCapable===true){throw new $r(`non-minter leader may not create a minter successor (output index ${r.index})`)}}}return e.map(r=>ea(r.state.owner))},checkSupply(e,t){if(e.length===0)throw new vt("a transition must consume at least one state");for(const i of[...e,...t])this.validate(i.state);const n=e[0].state;if(n.mintCapable===true)return;const r=e.reduce((i,s)=>i+s.state.amount,0n);const o=t.reduce((i,s)=>i+s.state.amount,0n);if(r!==o){throw new vt(`supply not conserved: in=${r} out=${o} (delta ${o-r})`)}}};function Ov(e){const t=e.filter(r=>r.mintCapable===true);if(t.length>0){throw new vt(`supply is NOT provably fixed: ${t.length} live minter cell(s) remain. Retire minting by spending every minter cell without creating a minter successor.`)}const n=e.filter(r=>r.mintCapable===null);if(n.length>0){throw new vt(`cannot prove fixed supply: ${n.length} state(s) use a layout with no minter concept (mintCapable=null). KCC-0020 has no supply model; this guarantee is kcc20-46 only.`)}}a(Ov,"assertSupplyPermanentlyFixed");var fg=1;var pg="6b";function ac(e,t){return{templateHash:e,layoutId:jn,stateOffset:fg,stateLength:Jr,prefixHex:pg,schemes:vi,provenance:t}}a(ac,"referenceTemplate");var kp=Object.freeze([ac("5b136633944a2371a1d0f6a94fdc0d329327ffc700fdec097fc59e76e1d33ae1",'tn10 covenant 5f381583..8445; revealed_hex 6b|20+32|01+01|08+08|01+01; branches 00,01,02; kascov names it "KForge · token cell" (142 covenants); hash reproduced on 154 live cells 2026-10-07'),ac("55306914ff3ddbfa0f4db6d5c5a01ec26f5f13f8c8d042076ed793fe82640513","tn10 census 2026-09-04; offset 1 (6b); branches 00,01,02"),ac("0f6db65e251cb8498aa9b201276ebeb569ac2c1eef270075143cd515d71ec3f1","tn10 census 2026-09-04; offset 1 (6b); branches 00,01,02"),ac("0338146fbf175bd1650b404d141ea4b1193180bee014f46fd617c6a6e3cc309c","tn10 census 2026-09-04; offset 1 (6b); branches 00,01,02")]);var _e="9703112ee6e3555107cd168858992b77d3b74f655205b2b463b1f9ec2ec73cf7";var Rv="734850b0af0aeef49f009167bf9ddd238fd8c5cdbe214234f97181ac6f5cc498";var bg=34;var mg="6b20"+_e;var ic=Object.freeze({templateHash:_e,layoutId:Rn,stateOffset:bg,stateLength:Fr,hashWindow:{start:1,length:145},prefixHex:mg,schemes:cn,provenance:"argent-lang/kcc20-reference@c8a0871 fixtures/public-mint/artifact.json sil_abi.contracts.KCC20.compiled {bytecode, state_span {offset 1, len 145}, template_hash}; recomputed 2026-10-07; decoded against real testnet-10 cells"});var vp=Object.freeze([]);var xp=Object.freeze([{templateHash:"b2c23636332e1ddde48ceb0c4ea54ce5b8f18439044aa9a7121ac00e46263973",window:{start:0,length:46},reason:"the 0x03 identifier family: state at offset 0 (no 6b prefix) and FOUR identifier branches (00,01,02,03). The meaning of 0x03 is unverified -- plausibly a p2pkh variant, but plausible is not verified. 107 live tn10 tokens use 0x03."},{templateHash:"2ed46a7edf5b168e67dba56998c58255235bebac436940a85115ca31d5c559f2",window:{start:0,length:46},reason:"an outside CP-family token program (0x03 = address presence); never decoded by the default registry."}]);var ia=class extends F{static{a(this,"DeclarationError")}};var gg=64;var wp=/-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?/y;var Sp={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:" "};function yg(e){for(let t=0;t<e.length;t++){const n=e.charCodeAt(t);if(n>=55296&&n<=56319){const r=e.charCodeAt(t+1);if(!(r>=56320&&r<=57343))return true;t++}else if(n>=56320&&n<=57343){return true}}return false}a(yg,"hasLoneSurrogate");function hg(e,t=gg){let n=0;const r=a(d=>{throw new ia(`I-JSON: ${d} at offset ${n}`)},"fail");const o=a(()=>{while(n<e.length){const d=e.charCodeAt(n);if(d!==32&&d!==9&&d!==10&&d!==13)break;n++}},"ws");const i=a(()=>{n++;let d="";for(;;){if(n>=e.length)r("unterminated string");const u=e[n++];if(u==='"')break;if(u==="\\"){const l=e[n++];if(l==="u"){const f=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(f))r("malformed \\u escape");d+=String.fromCharCode(parseInt(f,16));n+=4}else if(l!==void 0&&Object.prototype.hasOwnProperty.call(Sp,l)){d+=Sp[l]}else{r(`invalid escape \\${l??""}`)}}else{if(u.charCodeAt(0)<32)r("unescaped control character in string");d+=u}}if(yg(d))r("string contains a lone surrogate");return d},"str");const s=a(d=>{o();const u=e[n];if(u==="{"){if(d>t)r(`nesting deeper than ${t}`);n++;const b=Object.create(null);o();if(e[n]==="}"){n++;return b}for(;;){o();if(e[n]!=='"')r("expected a member name");const g=i();if(Object.prototype.hasOwnProperty.call(b,g))r(`duplicate member name "${g}"`);o();if(e[n]!==":")r('expected ":"');n++;b[g]=s(d+1);o();if(e[n]===","){n++;continue}if(e[n]==="}"){n++;return b}r('expected "," or "}"')}}if(u==="["){if(d>t)r(`nesting deeper than ${t}`);n++;const b=[];o();if(e[n]==="]"){n++;return b}for(;;){b.push(s(d+1));o();if(e[n]===","){n++;continue}if(e[n]==="]"){n++;return b}r('expected "," or "]"')}}if(u==='"')return i();if(e.startsWith("true",n)){n+=4;return true}if(e.startsWith("false",n)){n+=5;return false}if(e.startsWith("null",n)){n+=4;return null}wp.lastIndex=n;const l=wp.exec(e);if(l===null)return r("unexpected character");const f=Number(l[0]);if(!Number.isFinite(f))r(`number ${l[0]} is not a finite binary64 value`);n+=l[0].length;return f},"value");const c=s(1);o();if(n!==e.length)r("trailing characters");return c}a(hg,"parseIJson");var Ep=0;function Op(e){if(e.length===0)return{valid:false,reason:"empty payload (no codec prefix)"};if(e[0]!==Ep)return{valid:false,reason:`unknown codec prefix 0x${e[0].toString(16).padStart(2,"0")}`};let t;try{t=new TextDecoder("utf-8",{fatal:true,ignoreBOM:true}).decode(e.subarray(1))}catch{return{valid:false,reason:"payload is not valid UTF-8"}}if(t.charCodeAt(0)===65279)return{valid:false,reason:"payload starts with a byte-order mark"};let n;try{n=hg(t)}catch(r){return{valid:false,reason:r.message}}if(n===null||typeof n!=="object"||Array.isArray(n))return{valid:false,reason:"the declaration is not a JSON object"};return{valid:true,object:n,text:t}}a(Op,"decodeDeclaration");function Wv(e){const t=_(Uint8Array.of(Ep),new TextEncoder().encode(JSON.stringify(e)));const n=Op(t);if(!n.valid)throw new ia(`metadata does not round-trip as a KCC-23 declaration: ${n.reason}`);return t}a(Wv,"encodeDeclaration");function zv(e){const t=a(d=>typeof e[d]==="string"?e[d]:void 0,"s");const n=e["decimals"];const r={};const o=t("name");const i=t("symbol");const s=t("image");const c=t("description");if(o!==void 0)r.name=o;if(i!==void 0)r.symbol=i;if(typeof n==="number"&&Number.isInteger(n)&&n>=0&&n<=255)r.decimals=n;if(s!==void 0)r.image=s;if(c!==void 0)r.description=c;return r}a(zv,"declarationFields");function kg(e,t,n){const r=t.outputs.map((b,g)=>({i:g,o:b})).filter(({o:b})=>b.covenant?.covenantId===e);if(r.length===0)return{status:"invalid",step:1,reason:"no genesis output is bound to the covenant id"};const o=new Set(r.map(({o:b})=>b.covenant.authorizingInput));if(o.size!==1)return{status:"invalid",step:1,reason:`outputs bound to the id name ${o.size} authorizing inputs`};const i=[...o][0];const s=t.inputs[i];if(s===void 0)return{status:"invalid",step:1,reason:`authorizing input ${i} does not exist`};const c=`${s.transactionId}:${s.index}`;const d=We(s.transactionId,s.index,r.map(({i:b,o:g})=>({index:b,value:g.value,scriptVersion:g.scriptVersion,script:L(g.script)})));if(d!==e)return{status:"invalid",step:2,reason:`recomputed covenant id ${d} differs from ${e}`};const u=n(s.transactionId);if(u===void 0)return{status:"unverified",outpoint:c,reason:`preparation transaction ${s.transactionId} is not available`};if(u.version!==1)return{status:"invalid",step:3,reason:`preparation transaction is version ${u.version}, not 1`};if(u.outputs[s.index]===void 0)return{status:"invalid",step:3,reason:`preparation transaction has no output ${s.index}`};const l=Op(L(u.payload));if(!l.valid)return{status:"invalid",step:3,reason:`payload is not a KCC-23 declaration: ${l.reason}`};const f=gt(u).txid;if(f!==s.transactionId)return{status:"invalid",step:4,reason:`recomputed preparation txid ${f} differs from the spent outpoint's ${s.transactionId}`};return{status:"bound",authorizingInput:i,outpoint:c,declaration:l.object,text:l.text,prepTxid:f}}a(kg,"verifyKcc23Binding");var il="kcc0023-launch-proof/1";var _p=0;var Ap=4031;var Tp=34;var vg=9;var sl={1:"lineage T",2:"program",3:"state",4:"sealing argument",5:"lineage C",6:"custody argument",7:"metadata (KCC-23)",8:"R recovery",9:"graduation group integrity"};function xi(e,t){const n=e[t];if(typeof n==="number"&&Number.isSafeInteger(n)&&n>=0)return BigInt(n);if(typeof n==="string"&&/^(0|[1-9][0-9]*)$/.test(n))return BigInt(n);throw new F(`params.${t} is not a non-negative integer`)}a(xi,"paramBig");function cl(e,t){return Mt.encode(et({amount:e,owner:L(t),ownerScheme:mt,borrowScheme:_p}))}a(cl,"tokenGenesisState");function Ip(e,t,n,r){const o=[];if(!r.minimalPushes)o.push({step:e,tx:t,input:n,kind:tl});if(r.nonMinimalNumbers.length>0)o.push({step:e,tx:t,input:n,kind:nl,arguments:[...r.nonMinimalNumbers]});return o}a(Ip,"encodingNotes");function Cp(e){if(e.length===0)return{};const t=e.find(n=>n.kind===nl);return{encoding:{minimalPushes:!e.some(n=>n.kind===tl),nonMinimalNumbers:t?.arguments??[]}}}a(Cp,"encodingDetail");function xg(e,t){try{const n=rl(L(e),"curve");const r=n.decoded;if(r.invocation.contract!=="curve"||r.invocation.entry!=="init")return`the curve input invokes ${r.invocation.entry}, not init`;return{program:r.program,tokenPrefix:r.invocation.tokenPrefix,tokenSuffix:r.invocation.tokenSuffix,notes:Ip(8,"tx2",t,n)}}catch(n){return n.message}}a(xg,"curveInit");function Lp(e,t){const n=[];const r=[];const o=a(()=>r.length===0?{}:{notes:r},"withNotes");const i=a((u,l={})=>{n.push({step:u,name:sl[u],ok:true,detail:l})},"pass");const s=a((u,l)=>{n.push({step:u,name:sl[u],ok:false,detail:{reason:l}});return{status:"invalid",steps:n,reason:`step ${u} (${sl[u]}): ${l}`,verifier:il,...o()}},"invalid");try{return c()}catch(u){return s(Math.min(n.length+1,vg),`malformed bundle: ${u.message}`)}function c(){const{tx01:u,tx2:l,T:f,C:b}=e;const g=l.outputs.map((E,U)=>({i:U,o:E})).filter(({o:E})=>E.covenant?.covenantId===f);if(g.length===0)return s(1,"no tx2 output is bound to T");const m=new Set(g.map(({o:E})=>E.covenant.authorizingInput));if(m.size!==1)return s(1,`the outputs bound to T name ${m.size} authorizing inputs`);const y=[...m][0];const v=l.inputs[y];if(v===void 0)return s(1,`authorizing input ${y} does not exist`);const x=We(v.transactionId,v.index,g.map(({i:E,o:U})=>({index:E,value:U.value,scriptVersion:U.scriptVersion,script:L(U.script)})));if(x!==f)return s(1,`recomputed ${x} differs from T ${f}`);if(g.length!==2||g[0].i!==0||g[1].i!==1)return s(1,`expected outputs 0 and 1 bound to T, got ${g.map(E=>E.i).join(",")}`);i(1,{authorizingInput:y,outpoint:`${v.transactionId}:${v.index}`,groupOutputs:g.map(E=>E.i)});const w=L(e.tokenSuffix);if(!$(w,t.referenceSuffix))return s(2,"the token suffix differs from the reference artifact");if(e.H_T!==_e||tt(Uint8Array.of(107),t.referenceSuffix)!==_e){return s(2,"the token template is not the reference KCC20")}let A=0n;const T=[];for(const{i:E,o:U}of g){const X=e.states.find(li=>li.index===E);if(X===void 0)return s(3,`no genesis state for output ${E}`);const B=BigInt(X.amount);const V=cl(B,b);const pe=_(Uint8Array.of(107,32),L(_e),V,t.referenceSuffix);if(pe.length!==Ap)return s(2,`token program is ${pe.length} B`);if(U.scriptVersion!==0||h(Y(pe))!==U.script)return s(2,`output ${E} does not commit to the token program with the stated genesis state`);const fe=Mt.decode(pe.subarray(Tp,Tp+112),Mt.referenceSchemes);const Oe=Ae(fe);if(h(Oe.owner)!==b||Oe.ownerScheme!==mt)return s(3,`output ${E}: owner is not C under covenant-id/v1`);if(Oe.borrowScheme!==_p||!$(Oe.borrowGuard,Ve)||!$(Oe.extensionCommitment,Ve))return s(3,`output ${E}: borrow or extension fields are not zero`);A+=Oe.amount;T.push({index:E,amount:Oe.amount.toString(),value:U.value.toString()})}i(2,{templateHash:_e,programBytes:Ap});const I=xi(e.params,"curveLots")*xi(e.params,"lot")+xi(e.params,"gradReserve");if(A!==I)return s(3,`genesis amounts sum to ${A}, the parameters give ${I}`);i(3,{cells:T,totalSupply:A.toString()});i(4,{statement:"the reference program exposes transfer (conserving) and transfer_delegator only; consensus derives covenant ids from genesis outpoints, so no further output with id T can be created; the sum over live T cells equals the genesis sum forever"});if(u===null){const E=d();if(E!==void 0)return E;return{status:"unverified",steps:n,totalSupply:A,verifier:il,...o(),reason:`the preparation transaction ${v.transactionId} is not available; lineage C and the declaration are not proven`}}const R=u.inputs[0];const K=u.outputs[1];if(R===void 0||K===void 0)return s(5,"tx01 lacks input 0 or output 1");const M=We(R.transactionId,R.index,[{index:1,value:K.value,scriptVersion:K.scriptVersion,script:L(K.script)}]);if(M!==b)return s(5,`recomputed ${M} differs from C ${b}`);if(K.covenant?.covenantId!==b||K.covenant.authorizingInput!==0)return s(5,"tx01 output 1 is not bound (0, C)");if(u.outputs.some((E,U)=>U!==1&&E.covenant?.covenantId===b))return s(5,"tx01 binds C to more than output 1");if(u.version<1)return s(7,`tx01 is version ${u.version}, not 1`);const N=gt(u).txid;const D=l.inputs.findIndex(E=>E.transactionId===N&&E.index===1);if(D<0)return s(5,"tx2 does not spend tx01:1");const ue=l.outputs.map((E,U)=>({i:U,o:E})).filter(({o:E})=>E.covenant?.covenantId===b);if(ue.length!==1||ue[0].o.covenant.authorizingInput!==D)return s(5,`expected exactly one tx2 output bound (${D}, C), found ${ue.length}`);const oe=L(e.curvePrefix);const ae=L(e.curveSuffix);const ce=tt(oe,ae);if(ce!==e.H_C)return s(5,`the curve template hashes to ${ce}, the bundle states ${e.H_C}`);if(t.curveTemplate!==void 0){const E=t.curveTemplate(oe,ae);if(!E.ok)return s(5,`not a Kasseal curve template: ${E.reason??"rejected"}`);if(E.params!==void 0){for(const[U,X]of Object.entries(E.params)){if(String(e.params[U])!==String(X))return s(5,`params.${U} is ${String(e.params[U])}, the template carries ${String(X)}`)}}}const te=_(oe,Jo({tokenCovId:L(f),lotsSold:0n,feeAccrued:0n,phase:Bt}),ae);if(ue[0].o.scriptVersion!==0||h(Y(te))!==ue[0].o.script)return s(5,"the tx2 curve output does not commit to the program with state {T, 0, 0, active}");const je=_(oe,Jo({tokenCovId:Ve,lotsSold:0n,feeAccrued:0n,phase:Kr}),ae);if(K.scriptVersion!==0||h(Y(je))!==K.script)return s(5,"tx01 output 1 does not commit to the program with state {0^32, 0, 0, uninit}");i(5,{H_C:ce,curveBytes:te.length,params:e.params});i(6,{statement:"C-owned token cells move only in a transaction with a C input; C exposes init, buy, sell, graduate and sweep, each forbidding or fully validating the T transition at the coded price; sweep is bounded by feeAccrued; there is no operator path to tokens or escrow"});if(v.transactionId!==N||v.index!==0)return s(7,`the T group's authorizing input spends ${v.transactionId}:${v.index}, not tx01:0 (${N})`);const st=kg(f,l,E=>E===N?u:void 0);if(st.status!=="bound")return s(7,st.reason);const p=gt(u);i(7,{prepTxid:p.txid,payloadDigest:p.payloadDigest,restDigest:p.restDigest,declaration:st.text});const k=xg(l.inputs[D].signatureScript,D);if(typeof k==="string")return s(8,k);r.push(...k.notes);const P=k.program;if(h(Y(P))!==K.script)return s(8,"the recovered program does not hash to tx01 output 1");if(!$(P,je))return s(8,"the recovered program differs from the genesis program");if(!$(k.tokenPrefix,Uint8Array.of(107))||!$(k.tokenSuffix,t.referenceSuffix))return s(8,"init was not given the reference token template");const S=Xo(P.subarray(oe.length,oe.length+$n));i(8,{recoveredBytes:P.length,state:{tokenCovId:h(S.tokenCovId),lotsSold:S.lotsSold.toString(),phase:S.phase},...Cp(k.notes)});const O=d();if(O!==void 0)return O;return{status:"bound",steps:n,totalSupply:A,declaration:st.declaration,verifier:il,...o()}}a(c,"run");function d(){const u=e.graduation??null;if(u===null){i(9,{applicable:false,reason:"the curve has not graduated; the check runs on the graduation transaction"});return void 0}const l=Sg(u,e,t.referenceSuffix);if(!l.ok)return s(9,l.reason);r.push(...l.notes);i(9,{applicable:true,...l.detail,...Cp(l.notes)});return void 0}a(d,"graduationStep")}a(Lp,"verifyLaunchProof");var wg=/^aa20[0-9a-f]{64}87$/;function Sg(e,t,n){const{T:r,C:o}=t;const i=e.P;const s=e.tx;const c=a(N=>({ok:false,reason:N}),"fail");if(!/^[0-9a-f]{64}$/.test(i))return c("the pool id P is not a 32-byte id");if(i===r||i===o)return c("the pool id P equals T or C");const d=s.outputs.map((N,D)=>({i:D,o:N})).filter(({o:N})=>N.covenant?.covenantId===i);if(d.length===0)return c("no output of the graduation transaction is bound to the pool id P");const u=new Set(d.map(({o:N})=>N.covenant.authorizingInput));if(u.size!==1)return c(`the outputs bound to P name ${u.size} authorizing inputs`);const l=[...u][0];const f=s.inputs[l];if(f===void 0)return c(`the P group's authorizing input ${l} does not exist`);const b=We(f.transactionId,f.index,d.map(({i:N,o:D})=>({index:N,value:D.value,scriptVersion:D.scriptVersion,script:L(D.script)})));if(b!==i)return c(`the P group (outputs ${d.map(N=>N.i).join(",")}) recomputes to ${b}, not P ${i}`);if(d.length!==1||d[0].i!==0){return c(`${d.length} outputs are bound to the pool id P (${d.map(N=>N.i).join(", ")}); the pool genesis group must be output 0 alone, or any other member carries P and can release the pool-owned reserve by presence`)}const g=d[0].o;if(g.scriptVersion!==0||!wg.test(g.script))return c("output 0 (bound to P) is not a version-0 P2SH covenant cell");const m=s.outputs.map((N,D)=>({i:D,o:N})).filter(({o:N})=>N.covenant?.covenantId===r);if(m.length!==1)return c(`${m.length} outputs are bound to T; graduation re-owns exactly one reserve cell to the pool`);const y=m[0];if(s.inputs[y.o.covenant.authorizingInput]===void 0)return c(`the reserve output names a missing authorizing input ${y.o.covenant.authorizingInput}`);const v=xi(t.params,"gradReserve");const x=_(Uint8Array.of(107,32),L(_e),cl(v,i),n);if(y.o.scriptVersion!==0||h(Y(x))!==y.o.script){return c(`output ${y.i} (bound to T) does not commit to the reference token program with state {${v}, owner P, 0x04}`)}if(s.outputs.some(N=>N.covenant?.covenantId===o))return c("an output is bound to C; graduation leaves no curve continuation");const w=L(t.curvePrefix);const A=L(t.curveSuffix);const T=xi(t.params,"curveLots");let I;for(const[N,D]of s.inputs.entries()){let ue;try{ue=rl(L(D.signatureScript),"curve")}catch{continue}const oe=ue.decoded;if(oe.invocation.contract!=="curve"||oe.invocation.entry!=="graduate")continue;const ae=oe.program;if(ae.length!==w.length+$n+A.length)return c(`input ${N} invokes graduate on a program of ${ae.length} B, not the curve template's length`);if(!$(ae.subarray(0,w.length),w)||!$(ae.subarray(w.length+$n),A)){return c(`input ${N} invokes graduate on a program that is not the curve template of C`)}let ce;try{ce=Xo(ae.subarray(w.length,w.length+$n))}catch(st){return c(`input ${N} graduates a curve whose state does not decode: ${st.message}`)}if(h(ce.tokenCovId)!==r||ce.phase!==Bt)return c(`input ${N} graduates a curve whose state names ${h(ce.tokenCovId)} in phase ${ce.phase}, not T active`);if(ce.lotsSold!==T)return c(`input ${N} graduates at ${ce.lotsSold} of ${T} lots`);const te=tt(oe.invocation.poolPrefix,oe.invocation.poolSuffix);const je=t.params["poolH"];if(typeof je==="string"&&je!==te)return c(`graduate names pool template ${te}, the curve requires ${je}`);I={input:N,poolTemplateHash:te,lotsSold:ce.lotsSold,notes:Ip(9,"graduation",N,ue)};break}if(I===void 0)return c("no input of the graduation transaction invokes graduate on the curve program of C");const R=_(Uint8Array.of(107,32),L(_e),cl(v,o),n);const K=a((N,D)=>{try{const ue=rc(L(N.toLowerCase())).payloads;return ue.length>0&&$(ue[ue.length-1],D)}catch{return false}},"redeemIs");if(!s.inputs.some(N=>K(N.signatureScript,R))){return c(`no input of the graduation transaction spends C's reserve ({${v}, owner C, 0x04}); a curve with C's program but another id graduated its own reserve`)}let M;try{M=gt(s).txid}catch{M=void 0}return{ok:true,detail:{...M===void 0?{}:{txid:M},P:i,poolOutput:0,groupOutputs:[0],authorizingInput:l,outpoint:`${f.transactionId}:${f.index}`,reserveOutput:y.i,reserveAmount:v.toString(),curveInput:I.input,poolTemplateHash:I.poolTemplateHash,lotsSold:I.lotsSold.toString()},notes:I.notes}}a(Sg,"checkGraduationGroup");function Jv(e){return{tx01:e.tx01===null?null:mi(e.tx01),tx2:mi(e.tx2),T:e.T,C:e.C,H_T:e.H_T,H_C:e.H_C,curvePrefix:e.curvePrefix,curveSuffix:e.curveSuffix,tokenSuffix:e.tokenSuffix,states:e.states.map(t=>({index:t.index,amount:t.amount})),params:{...e.params},declaration:e.declaration,graduation:e.graduation===void 0||e.graduation===null?null:{tx:mi(e.graduation.tx),P:e.graduation.P}}}a(Jv,"launchProofToJson");var Ag=/^(?:[0-9a-f]{2})*$/;var Pp=/^[0-9a-f]{64}$/;function sc(e){if(e===null||typeof e!=="object"||Array.isArray(e))throw new F("launch proof: expected an object");const t=e;const n=a(l=>{const f=t[l];if(typeof f!=="string"||!Pp.test(f))throw new F(`launch proof: ${l} must be 32-byte lowercase hex`);return f},"id");const r=a(l=>{const f=t[l];if(typeof f!=="string"||!Ag.test(f))throw new F(`launch proof: ${l} must be lowercase hex`);return f},"hex");const o=a(l=>{const f=t[l];if(f===null||typeof f!=="object"||Array.isArray(f))throw new F(`launch proof: ${l} must be a transaction object`);try{return Zs(f)}catch(b){throw new F(`launch proof: ${l}: ${b.message}`)}},"tx");const i=t["states"];if(!Array.isArray(i))throw new F("launch proof: states must be an array");const s=t["params"];if(s===null||typeof s!=="object"||Array.isArray(s))throw new F("launch proof: params must be an object");const c=t["declaration"];const d=t["graduation"];let u=null;if(d!==null&&d!==void 0){if(typeof d!=="object"||Array.isArray(d))throw new F("launch proof: graduation must be an object or null");const l=d;if(typeof l["P"]!=="string"||!Pp.test(l["P"]))throw new F("launch proof: graduation.P must be 32-byte lowercase hex");if(l["tx"]===null||typeof l["tx"]!=="object"||Array.isArray(l["tx"]))throw new F("launch proof: graduation.tx must be a transaction object");try{u={tx:Zs(l["tx"]),P:l["P"]}}catch(f){throw new F(`launch proof: graduation.tx: ${f.message}`)}}return{tx01:t["tx01"]===null||t["tx01"]===void 0?null:o("tx01"),tx2:o("tx2"),T:n("T"),C:n("C"),H_T:n("H_T"),H_C:n("H_C"),curvePrefix:r("curvePrefix"),curveSuffix:r("curveSuffix"),tokenSuffix:r("tokenSuffix"),states:i.map((l,f)=>{const b=l;if(!Number.isInteger(b["index"])||typeof b["amount"]!=="string"||!/^(0|[1-9][0-9]*)$/.test(b["amount"]))throw new F(`launch proof: states[${f}] is malformed`);return{index:b["index"],amount:b["amount"]}}),params:s,declaration:c!==null&&typeof c==="object"&&!Array.isArray(c)?c:null,graduation:u}}a(sc,"launchProofFromJson");var Dn=class extends Error{static{a(this,"CurveMathError")}constructor(t){super(t);this.name=new.target.name}};var ee=class extends Dn{static{a(this,"ArgumentError")}};var sa=class extends ee{static{a(this,"SellPayoutTooSmallError")}};var J=class extends Dn{static{a(this,"ParameterError")}};var ca=class extends Dn{static{a(this,"OverflowError")}};var ye=class extends Dn{static{a(this,"PoolError")}};var Xr=class extends ye{static{a(this,"PoolPayoutTooSmallError")}};var wt=class extends Dn{static{a(this,"LpError")}};var jt=class extends wt{static{a(this,"LpStateError")}};var da=class extends wt{static{a(this,"LpShareCountError")}};var la=class extends wt{static{a(this,"LpSharesCapError")}};var Yr=class extends wt{static{a(this,"LpReserveCapError")}};var Qr=class extends wt{static{a(this,"LpFloorError")}};var Zr=class extends wt{static{a(this,"LpPayoutTooSmallError")}};var ua=class extends wt{static{a(this,"LpTokenLegTooSmallError")}};var Hn=class extends wt{static{a(this,"LpInvariantError")}};var fa=class extends wt{static{a(this,"LpInventoryError")}};var cc=(1n<<63n)-1n;var Tg=-cc;function H(e,t){if(typeof e!=="bigint")throw new ee(`${t} must be a bigint, got ${typeof e}`)}a(H,"assertBigint");function dl(e,t){if(e>cc||e<Tg)throw new ca(`${t} = ${e} leaves the KCC-1 int range`);return e}a(dl,"checked");function Ie(e,t,n){return dl(e+t,n)}a(Ie,"add");function St(e,t,n){return dl(e-t,n)}a(St,"sub");function ie(e,t,n){return dl(e*t,n)}a(ie,"mul");function ln(e,t){H(e,"dividend");H(t,"divisor");if(e<0n)throw new ee(`floorDiv dividend must be non-negative, got ${e}`);if(t<=0n)throw new ee(`floorDiv divisor must be positive, got ${t}`);return e/t}a(ln,"floorDiv");function Vn(e,t){H(e,"dividend");H(t,"divisor");if(e<0n)throw new ee(`ceilDiv dividend must be non-negative, got ${e}`);if(t<=0n)throw new ee(`ceilDiv divisor must be positive, got ${t}`);return(e+t-1n)/t}a(Vn,"ceilDiv");var Dt=10000n;var wi=200n;var ll=1000000000000n;var pl=10000000000n;var Cg=pl;var $p=1000000n;var Rp=8000n;var Pg=800000n;var ul=800000n;var pa=10000000n;var fl=100000000n;var Up=1000000000000000n;function Np(e){H(e,"curveLots");if(e<=0n)throw new J(`curveLots must be positive, got ${e}`);if(e<=Rp)return pl;if(e<=ul)return $p;throw new J(`curveLots ${e} exceeds the covenant's maximum ${ul}`)}a(Np,"kCap");function un(e){if(e===null||typeof e!=="object")throw new J("curve params must be an object");for(const n of["p0","k","feeBps","curveLots"])H(e[n],n);if(e.p0<0n)throw new J(`p0 must be non-negative, got ${e.p0}`);if(e.p0>ll)throw new J(`p0 ${e.p0} exceeds the cap ${ll}`);if(e.k<0n)throw new J(`k must be non-negative, got ${e.k}`);const t=Np(e.curveLots);if(e.k>t)throw new J(`k ${e.k} exceeds the cap ${t}`);if(e.feeBps<0n)throw new J(`feeBps must be non-negative, got ${e.feeBps}`);if(e.feeBps>wi)throw new J(`feeBps ${e.feeBps} exceeds the cap ${wi}`)}a(un,"validateCurveParams");function Eg(e,t,n=fl){un(e);H(t,"cellValue");H(n,"gradFeeMin");if(t<0n)throw new ee(`cellValue must be non-negative, got ${t}`);if(n!==fl)throw new ee(`gradFeeMin must be the contract set's GRAD_FEE_MIN (1 KAS), got ${n}`);const r=Ie(Ie(t,dc(e,0n,e.curveLots),"value + cost"),n,"value + cost + GRAD_FEE_MIN");return r<=Up}a(Eg,"initEscrowFits");function Og(e,t){H(t,"lot index");if(t<0n||t>=e.curveLots)throw new ee(`lot index ${t} is outside [0, ${e.curveLots})`)}a(Og,"assertLotIndex");function Kp(e,t){un(e);Og(e,t);return Ie(e.p0,ie(e.k,t,"K * i"),"P0 + K * i")}a(Kp,"lotPrice");function Bp(e,t,n){H(t,"s0");H(n,"n");if(t<0n)throw new ee(`s0 must be non-negative, got ${t}`);if(n<0n)throw new ee(`n must be non-negative, got ${n}`);if(t+n>e.curveLots)throw new ee(`s0 + n = ${t+n} exceeds curveLots ${e.curveLots}`)}a(Bp,"assertRange");function dc(e,t,n){const r=ie(n,e.p0,"n * P0");const o=ie(n,t,"n * s0");const i=ie(n,n-1n,"n * (n - 1)")/2n;const s=Ie(o,i,"n * s0 + n * (n - 1) / 2");const c=ie(e.k,s,"K * (n * s0 + n * (n - 1) / 2)");return Ie(r,c,"cost")}a(dc,"costUnchecked");function bl(e,t,n){un(e);Bp(e,t,n);return dc(e,t,n)}a(bl,"cost");function Si(e,t){H(e,"cost");H(t,"feeBps");if(e<0n)throw new ee(`cost must be non-negative, got ${e}`);if(t<0n||t>wi)throw new J(`feeBps ${t} is outside [0, ${wi}]`);const n=e/Dt;const r=e%Dt;return Ie(ie(n,t,"q * feeBps"),(r*t+(Dt-1n))/Dt,"fee")}a(Si,"fee");function ba(e,t,n){un(e);Bp(e,t,n);if(n===0n)throw new ee("a buy must take at least one lot");const r=dc(e,t,n);const o=Si(r,e.feeBps);return{cost:r,fee:o,total:Ie(r,o,"cost + fee")}}a(ba,"buyQuote");function Ai(e,t,n){un(e);H(t,"s0");H(n,"n");if(n<=0n)throw new ee("a sell must return at least one lot");if(t>e.curveLots)throw new ee(`s0 ${t} exceeds curveLots ${e.curveLots}`);if(n>t)throw new ee(`cannot sell ${n} lots when only ${t} are sold`);const r=dc(e,t-n,n);const o=Si(r,e.feeBps);const i=St(r,o,"cost - fee");if(i<pa){throw new sa(`net refund ${i} is below the contract's 0.1 KAS payout minimum (PAYOUT_MIN ${pa} sompi)`)}return{cost:r,fee:o,total:i}}a(Ai,"sellQuote");function Ti(e){return bl(e,0n,e.curveLots)}a(Ti,"fullRaise");function lc(e){un(e);return Kp(e,e.curveLots-1n)}a(lc,"lastLotPrice");function ml(e){return Si(lc(e),e.feeBps)}a(ml,"finalLotFee");function gl(e,t){un(e);if(t<=0n||t>e.curveLots)throw new ee(`n ${t} is outside [1, ${e.curveLots}]`);return Si(bl(e,e.curveLots-t,t),e.feeBps)}a(gl,"finalLotsFee");var lt=100000000n;var yl=1000000000000n;var hl=1200000000n;var uc={lotSize:1000n,totalSupply:1200000000n,gradLots:400000n,treasurySharePct:50n,sweepMinSompi:10n*lt,tokenCellSompi:10n*lt};var fn=Object.freeze({name:"standard",label:"Standard — graduates ≈ $69k at $0.04 KAS",curve:Object.freeze({p0:12092606n,k:149n,feeBps:100n,curveLots:800000n}),...uc});var _g=fn;var fc=.0401;var Ig=Object.freeze({name:"A",label:"Set A — raises 47,995 KAS",curve:Object.freeze({p0:1199381n,k:12n,feeBps:100n,curveLots:800000n}),...uc});var Lg=Object.freeze({name:"B",label:"Set B — raises 243,972 KAS",curve:Object.freeze({p0:2496535n,k:70n,feeBps:100n,curveLots:800000n}),...uc});var l8=Object.freeze({name:"tiny",label:"tiny — raises 3,200 KAS (testnet)",curve:Object.freeze({p0:0n,k:1n,feeBps:100n,curveLots:800000n}),...uc});var u8=Object.freeze([Ig,Lg,fn]);function At(e){if(e===null||typeof e!=="object")throw new J("preset must be an object");un(e.curve);for(const r of["lotSize","totalSupply","gradLots","treasurySharePct","sweepMinSompi","tokenCellSompi"]){H(e[r],r);if(e[r]<0n)throw new J(`${r} must be non-negative, got ${e[r]}`)}if(e.lotSize<=0n)throw new J(`lotSize must be positive, got ${e.lotSize}`);if(e.lotSize>yl)throw new J(`lotSize ${e.lotSize} exceeds the cap ${yl}`);if(e.gradLots<=0n)throw new J(`gradLots must be positive, got ${e.gradLots}`);if(e.tokenCellSompi<=0n)throw new J(`tokenCellSompi must be positive, got ${e.tokenCellSompi}`);if(e.treasurySharePct>100n)throw new J(`treasurySharePct ${e.treasurySharePct} exceeds 100`);const t=ie(e.curve.curveLots,e.lotSize,"CURVE_SUPPLY");const n=ie(e.gradLots,e.lotSize,"GRAD_RESERVE");if(n>hl)throw new J(`GRAD_RESERVE ${n} exceeds the cap ${hl}`);if(t+n!==e.totalSupply){throw new J(`CURVE_SUPPLY ${t} + GRAD_RESERVE ${n} != TOTAL_SUPPLY ${e.totalSupply}`)}}a(At,"validatePreset");function $g(e){At(e);return e.curve.curveLots*e.lotSize}a($g,"curveSupply");function Mp(e){At(e);return e.gradLots*e.lotSize}a(Mp,"gradReserve");function pn(e){At(e);return Ti(e.curve)*e.totalSupply/Mp(e)}a(pn,"graduationMarketCapSompi");function Rg(e,t){if(typeof t!=="number"||!Number.isFinite(t)||t<0){throw new J(`kasUsd must be a finite non-negative number, got ${String(t)}`)}const n=pn(e);const r=n/lt;const o=n%lt;return(Number(r)+Number(o)/Number(lt))*t}a(Rg,"graduationMarketCapUsd");var kl=800000000n;var Ug=400000000n;var Ng=0n;var Kg=8000000n;var y8=Object.freeze([1000n,10000n]);var h8=1.1025;var Ci=.05;var Bg=1;var Me=1000n;var z=10000n;var Mg=Object.freeze([[z,122n],[z,134n],[z,147n],[z,161n],[z,177n],[z,195n],[z,214n],[z,235n],[z,258n],[z,284n],[z,313n],[z,344n],[z,379n],[z,417n],[z,459n],[z,506n],[z,557n],[z,613n],[z,675n],[z,744n],[z,820n],[z,904n],[z,996n],[z,1097n],[z,1209n],[z,1332n],[z,1468n],[z,1618n],[z,1783n],[z,1965n],[z,2166n],[z,2387n],[z,2631n],[z,2900n],[z,3197n],[z,3524n],[z,3885n],[z,4283n],[z,4722n],[z,5205n],[z,5738n],[z,6326n],[z,6974n],[z,7688n],[z,8475n],[z,9343n],[Me,103n],[Me,113n],[Me,124n],[Me,136n],[Me,164n],[Me,180n],[Me,198n],[Me,218n],[Me,240n],[Me,264n],[Me,291n],[Me,320n],[Me,352n],[Me,388n],[Me,427n],[Me,470n],[Me,518n],[Me,571n],[Me,629n]].map(([e,t])=>Object.freeze({lot:e,k:t})));function vl(e){H(e,"lot");if(e<=0n||kl%e!==0n||kl/e%10n!==0n){throw new J(`lot ${e} does not divide the Standard curve's 800M tokens into a multiple of 10 lots`)}return kl/e}a(vl,"standardCurveLots");function Fg(e,t){H(t,"k");return t*vl(e)/10n}a(Fg,"standardShapeP0");function k8(e){vl(e);return{lots:Ng/e,maxLots:Kg/e}}a(k8,"standardOpeningWindow");function jg(e){H(e.k,"k");H(e.lot,"lot");if(e.lot===Me)return`standard-k${e.k}`;if(e.lot%1000n!==0n)throw new J(`lot ${e.lot} is not a whole number of thousands`);return`standard-lot${e.lot/1000n}k-k${e.k}`}a(jg,"standardBandName");var Dg=/^standard-(?:lot([1-9][0-9]*)k-)?k([1-9][0-9]*)$/;var xl=bc(pn(fn))*fc;function bc(e){return Number(e/lt)+Number(e%lt)/Number(lt)}a(bc,"kasOf");function Hg(e){return`$${e.toPrecision(3)}`}a(Hg,"priceLabel");function Vg(e){const t=vl(e.lot);const n={...fn,name:jg(e),curve:Object.freeze({...fn.curve,p0:Fg(e.lot,e.k),k:e.k,curveLots:t}),lotSize:e.lot,gradLots:Ug/e.lot};const r=xl/bc(pn(n));return Object.freeze({...n,label:`Standard — graduates ≈ $69k at ${Hg(r)} KAS`})}a(Vg,"bandPreset");var Xt=Object.freeze([...Mg.map(Vg),fn].sort((e,t)=>{const n=pn(e);const r=pn(t);return n<r?-1:n>r?1:0}));var v8=Object.freeze(Xt.filter(e=>e!==fn));var Fp=new Map(Xt.map(e=>[e.name,e]));var wl=new Map(Xt.map((e,t)=>[e.name,t]));var bn=Xt.map(e=>e===fn?fc:xl/bc(pn(e)));function Sl(e){return Fp.get(e)}a(Sl,"standardFamilyPreset");function x8(e){return Fp.has(e)}a(x8,"isStandardFamilyName");function jp(e){return Dg.test(e)}a(jp,"isStandardBandNameForm");function w8(e){return wl.get(e)}a(w8,"standardFamilyIndex");function Dp(e){const t=wl.get(e.name);if(t===void 0||Xt[t]!==e)throw new J(`${e.name} is not a member of the Standard family`);return t}a(Dp,"memberIndex");function S8(e){return bn[Dp(e)]}a(S8,"standardBandReferenceKasUsd");function Pi(e){const t=Xt.length;return{max:e===0?bn[0]*(1+Ci):Math.sqrt(bn[e]*bn[e-1]),min:e===t-1?bn[t-1]/(1+Ci):Math.sqrt(bn[e]*bn[e+1])}}a(Pi,"servesAt");function A8(e){return Pi(Dp(e))}a(A8,"standardBandServes");var pc=Object.freeze({min:Pi(Xt.length-1).min,max:Pi(0).max});var Ei=class extends J{static{a(this,"StandardBandOutOfRange")}kasUsd;constructor(t){super(`KAS/USD ${t} is outside the Standard family's range (${pc.min.toPrecision(3)} .. ${pc.max.toPrecision(3)}): no band graduates within ${Ci*100} % of the target`);this.kasUsd=t}};function Hp(e){if(typeof e!=="number"||!Number.isFinite(e)||e<=0){throw new J(`kasUsd must be a finite positive number, got ${String(e)}`)}}a(Hp,"assertPrice");function Vp(e){let t={index:0,dist:Number.POSITIVE_INFINITY};for(let n=0;n<Xt.length;n++){const r=Math.abs(Math.log(e/bn[n]));if(r<t.dist)t={index:n,dist:r}}return t}a(Vp,"nearestIndex");function T8(e){Hp(e);const{index:t,dist:n}=Vp(e);if(n>Math.log(1+Ci)+1e-12)throw new Ei(e);const r=Xt[t];const o=bc(pn(r))*e;return{preset:r,index:t,kasUsd:e,referenceKasUsd:bn[t],graduationCapSompi:pn(r),graduationCapUsd:o,deviation:o/xl-1}}a(T8,"standardBandFor");function Gp(e,t,n=Bg){Hp(t);if(!Number.isInteger(n)||n<0)throw new J(`toleranceBands must be a non-negative integer, got ${n}`);const r=wl.get(e);const o=Vp(t);const i=o.dist<=Math.log(1+Ci)+1e-12;const s=i?Xt[o.index]:void 0;if(r===void 0){return{accepted:false,reason:"not-a-band",index:r,expected:s,distance:void 0,accepts:void 0,message:`${e} is not a Standard band`}}const c=Xt.length;const d={max:Pi(Math.max(0,r-n)).max,min:Pi(Math.min(c-1,r+n)).min};const u=i?Math.abs(r-o.index):void 0;const l=a(b=>`$${b.toPrecision(3)}`,"fmt");if(!i){return{accepted:false,reason:"price-out-of-range",index:r,expected:s,distance:u,accepts:d,message:`KAS at ${l(t)} is outside the Standard bands' range (${l(pc.min)} .. ${l(pc.max)})`}}const f=t>=d.min&&t<=d.max;return{accepted:f,reason:f?void 0:"wrong-band",index:r,expected:s,distance:u,accepts:d,message:f?`${e} is accepted at KAS ${l(t)}`:`${e} is the band for KAS at ${l(bn[r])}, ${u} bands from the band for KAS at ${l(t)} (${s.name}); it is accepted only for ${l(d.min)} .. ${l(d.max)}`}}a(Gp,"checkStandardBand");function Gg(e){return e.hashWindow??{start:e.stateOffset,length:e.stateLength}}a(Gg,"windowOf");function Al(e,t){if(!Number.isInteger(e.start)||e.start<0||!Number.isInteger(e.length)||e.length<0){throw new Error(`${t}: invalid state window start=${e.start} length=${e.length}`)}}a(Al,"assertWindow");var mc=class{static{a(this,"LayoutRegistry")}#e=new Map;#t=new Map;#n=new Map;#r=new Map;registerCodec(t){this.#e.set(t.id,t);return this}registerTemplate(t){const n=t.templateHash;if(!ol.test(n)){throw new Error(`cannot register template: hash must match ^[0-9a-f]{64}$, got "${n}"`)}if(this.#t.has(n)||this.#n.has(n)){throw new Error(`template ${n} is already registered; refusing to overwrite`)}Al({start:t.stateOffset,length:t.stateLength},`template ${n}`);const r=Gg(t);Al(r,`template ${n} hashWindow`);if(t.stateOffset<r.start||t.stateOffset+t.stateLength>r.start+r.length){throw new Error(`template ${n}: codec state window must lie inside the hash window`)}if(t.prefixHex!==void 0){if(!/^([0-9a-f]{2})*$/.test(t.prefixHex)||t.prefixHex.length/2>t.stateOffset){throw new Error(`template ${n}: prefixHex must be lowercase hex and end before stateOffset`)}}if(t.recognisedOnly===void 0){const o=this.#e.get(t.layoutId);if(!o){throw new Error(`cannot register template ${n}: no codec for layout ${t.layoutId}`)}if(t.stateLength!==o.stateLength){throw new Error(`template ${n} declares stateLength ${t.stateLength} but codec ${o.id} uses ${o.stateLength}`)}}this.#t.set(n,t);this.#o(r);return this}quarantineTemplate(t){if(!ol.test(t.templateHash)){throw new Error(`cannot quarantine template: hash must match ^[0-9a-f]{64}$, got "${t.templateHash}"`)}if(this.#t.has(t.templateHash)||this.#n.has(t.templateHash)){throw new Error(`template ${t.templateHash} is already registered; refusing to overwrite`)}Al(t.window,`quarantined template ${t.templateHash}`);this.#n.set(t.templateHash,t.reason);this.#o(t.window);return this}#o(t){this.#r.set(`${t.start}:${t.length}`,{start:t.start,length:t.length})}getCodec(t){const n=this.#e.get(t);if(!n)throw new Error(`no codec registered for layout ${t}`);return n}resolveTemplate(t){const n=t.toLowerCase();const r=this.#t.get(n);if(r)return r;const o=this.#n.get(n);if(o){throw new Ln(`${n} (quarantined: ${o})`)}throw new Ln(n)}isDecodable(t){const n=this.#t.get(t.toLowerCase());return n!==void 0&&n.recognisedOnly===void 0}identifyTemplate(t){const n=[];for(const r of this.#r.values()){if(r.start+r.length>t.length)continue;const o=Jt(t,r.start,r.length);const i=this.#t.get(o);if(i)return i;const s=this.#n.get(o);if(s!==void 0){throw new Ln(`${o} (quarantined: ${s})`)}n.push(`${o} over window [${r.start}, ${r.start+r.length})`)}throw new Ln(n.length===0?`(none: ${t.length}-byte program is shorter than every known state window)`:`(computed ${n.join("; ")})`)}decodeProgram(t,n){const r=this.#c(t,n);if(r.recognisedOnly!==void 0){throw new Ho(r.templateHash,r.recognisedOnly)}const o=this.#i(t,r);const i=this.getCodec(r.layoutId);const s=i.decode(o,r.schemes);i.validate(s,r.schemes);return s}assertRoundTrip(t,n){const r=this.#c(t,n);const o=this.decodeProgram(t,r.templateHash);const i=this.getCodec(r.layoutId).encode(o,r.schemes);const s=this.#i(t,r);if(h(i)!==h(s)){throw new F(`round-trip mismatch for template ${r.templateHash}: on-chain ${h(s)} vs re-encoded ${h(i)}`)}return o}#c(t,n){const r=n===void 0?void 0:this.resolveTemplate(n);const o=this.identifyTemplate(t);if(r!==void 0&&r.templateHash!==o.templateHash){throw new Do(r.templateHash,o.templateHash)}return o}#i(t,n){const r=n.stateOffset+n.stateLength;if(t.length<r){throw new F(`program is ${t.length} bytes; template ${n.templateHash} needs at least ${r}`)}if(n.prefixHex!==void 0){const o=n.prefixHex;const i=h(t.subarray(0,o.length/2));if(i!==o){throw new F(`template ${n.templateHash} expects program prefix ${o}, got ${i}`)}}return t.subarray(n.stateOffset,r)}};var qg=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);var mn=a((e,t)=>e>>>t|e<<32-t,"rotr");function gc(e){const t=typeof e==="string"?new TextEncoder().encode(e):e;const n=BigInt(t.length)*8n;const r=new Uint8Array(Math.ceil((t.length+9)/64)*64);r.set(t);r[t.length]=128;const o=new DataView(r.buffer);o.setBigUint64(r.length-8,n,false);const i=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);const s=new Uint32Array(64);for(let u=0;u<r.length;u+=64){for(let w=0;w<16;w++)s[w]=o.getUint32(u+w*4,false);for(let w=16;w<64;w++){const A=s[w-15];const T=s[w-2];const I=mn(A,7)^mn(A,18)^A>>>3;const R=mn(T,17)^mn(T,19)^T>>>10;s[w]=s[w-16]+I+s[w-7]+R>>>0}let[l,f,b,g,m,y,v,x]=[i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]];for(let w=0;w<64;w++){const A=x+(mn(m,6)^mn(m,11)^mn(m,25))+(m&y^~m&v)+qg[w]+s[w]>>>0;const T=(mn(l,2)^mn(l,13)^mn(l,22))+(l&f^l&b^f&b)>>>0;x=v;v=y;y=m;m=g+A>>>0;g=b;b=f;f=l;l=A+T>>>0}i[0]=i[0]+l>>>0;i[1]=i[1]+f>>>0;i[2]=i[2]+b>>>0;i[3]=i[3]+g>>>0;i[4]=i[4]+m>>>0;i[5]=i[5]+y>>>0;i[6]=i[6]+v>>>0;i[7]=i[7]+x>>>0}const c=new Uint8Array(32);const d=new DataView(c.buffer);for(let u=0;u<8;u++)d.setUint32(u*4,i[u],false);return c}a(gc,"sha256");function ma(e){let t="";for(const n of gc(e))t+=n.toString(16).padStart(2,"0");return t}a(ma,"sha256Hex");var yc=/[\u0000-\u001F\u007F-\u009F\u00AD\u034F\u061C\u115F\u1160\u17B4\u17B5\u180B-\u180F\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFEFF\uFFA0\uFFF9-\uFFFB]|\uDB40[\uDC00-\uDC7F\uDD00-\uDDEF]|\uD834[\uDD73-\uDD7A]/g;function qp(e){return e.replace(/\s+/gu," ").replace(yc,"").replace(/ {2,}/g," ").trim()}a(qp,"displayText");var Wg={"А":"A","В":"B","Е":"E","Ё":"E","К":"K","М":"M","Н":"H","О":"O","Р":"P","С":"C","Т":"T","У":"Y","Х":"X","Ѕ":"S","І":"I","Ї":"I","Ј":"J","Ԛ":"Q","Ԝ":"W","Ү":"Y","Һ":"H","Ӏ":"I","Տ":"S","Օ":"O","Α":"A","Β":"B","Ε":"E","Ζ":"Z","Η":"H","Ι":"I","Κ":"K","Μ":"M","Ν":"N","Ο":"O","Ρ":"P","Τ":"T","Υ":"Y","Χ":"X","Ꭺ":"A","Ᏼ":"B","Ꮯ":"C","Ꭰ":"D","Ꭼ":"E","Ꮐ":"G","Ꮋ":"H","Ꭵ":"I","Ꭻ":"J","Ꮶ":"K","Ꮮ":"L","Ꮇ":"M","Ꭲ":"T","Ꮪ":"S","Ꮢ":"R","Ꮩ":"V","Ꮃ":"W","Ꮓ":"Z","Ꮲ":"P","ꓮ":"A","ꓐ":"B","ꓚ":"C","ꓓ":"D","ꓰ":"E","ꓝ":"F","ꓖ":"G","ꓧ":"H","ꓲ":"I","ꓙ":"J","ꓗ":"K","ꓡ":"L","ꓟ":"M","ꓠ":"N","ꓳ":"O","ꓑ":"P","ꓣ":"R","ꓢ":"S","ꓔ":"T","ꓴ":"U","ꓦ":"V","ꓪ":"W","ꓫ":"X","ꓬ":"Y","ꓜ":"Z","ᴀ":"A","ʙ":"B","ᴄ":"C","ᴅ":"D","ᴇ":"E","ꜰ":"F","ɢ":"G","ʜ":"H","ɪ":"I","ᴊ":"J","ᴋ":"K","ʟ":"L","ᴍ":"M","ɴ":"N","ᴏ":"O","ᴘ":"P","ʀ":"R","ꜱ":"S","Ɪ":"I","Ʀ":"R","ᴛ":"T","ᴜ":"U","ᴠ":"V","ᴡ":"W","ʏ":"Y","ᴢ":"Z"};var zg=/[\uFE00-\uFE0F\u2800]|\uDB40[\uDD00-\uDDEF]|\uD834[\uDD73-\uDD7A]/g;var Jg=/[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF]/g;function Xg(e){if(e>=127312&&e<=127337)return String.fromCharCode(65+e-127312);if(e>=127344&&e<=127369)return String.fromCharCode(65+e-127344);return void 0}a(Xg,"negativeLetter");function Tl(e){const t=qp(e.normalize("NFKC")).normalize("NFD").replace(Jg,"").normalize("NFC").replace(zg,"").replace(/[$\s]/g,"").toUpperCase();let n="";for(const r of t)n+=Wg[r]??Xg(r.codePointAt(0))??r;return n}a(Tl,"tickerSkeleton");function U8(e){yc.lastIndex=0;const t=yc.test(e);yc.lastIndex=0;return t}a(U8,"hasHiddenCharacters");var Yt=a(e=>({word:e,inName:"exact"}),"exact");var hc=a(e=>({word:e,inName:"word"}),"anyWord");var M8=[{id:"kas",words:[Yt("KAS"),Yt("KASPA")]},{id:"wkas",words:[hc("WKAS"),Yt("WRAPPEDKAS"),Yt("WRAPPEDKASPA")]},{id:"usdt",words:[hc("USDT"),hc("TETHER"),Yt("TETHERUSD")]},{id:"usdc",words:[hc("USDC"),Yt("USDCOIN")]},{id:"btc",words:[Yt("BTC"),Yt("BITCOIN")]},{id:"eth",words:[Yt("ETH"),Yt("ETHER"),Yt("ETHEREUM")]}];var Yg=["NACHO","ZEAL","KASPY","KANGO","BURT","GHOAD","KEIRO","KASPER","KONAN","KREX","KROAK","KAS","KASPA","WKAS","BTC","XBT","ETH","WETH","WBTC","SOL","BNB","XRP","DOGE","LTC","BCH","ADA","TRX","TON","AVAX","DOT","MATIC","POL","LINK","SHIB","XMR","ETC","XLM","ATOM","SUI","APT","NEAR","HBAR","USDT","USDC","TETHER","SEAL","KASSEAL"];var Qg=["SEAL","KASSEAL"];var Zg={"testnet-10":"kaspatest:qp8pqkcf0w8l3mke93eu86ngyc808x54t574a8jha96nu63x8tfn2et7nk35w",mainnet:"kaspa:qrt0p8sd5g8k383mzxgqtyl7ehkdez8ds8cpxqcuwjdaayke9rjhg9pqnr3zx"};function Wp(e,t,n){const r=n!==void 0&&Zg[e]===n.trim().toLowerCase();const o=a(c=>r&&Qg.includes(c),"allowed");const i=Tl(t.ticker);const s=Tl(t.name);for(const[c,d]of[["ticker",i],["name",s]]){if(Yg.includes(d)&&!o(d))return{word:d,field:c}}return null}a(Wp,"reservedNameOf");var zp=75;var Jp=83;var Xp=1;var kc=6;var ey={kasware:1,kaspire:2,kastle:3,braidswap:1e3};var ty={extension:1,walletconnect:2,embedded:3};var ny=new Set(Object.values(ey));var ry=new Set(Object.values(ty));function Yp(e){return ny.has(e)}a(Yp,"isPartnerId");function Qp(e){return ry.has(e)}a(Qp,"isPartnerChannel");function Zp(e){if(!Yp(e.partner))throw new RangeError(`unknown partner id ${String(e.partner)}`);if(!Qp(e.channel))throw new RangeError(`unknown partner channel ${String(e.channel)}`);return Uint8Array.of(zp,Jp,Xp,e.partner>>8,e.partner&255,e.channel)}a(Zp,"encodePartnerTag");function oy(e){if(e.length!==kc)return null;if(e[0]!==zp||e[1]!==Jp||e[2]!==Xp)return null;const t=e[3]<<8|e[4];const n=e[5];if(!Yp(t)||!Qp(n))return null;return{partner:t,channel:n}}a(oy,"decodePartnerTag");function D8(e){if(e.length!==2*kc||!/^[0-9a-f]+$/.test(e))return null;const t=new Uint8Array(kc);for(let n=0;n<kc;n++)t[n]=parseInt(e.slice(2*n,2*n+2),16);return oy(t)}a(D8,"decodePartnerTagHex");function vc(){const e=new mc().registerCodec(hp).registerCodec(Mt);for(const t of kp)e.registerTemplate(t);e.registerTemplate(ic);for(const t of vp)e.registerTemplate(t);for(const t of xp)e.quarantineTemplate(t);return e}a(vc,"createDefaultRegistry");var Qt=class extends Error{static{a(this,"ArtifactMissing")}path;constructor(t){super(`contract artifact ${t} is not available in this build`);this.name="ArtifactMissing";this.path=t}};var ga=class extends Error{static{a(this,"ArtifactSourceNotInstalled")}constructor(){super("no contract artifact source is installed: import the package through its Node entry, or call initWeb() with the artifacts");this.name="ArtifactSourceNotInstalled"}};var ha=Object.freeze(["v1"]);function ze(e){return e==="v1"}a(ze,"hasOpenLiquidity");var Oi=class extends Error{static{a(this,"ContractSetNotSupported")}set;constructor(t,n){super(`contract set ${t} is not supported by ${n} yet`);this.name="ContractSetNotSupported";this.set=t}};function _i(e,t="the transaction builder"){if(!Uf.includes(e))throw new Error(`unknown contract version ${String(e)} (${t})`);return e}a(_i,"builderContractSet");var nt="v1";var ay="contracts/curve/v1";var e0="contracts/curve/v1/artifacts";var iy="contracts/pool/v1/artifacts/pool.artifact.json";var sy="contracts/pool/v1/pool.ctor.json";var Sc="codec/fixtures/argent-kcc20-reference-c8a0871.json";var t0=Object.freeze(["v1-2026-10-18-final","v1-kasseal-mainnet-tn10","v1-kasseal-mainnet","v1-kasseal-mainnet-2-tn10","v1-kasseal-mainnet-2","v1-kasseal-mainnet-3-tn10","v1-kasseal-mainnet-3"]);var cy="v1-kasseal-mainnet";var n0="v1-kasseal-mainnet-2";var dy="v1-kasseal-mainnet-2-tn10";var Ac="v1-kasseal-mainnet-3";var El="v1-kasseal-mainnet-3-tn10";var ly=Object.freeze([Ac,El]);var Ol=200n;function _l(e){return e.revision!==void 0&&ly.includes(e.revision)}a(_l,"hasCreatorWindow");var uy=Object.freeze([cy,n0,Ac]);var r0="mainnet";function Ii(e){const t=e===r0;return t0.filter(n=>uy.includes(n)===t)}a(Ii,"v1RevisionsOn");var fy="testnet-10";function Il(e){if(e===r0)return Ac;return e===fy?El:void 0}a(Il,"launchRevisionOf");function Ll(e,t){if(e!=="v1"||!t0.includes(t))throw new Error(`unknown frozen ${e} revision ${t}`);return t}a(Ll,"assertRevision");function Li(e){_i(e,"the builder's artifact source")}a(Li,"assertVersion");function Tc(e=nt,t){Li(e);if(t!==void 0)return`${e0}/${Ll(e,t)}`;return ay}a(Tc,"curvePresetDir");function o0(e,t=nt,n){Li(t);if(n!==void 0)return`${Tc(t,n)}/curve.${e}.artifact.json`;return`${e0}/curve.${e}.artifact.json`}a(o0,"curveArtifactPath");function a0(e,t=nt,n){return`${Tc(t,n)}/curve.ctor.${e}.json`}a(a0,"curveCtorPath");function i0(e=nt,t){Li(e);if(t!==void 0)return`contracts/pool/v1/artifacts/${Ll(e,t)}/pool.artifact.json`;return iy}a(i0,"poolArtifactPath");function s0(e=nt,t){Li(e);if(t!==void 0)return`contracts/pool/v1/artifacts/${Ll(e,t)}/pool.ctor.json`;return sy}a(s0,"poolCtorPath");var py=/^curve\.ctor\.([A-Za-z0-9_-]+)\.json$/;function by(e){return e.flatMap(t=>{const n=py.exec(t);return n?[n[1]]:[]}).sort()}a(by,"presetsOf");function c0(e,t){Li(e);return by(t)}a(c0,"presetsOfSet");function xc(e){const t=e.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/+$/,"");if(t.split("/").some(n=>n===".."||n===""))throw new Error(`artifact path ${e} is not a plain relative path`);return t}a(xc,"normalise");var ya=class extends Qt{static{a(this,"ArtifactNotLoaded")}preset;constructor(t,n){super(t);this.message=`contract artifact ${t} belongs to preset ${n}, which this build loads on demand: await ensurePresetArtifacts('${n}') first`;this.name="ArtifactNotLoaded";this.preset=n}};var $l=new Map;var Pl=new Map;var Cl=new Map;var d0=new Set;function v3(e){for(const[t,n]of Object.entries(e)){if(typeof n!=="function")throw new Error(`lazy artifact loader for ${t} is not a function`);$l.set(t,n)}}a(v3,"registerLazyArtifacts");function l0(e){return $l.has(e)&&!d0.has(e)}a(l0,"presetArtifactsPending");function Rl(e){const t=$l.get(e);if(t===void 0)return Promise.resolve();let n=Cl.get(e);if(n===void 0){n=t().then(r=>{for(const[o,i]of Object.entries(r)){if(typeof i!=="string")throw new Error(`artifact ${o} is not text`);Pl.set(xc(o),i)}d0.add(e)});n.catch(()=>Cl.delete(e));Cl.set(e,n)}return n}a(Rl,"ensurePresetArtifacts");var my=/(?:^|\/)curve\.(?:ctor\.)?([A-Za-z0-9_-]+?)(?:\.artifact|\.ctor)?\.json$/;function x3(e){const t=new Map;for(const[n,r]of Object.entries(e)){if(typeof r!=="string")throw new Error(`artifact ${n} is not text`);t.set(xc(n),r)}return{readText(n){const r=xc(n);const o=t.get(r)??Pl.get(r);if(o!==void 0)return o;const i=my.exec(r)?.[1];if(i!==void 0&&l0(i))throw new ya(n,i);throw new Qt(n)},list(n){const r=`${xc(n)}/`;const o=new Set;for(const i of[...t.keys(),...Pl.keys()]){if(!i.startsWith(r))continue;const s=i.slice(r.length);if(!s.includes("/"))o.add(s)}return[...o].sort()}}}a(x3,"artifactSourceFromFiles");var wc;function w3(e){const t=wc;wc=e;return t}a(w3,"installArtifactSource");function eo(){if(wc===void 0)throw new ga;return wc}a(eo,"artifactSource");function Gn(e){return JSON.parse(eo().readText(e))}a(Gn,"readArtifactJson");function qn(e){return{version:e.version,inputs:e.inputs.map(t=>({transactionId:t.previousOutpoint.transactionId,index:t.previousOutpoint.index,sequence:t.sequence,signatureScript:t.signatureScript??"",computeBudget:t.computeBudget})),outputs:e.outputs.map(t=>({value:t.value,scriptVersion:t.scriptPublicKey.version,script:t.scriptPublicKey.script,covenant:t.covenant?{authorizingInput:t.covenant.authorizingInput,covenantId:t.covenant.covenantId.toString()}:null})),lockTime:e.lockTime,subnetworkId:e.subnetworkId,gas:e.gas,payload:e.payload}}a(qn,"plainTxFromSdk");function gy(e){for(let t=0;t<e.length;t++){const n=e.charCodeAt(t);if(n>=55296&&n<=56319){const r=e.charCodeAt(t+1);if(!(r>=56320&&r<=57343))return true;t++}else if(n>=56320&&n<=57343)return true}return false}a(gy,"hasLoneSurrogate");function u0(e,{maxDepth:t=64}={}){let n=0;const r=a(d=>{throw new Error(`I-JSON: ${d} at ${n}`)},"err");const o=a(()=>{while(n<e.length&&" \n\r".includes(e[n]))n++},"ws");const i=a(()=>{n++;let d="";for(;;){if(n>=e.length)r("unterminated string");const u=e[n++];if(u==='"')break;if(u==="\\"){const l=e[n++];if(l==="u"){const f=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(f))r("bad \\u escape");d+=String.fromCharCode(parseInt(f,16));n+=4}else{const f={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:" "};if(l===void 0||!(l in f))r(`bad escape \\${l}`);d+=f[l]}}else{if(u.charCodeAt(0)<32)r("control character in string");d+=u}}if(gy(d))r("string contains a lone surrogate");return d},"str");const s=a(d=>{o();const u=e[n];if(u==="{"){if(d>t)r(`nesting deeper than ${t}`);n++;const b={};const g=new Set;o();if(e[n]==="}"){n++;return b}for(;;){o();if(e[n]!=='"')r("expected member name");const m=i();if(g.has(m))r(`duplicate member name "${m}"`);g.add(m);o();if(e[n]!==":")r('expected ":"');n++;Object.defineProperty(b,m,{value:s(d+1),enumerable:true,writable:true,configurable:true});o();if(e[n]===","){n++;continue}if(e[n]==="}"){n++;return b}r('expected "," or "}"')}}if(u==="["){if(d>t)r(`nesting deeper than ${t}`);n++;const b=[];o();if(e[n]==="]"){n++;return b}for(;;){b.push(s(d+1));o();if(e[n]===","){n++;continue}if(e[n]==="]"){n++;return b}r('expected "," or "]"')}}if(u==='"')return i();if(e.startsWith("true",n)){n+=4;return true}if(e.startsWith("false",n)){n+=5;return false}if(e.startsWith("null",n)){n+=4;return null}const l=/^-?(0|[1-9]\d*)(\.\d+)?([eE][+-]?\d+)?/.exec(e.slice(n));if(!l)r("unexpected character");n+=l[0].length;const f=Number(l[0]);if(!Number.isFinite(f))r(`number ${l[0]} is not a finite binary64`);return f},"value");const c=s(1);o();if(n!==e.length)r("trailing characters");return c}a(u0,"parseIJSON");function yy(e){if(e.length===0)return{valid:false,reason:"empty payload (no codec prefix)"};if(e[0]!==0)return{valid:false,reason:`unknown codec prefix 0x${e[0].toString(16).padStart(2,"0")}`};let t;try{t=new TextDecoder("utf-8",{fatal:true,ignoreBOM:true}).decode(e.subarray(1))}catch{return{valid:false,reason:"payload is not valid UTF-8"}}if(t.charCodeAt(0)===65279)return{valid:false,reason:"payload starts with a byte-order mark",text:t};let n;try{n=u0(t)}catch(r){return{valid:false,reason:r.message,text:t}}if(n===null||typeof n!=="object"||Array.isArray(n))return{valid:false,reason:"JSON value is not an object",text:t};return{valid:true,object:n,text:t}}a(yy,"decodeDeclaration");function f0(e,t=4096){const n={name:e.name,symbol:e.symbol,decimals:e.decimals};if(e.image!==void 0)n["image"]=e.image;if(e.description!==void 0)n["description"]=e.description;if(e.links!==void 0)n["links"]=e.links;const r=_(Uint8Array.of(0),new TextEncoder().encode(JSON.stringify(n)));if(r.length>t)throw new Error(`declaration is ${r.length} bytes, above the ${t}-byte limit`);const o=yy(r);if(!o.valid)throw new Error(`metadata does not round-trip as an I-JSON declaration: ${o.reason}`);return r}a(f0,"encodeDeclaration");var we=100000000n;var Ht=5n*we;var De=100n;var br=20n*De;var p0=50n;var Ul=we;var Cc=1000000000000n;var $i=5e5;var Nl=5e5;var Kl=1e6;var Ml=Cc/BigInt($i);var Ri=4n*Cc/BigInt($i);function Pc(e){let t=2+8;for(const n of e.inputs)t+=32+4+8+n.sigScriptLength+8+2;t+=8;for(const n of e.outputs)t+=8+2+8+n.spkLength+(n.hasCovenant?2+32:0);t+=8+20+8+32+8+e.payloadLength;return t}a(Pc,"serializedSize");function b0(e){let t=0;for(const r of e.outputs)t+=2+r.spkLength;let n=0;for(const r of e.inputs)n+=r.computeBudget;return Pc(e)+t*10+n*100}a(b0,"computeMass");var m0=a(e=>Pc(e)*4,"transientMass");function Bl(e,t){return Math.ceil((63+e+(t?32:0))/100)}a(Bl,"plurality");function g0(e,t){const n=Cc;let r=0n;let o=0n;for(const l of t){if(l.amount<=0n)throw new Error("storage mass: output value must be positive");r+=l.plurality;o+=n*l.plurality*l.plurality/l.amount}const i=e.reduce((l,f)=>l+f.plurality,0n);const s=r===1n||e.length<=2&&(i===1n||r===2n&&i===2n);if(s){const l=e.reduce((f,b)=>f+n*b.plurality*b.plurality/b.amount,0n);return o>l?o-l:0n}const c=e.reduce((l,f)=>l+f.amount,0n);let d=c/i;if(d<1n)d=1n;const u=i*(n/d);return o>u?o-u:0n}a(g0,"storageMass");function Wn(e){const t=e.inputs.map(l=>({plurality:BigInt(Bl(l.spkLength,l.hasCovenant)),amount:l.amount}));const n=e.outputs.map(l=>({plurality:BigInt(Bl(l.spkLength,l.hasCovenant)),amount:l.value}));const r=Pc(e);const o=b0(e);const i=m0(e);const s=Math.ceil(i/2);const c=Number(g0(t,n));const d=Math.max(o,s,c);const u=d===c&&c>=s&&c>=o?"storage":d===s?"transient":"compute";return{bytes:r,compute:o,transient:i,normalizedTransient:s,storage:c,max:d,minFee:BigInt(d)*De,binding:u}}a(Wn,"masses");var ka=class extends Error{static{a(this,"FeerateOutOfRange")}feerate;min=De;max=br;constructor(t,n="feerate"){super(`${n}: ${t} sompi per gram is outside the accepted range ${De}..${br}`);this.name="FeerateOutOfRange";this.feerate=t}};function Ui(e,t="feerate"){if(e>br)throw new ka(e,t);return e<De?De:e}a(Ui,"boundedFeerate");function hy(e){if(e>br)return br;return e<De?De:e}a(hy,"clampFeerate");function no(e){const t=p0*e;return t>Ul?t:Ul}a(no,"feeCeiling");var to=class extends Error{static{a(this,"FeeAboveCeiling")}fee;ceiling;minFee;constructor(t,n,r){const o=no(r);super(`${t}: fee ${n} sompi is above the ceiling ${o} (model minimum ${r}); refused so no surplus can become miner fee`);this.name="FeeAboveCeiling";this.fee=n;this.ceiling=o;this.minFee=r}};function Fl(e){if(e.storage>$i)throw new Error(`storage mass ${e.storage} exceeds the block limit ${$i}: an output is below its floor`);if(e.compute>Nl)throw new Error(`compute mass ${e.compute} exceeds the block limit ${Nl}`);if(e.transient>Kl)throw new Error(`transient mass ${e.transient} exceeds the block limit ${Kl}`)}a(Fl,"assertMinable");var Te=Object.freeze({p2pk:11,tokenLeaderCovenant2Out:5,tokenLeaderCovenant1Out:6,tokenLeaderSigned1Out:16,tokenLeaderSigned2Out:15,tokenLeaderSigned3Out:17,tokenLeaderSignedMerge2:16,tokenLeaderSignedMerge3:19,tokenLeaderBorrow:8,tokenDelegatorCovenant:4,tokenDelegatorSigned:14,curveInit:13,curveBuy:16,curveSell:15,curveSweep:5,curveGraduate:16,poolSwapKasForTokens:14,poolSwapTokensForKas:13,poolSweep:3});var ky=Object.freeze({...Te,curveInit:14,curveBuy:16,curveSell:15,curveSweep:5,curveGraduate:17,poolSwapKasForTokens:14,poolSwapTokensForKas:13,poolSweep:3});var Ni=Object.freeze({...ky,curveGraduate:27,poolSwapKasForTokens:20,poolSwapTokensForKas:19,poolSweep:9,poolBindLp:14,poolAddLiquidity:30,poolRemoveLiquidity:30});var Ec=Object.freeze({...Ni,curveGraduate:29,poolSwapKasForTokens:23,poolSwapTokensForKas:23,poolSweep:10,poolBindLp:15,poolAddLiquidity:31,poolRemoveLiquidity:31});var I3=Object.freeze({vaultBuy:19,depositWithVault:1,depositMerge:1,splitterSplit:1,splitterMerge:1});var va=Object.freeze({factoryCreate:13,factoryCreateRest:17,leaderCreate1Out:13,leaderCreate2Out:15,leaderCreateDelegated:21,delegatorCreate:14,lockClaim:15,lockClaimFinal:9,cellClaim:5,cellClaimFinal:3,lockExtend:21,cellExtend:3,p2pk:11});function jl(e){if(e==="v1")return Ni;throw new Error(`no budget table for contract version ${String(e)}`)}a(jl,"budgetsFor");var vy=20;var y0=30;var xy=31;function wy(e){if(e==="v1")return y0;throw new Error(`no budget ceiling for contract version ${String(e)}`)}a(wy,"budgetCeilingFor");function Vt(e,t){if(t===1&&e===3)return Te.tokenLeaderSignedMerge3;if(t===1&&e===2)return Te.tokenLeaderSignedMerge2;if(t===1)return Te.tokenLeaderSigned1Out;if(t===2)return Te.tokenLeaderSigned2Out;if(t===3)return Te.tokenLeaderSigned3Out;throw new Error(`no budget for a signed leader with ${t} outputs`)}a(Vt,"signedLeaderBudget");function Ki(e){return Math.ceil(Math.max(0,e-9999)/1e4)}a(Ki,"budgetCovering");function ro(e){return(e-9999)%1e4===0?(e-9999)/1e4:void 0}a(ro,"budgetFromLimit");var L3=Object.freeze({orderFill:1,orderCancel:1,orderRefund:1,potLeader:8});var Dl="2.1.0";var xa=class extends Error{static{a(this,"SdkNotInstalled")}constructor(){super("the Kaspa SDK is not installed: import the package through its Node entry, or await initWeb() first");this.name="SdkNotInstalled"}};var oo;var ao;function Sy(e){const t=typeof e.version==="function"?e.version():void 0;if(t!==Dl)throw new Error(`SDK reports version ${JSON.stringify(t)}, expected ${Dl}`);oo=e}a(Sy,"installSdk");function U3(e){ao=e}a(U3,"registerSdkLoader");function Ay(){return oo!==void 0||ao!==void 0}a(Ay,"sdkAvailable");function N3(e,t){const n=oo;const r=ao;oo=e;ao=void 0;try{return t()}finally{oo=n;ao=r}}a(N3,"withSdk");function zn(){if(oo===void 0){if(ao===void 0)throw new xa;Sy(ao())}return oo}a(zn,"sdk");var gn="testnet-10";function io(e,t){if(e===null||e===void 0)throw new Error(`${t} is missing`);return e}a(io,"required");var hn=0;var he=1000000n;var Aa=Ve;var Sa=Object.freeze({bindLp:["byte[]","byte[]"],addLiquidity:["int",Kn],removeLiquidity:["int",Kn]});function Oc(e){return e.length===37&&e[0]===0&&e[1]===0&&e[2]===170&&e[3]===32&&e[36]===135}a(Oc,"isP2shSpk37");function k0(e,t,n){const r=Gn(t);const o=r.contracts[e];if(!o)throw new Error(`${t}: no contract ${e}`);const i=Uint8Array.from(o.compiled.bytecode);const{offset:s,len:c}=o.compiled.state_span;const d=i.subarray(0,s);const u=i.subarray(s+c);const l=tt(d,u);const f=h(Uint8Array.from(o.compiled.template_hash));if(l!==f)throw new Error(`${t}: recomputed template hash ${l} != artifact ${f}`);const b={};for(const[g,m]of Object.entries(o.entries))b[g.replace("__covenant_entrypoint_auth_","")]=m.dispatch_tag.toLowerCase();return{name:e,version:n,prefix:d,suffix:u,stateOffset:s,stateLength:c,templateHash:l,tags:b,bytecode:i,artifactPath:t}}a(k0,"templateFromArtifact");function Zt(e,t){if(e.kind!=="int")throw new Error(`ctor[${t}] is ${e.kind}, expected int`);return BigInt(e.value)}a(Zt,"ctorInt");function wa(e,t,n){if(e.kind!=="bytes"||e.value.length!==n)throw new Error(`ctor[${t}] is not byte[${n}]`);return Uint8Array.from(e.value)}a(wa,"ctorBytes");function _c(e,t=Mi()){const n=t.version;const r=t.revision;const o=a0(e,n,r);const i={...k0("Curve",o0(e,n,r),n),...r===void 0?{}:{revision:r}};const s=eo().readText(o);const c=JSON.parse(s);const d=19;if(c.length!==d)throw new Error(`${o}: expected ${d} constructor values, got ${c.length}`);const u={p0:Zt(c[4],4),k:Zt(c[5],5),lot:Zt(c[6],6),curveLots:Zt(c[7],7),gradReserve:Zt(c[8],8),feeBps:Zt(c[9],9),treasurySpk:v0(c[10],10,n),creatorSpk:wa(c[11],11,bt),tokenH:h(wa(c[12],12,32)),tokenPrefixLen:Number(Zt(c[13],13)),tokenSuffixLen:Number(Zt(c[14],14)),poolH:h(wa(c[15],15,32)),tokenCellKas:Zt(c[16],16),openWindowLots:Zt(c[17],17),openWindowMaxLots:Zt(c[18],18)};if(u.tokenH!==_e)throw new Error(`preset ${e}: tokenH ${u.tokenH} is not the reference template`);if(u.poolH!==t.templateHash)throw new Error(`preset ${e}: poolH ${u.poolH} != pool artifact ${t.templateHash}`);if(u.tokenPrefixLen!==1||u.tokenSuffixLen!==3885)throw new Error(`preset ${e}: token template lengths ${u.tokenPrefixLen}/${u.tokenSuffixLen}`);if(!dt(u.creatorSpk))throw new Error(`preset ${e}: creatorSpk is not a version-0 P2PK script`);if(!Gl(n,u.treasurySpk)){throw new Error(`preset ${e}: treasurySpk is not a version-0 P2PK script or the P2SH of a fee splitter`)}else if(t.treasurySpk!==void 0&&!$(u.treasurySpk,t.treasurySpk)){throw new Error(`preset ${e}: treasurySpk is not the v1 pool's treasury script`)}const l=Xo(i.bytecode.subarray(i.stateOffset,i.stateOffset+i.stateLength));if(!$(l.tokenCovId,Ve)||l.lotsSold!==0n||l.feeAccrued!==0n||l.phase!==Kr){throw new Error(`preset ${e}: constructor state is not the uninitialised curve`)}for(const f of["init","buy","sell","sweep","graduate"])if(!i.tags[f])throw new Error(`preset ${e}: artifact lacks entry ${f}`);return{...i,version:n,name:"Curve",preset:e,params:u,ctorPath:o,ctorSha256:ma(s)}}a(_c,"loadCurveTemplate");function Ty(e,t){return _c(t,Mi(e))}a(Ty,"loadCurveTemplateOf");function Mi(e=nt,t){const n=_i(e);const r=Cy(n,i0(n,t),s0(n,t));return t===void 0?r:{...r,revision:t}}a(Mi,"loadPoolTemplate");function Cy(e,t,n){const r=k0("Pool",t,e);const o=Gn(n);const i=9;if(o.length!==i)throw new Error(`${n}: expected ${i} constructor values, got ${o.length}`);const s=i-2;const c=h(wa(o[s],s,32));if(c!==_e)throw new Error(`${n}: tokenTemplateHash ${c} is not the reference template`);if(r.stateLength!==Md(e))throw new Error(`${n}: state span length ${r.stateLength}, expected ${Md(e)}`);const d=ze(e);const u=d?["swapKasForTokens","swapTokensForKas","sweep",...Object.keys(Sa)]:["swapKasForTokens","swapTokensForKas","sweep"];for(const f of u)if(!r.tags[f])throw new Error(`pool artifact lacks entry ${f}`);if(d){const f=jd(r.bytecode.subarray(r.stateOffset,r.stateOffset+r.stateLength));if(zo(f)!=="v3"||!$(f.lpCovId,Aa)||f.lpShares!==Nf){throw new Error(`${n}: constructor state is not an unbound 139-byte pool at the graduation share count`)}}const l=v0(o[i-1],i-1,e);if(!Gl(e,l))throw new Error(`${n}: treasurySpk is not a version-0 P2PK script or the P2SH of a fee splitter`);return{...r,name:"Pool",tokenH:c,treasurySpk:l}}a(Cy,"poolTemplateFrom");function v0(e,t,n){if(n==="v1"&&e.kind==="bytes"&&e.value.length===37)return wa(e,t,37);return wa(e,t,bt)}a(v0,"treasuryCtorBytes");function Gl(e,t){return dt(t)||e==="v1"&&Oc(t)}a(Gl,"isTreasurySpkOf");function Ta(){const e=Gn(Sc);const t=e.contracts.KCC20;const n=L(t.bytecode_hex);if(n.length!==4031)throw new Error(`reference bytecode is ${n.length} B, expected 4031`);if(t.state_span.offset!==1||t.state_span.len!==145)throw new Error("reference state span is not (1, 145)");const r=Jt(n,1,145);if(r!==_e||t.template_hash!==r)throw new Error(`reference template hash ${r} != ${_e}`);return{templateHash:r,prefix:n.subarray(0,1),suffix:n.subarray(146),bytecode:n}}a(Ta,"loadTokenTemplate");function Je(e,t,n=Ic()){const r=_(e.prefix,Z(L(e.templateHash)),Mt.encode(t),e.suffix);if(r.length!==4031)throw new Error(`token program is ${r.length} B`);const o=n.identifyTemplate(r);if(o.templateHash!==e.templateHash)throw new Error(`token program identifies as ${o.templateHash}`);return r}a(Je,"tokenProgram");function Ca(e,t){const n=_(e.prefix,Jo(t),e.suffix);const r=Jt(n,e.stateOffset,e.stateLength);if(r!==e.templateHash)throw new Error(`curve program hashes to ${r}, expected ${e.templateHash}`);return n}a(Ca,"curveProgram");function Fi(e,t){if(zo(t)!==Wo(e.version))throw new Error(`a ${zo(t)} pool state does not fit the ${e.version} pool template`);const n=_(e.prefix,Fd(t),e.suffix);const r=Jt(n,e.stateOffset,e.stateLength);if(r!==e.templateHash)throw new Error(`pool program hashes to ${r}, expected ${e.templateHash}`);return n}a(Fi,"poolProgram");function Ce(e,t,n=Ve){return et({amount:e,owner:L(t),ownerScheme:mt,borrowScheme:hn,extensionCommitment:n})}a(Ce,"covenantOwnedToken");function ql(e,t,n=Ve){if(t.length!==32)throw new Error("a script owner is the 32-byte hash of the script");return et({amount:e,owner:t,ownerScheme:3,borrowScheme:hn,extensionCommitment:n})}a(ql,"scriptOwnedToken");function mr(e){return Y(e).subarray(2,34)}a(mr,"scriptHashOf");function Jn(e,t,{borrowScheme:n=hn,borrowGuard:r,extensionCommitment:o=Ve}={}){if(t.length!==32)throw new Error("user token owner must be a 32-byte x-only public key");return et({amount:e,owner:t,ownerScheme:Bs,borrowScheme:n,...r?{borrowGuard:r}:{},extensionCommitment:o})}a(Jn,"userToken");var Py=Object.freeze(["v1-2026-10-18-final","v1-kasseal-mainnet-tn10","v1-kasseal-mainnet","v1-kasseal-mainnet-2-tn10","v1-kasseal-mainnet-2","v1-kasseal-mainnet-3-tn10","v1-kasseal-mainnet-3"]);function x0(e){return e.version==="v1"&&(e.revision===void 0||Py.includes(e.revision))}a(x0,"lpBoundToPool");function ji(e,t){return x0(e)?L(t):new Uint8Array(32)}a(ji,"lpExtensionOf");function en(e,t){return e.owner.schemeByte===mt&&h(e.owner.identifier)===t}a(en,"isCovenantOwnedBy");var h0;function Ic(){h0??=vc();return h0}a(Ic,"defaultRegistry");function Hl(e){return{templateHash:e.templateHash,layoutId:e.name==="Curve"?"kasseal-curve-53":`kasseal-pool-${e.stateLength}`,stateOffset:e.stateOffset,stateLength:e.stateLength,prefixHex:h(e.prefix),schemes:new Map,recognisedOnly:`${e.name} state is decoded by @kasseal/txbuilder program.ts (${e.name==="Curve"?"decodeCurveState":"decodePoolState"})`,provenance:`${e.artifactPath} compiled.state_span (${e.stateOffset}, ${e.stateLength}); template hash recomputed on load`}}a(Hl,"templateDescriptor");var Bi=class{static{a(this,"CellDecoder")}registry;curve;pool;token;constructor(t,n,r=Ta()){this.curve=t;this.pool=n;this.token=r;this.registry=vc().registerTemplate(Hl(t)).registerTemplate(Hl(n))}decode(t){const n=this.registry.identifyTemplate(t);if(n.templateHash===ic.templateHash){const o=this.registry.assertRoundTrip(t,n.templateHash);return{kind:"token",state:o,templateHash:n.templateHash,stateHex:h(Mt.encode(o))}}const r=t.subarray(n.stateOffset,n.stateOffset+n.stateLength);if(n.templateHash===this.curve.templateHash)return{kind:"curve",state:Xo(r),templateHash:n.templateHash,stateHex:h(r)};if(n.templateHash===this.pool.templateHash)return{kind:"pool",state:jd(r),templateHash:n.templateHash,stateHex:h(r)};throw new Error(`program identifies as unknown template ${n.templateHash}`)}spk(t){return Y(t)}};var yn=class extends Error{static{a(this,"StateJsonError")}field;constructor(t,n,r){super(`${t} state JSON: ${n} ${r}`);this.name="StateJsonError";this.field=n}};function Wl(e,t){if(typeof e!=="object"||e===null||Array.isArray(e))throw new yn(t,"(root)","is not an object");return e}a(Wl,"jsonRecord");function so(e,t,n){const r=e[t];if(typeof r==="string"&&/^-?[0-9]+$/.test(r))return BigInt(r);if(typeof r==="number"&&Number.isSafeInteger(r))return BigInt(r);throw new yn(n,t,r===void 0?"is missing":"is not a decimal integer")}a(so,"jsonBig");function Vl(e,t,n){const r=e[t];const o=typeof r==="number"?r:typeof r==="string"&&/^[0-9]+$/.test(r)?Number(r):NaN;if(!Number.isInteger(o)||o<0||o>255)throw new yn(n,t,r===void 0?"is missing":"is not a byte");return o}a(Vl,"jsonByte");function co(e,t,n,r){const o=e[t];if(typeof o!=="string"||!/^([0-9a-f]{2})*$/.test(o))throw new yn(n,t,o===void 0?"is missing":"is not lowercase hex");if(r!==void 0&&o.length!==r*2)throw new yn(n,t,`is not ${r} bytes`);return L(o)}a(co,"jsonHex");function Pa(e){const t=Ae(e);return{amount:t.amount.toString(),owner:h(t.owner),ownerScheme:t.ownerScheme,borrowScheme:t.borrowScheme,borrowGuard:h(t.borrowGuard),extensionCommitment:h(t.extensionCommitment)}}a(Pa,"tokenStateToJson");function Ea(e){const t="token";const n=Wl(e,t);return et({amount:so(n,"amount",t),owner:co(n,"owner",t),ownerScheme:Vl(n,"ownerScheme",t),borrowScheme:Vl(n,"borrowScheme",t),borrowGuard:co(n,"borrowGuard",t),extensionCommitment:co(n,"extensionCommitment",t)})}a(Ea,"tokenStateFromJson");function Lc(e){return{tokenCovId:h(e.tokenCovId),lotsSold:e.lotsSold.toString(),feeAccrued:e.feeAccrued.toString(),phase:e.phase}}a(Lc,"curveStateToJson");function zl(e){const t="curve";const n=Wl(e,t);return{tokenCovId:co(n,"tokenCovId",t,32),lotsSold:so(n,"lotsSold",t),feeAccrued:so(n,"feeAccrued",t),phase:Vl(n,"phase",t)}}a(zl,"curveStateFromJson");function $c(e){const t={tokenCovId:h(e.tokenCovId),kasScaled:e.kasScaled.toString(),tokenReserve:e.tokenReserve.toString(),lpShares:e.lpShares.toString()};return{...t,lpCovId:h(io(e.lpCovId,"pool state: lpCovId of a 139-byte state")),feeAccruedScaled:e.feeAccruedScaled.toString(),creatorSpk:h(io(e.creatorSpk,"pool state: creatorSpk of a 139-byte state"))}}a($c,"poolStateToJson");function Jl(e){const t="pool";const n=Wl(e,t);const r={tokenCovId:co(n,"tokenCovId",t,32),kasScaled:so(n,"kasScaled",t),tokenReserve:so(n,"tokenReserve",t),lpShares:so(n,"lpShares",t),feeAccruedScaled:so(n,"feeAccruedScaled",t)};return{...r,lpCovId:co(n,"lpCovId",t,32),creatorSpk:co(n,"creatorSpk",t,bt)}}a(Jl,"poolStateFromJson");function w0(e){if(e.name!=="Pool"||!ze(e.version))return dn[e.name];if(Xn(e))return{...dn.Pool,...Sa,swapKasForTokens:hi,swapTokensForKas:ki};const t=e.version==="v1"&&e.tags["swapKasForTokens"]===Bn;return{...dn.Pool,...Sa,...t?{swapKasForTokens:yi}:{}}}a(w0,"entrySignaturesOf");function Xn(e){if(e.name!=="Pool"||e.version!=="v1")return false;const t=e.tags["swapKasForTokens"]===Mn;const n=e.tags["swapTokensForKas"]===Fn;if(t!==n)throw new Error(`pool template mixes a ${t?"composable":"exact-count"} buy with a ${n?"composable":"exact-count"} sell`);return t}a(Xn,"isComposablePool");function Ey(e){const t=w0(e);for(const n of Object.keys(e.tags))if(t[n]===void 0)throw new Error(`${e.name}.${n}: artifact entry has no declared signature`);for(const[n,r]of Object.entries(t)){const o=xt(n,r);if(e.tags[n]!==o)throw new Error(`${e.name}.${n}: artifact tag ${e.tags[n]} != derived ${o}`)}}a(Ey,"assertEntryTags");var Le=65;var lo=new Uint8Array(Le);var Di=0;var Oy=oa;var Ge=me;var kn=Be;var Xl=nc;var Yl=a(e=>_(Uint8Array.of(4),L(e)),"tagPush");var S0=qr;function Hi(e,t,n){const r=Ws(t,n);const o=_(r.bytes,Ge(e));let i;if(n.length===1+Le&&n[0]===Di){const s=r.groupedFieldPushes.reduce((c,d)=>c+d.length,0);i=s+1+1;if(h(o.subarray(i-2,i))!=="4200")throw new Error("leader witness slot not where expected")}return{bytes:o,signatureOffset:i}}a(Hi,"tokenLeaderSigScript");function Ql(e,t){return Hi(e,t,_(Uint8Array.of(Di),lo))}a(Ql,"tokenLeaderSignedSigScript");function Zl(e,t){return Hi(e,t,Uint8Array.of(Di))}a(Zl,"tokenLeaderCovenantSigScript");function eu(e,t){const n=_(Ge(t),Yl(ta.transferDelegator.tagHex),Ge(e));return{bytes:n,signatureOffset:t.length===Le?1:void 0}}a(eu,"tokenDelegatorSigScript");function tu(e){return eu(e,new Uint8Array(0))}a(tu,"tokenDelegatorCovenantSigScript");function nu(e){return eu(e,lo)}a(nu,"tokenDelegatorSignedSigScript");function A0(e,t,n,r){if(n.length!==e.params.tokenPrefixLen||r.length!==e.params.tokenSuffixLen)throw new Error("init: token template lengths do not match the curve constants");return tn(e,"init",Ft({contract:"curve",entry:"init",tokenPrefix:n,tokenSuffix:r},t))}a(A0,"curveInitSigScript");function ru(e,t,n,r){if(n<=0n)throw new Error("buy: n must be positive");return tn(e,"buy",Ft({contract:"curve",entry:"buy",n,user:r},t))}a(ru,"curveBuySigScript");function ou(e,t,n){if(n<=0n)throw new Error("sell: n must be positive");return tn(e,"sell",Ft({contract:"curve",entry:"sell",n},t))}a(ou,"curveSellSigScript");function au(e,t){return tn(e,"sweep",Ft({contract:"curve",entry:"sweep"},t))}a(au,"curveSweepSigScript");function T0(e,t,n){return tn(e,"graduate",Ft({contract:"curve",entry:"graduate",poolPrefix:n.prefix,poolSuffix:n.suffix},t))}a(T0,"curveGraduateSigScript");function iu(e,t,n,r,o,i=Vi){if(n<=0n)throw new Error("swapKasForTokens: kasInScaled must be positive");if(e.tags["swapKasForTokens"]===Mn){if(o===void 0)throw new Error("swapKasForTokens: this pool takes an on-chain minTokensOut");return tn(e,"swapKasForTokens",Ft({contract:"pool",entry:"swapKasForTokens",kasInScaled:n,minTokensOut:o,...i},t))}const s=e.tags["swapKasForTokens"]===Bn;if(s&&o===void 0)throw new Error("swapKasForTokens: this pool takes an on-chain minTokensOut");const c=s?{contract:"pool",entry:"swapKasForTokens",kasInScaled:n,minTokensOut:o,user:r}:{contract:"pool",entry:"swapKasForTokens",kasInScaled:n,user:r};return tn(e,"swapKasForTokens",Ft(c,t))}a(iu,"poolSwapKasForTokensSigScript");function su(e,t,n,r,o=C0){if(n<=0n)throw new Error("swapTokensForKas: tokensIn must be positive");if(r<0n)throw new Error("swapTokensForKas: minOutScaled must be non-negative");const i=e.tags["swapTokensForKas"]===Fn;return tn(e,"swapTokensForKas",Ft({contract:"pool",entry:"swapTokensForKas",tokensIn:n,minOutScaled:r,...i?o:{}},t))}a(su,"poolSwapTokensForKasSigScript");var Vi=Object.freeze({reserveK:0n,restK:0n});var C0=Object.freeze({reserveK:1n,mergedK:0n});function cu(e,t){return tn(e,"sweep",Ft({contract:"pool",entry:"sweep"},t))}a(cu,"poolSweepSigScript");function du(e,t,n){if(!ze(e.version))throw new Error(`bindLp: the ${e.version} pool has no bindLp entry`);if(n.prefix.length!==1||n.suffix.length!==3885)throw new Error("bindLp: token template lengths are not 1 / 3885");const r=xt("bindLp",Sa["bindLp"]);const o=_(Ge(n.prefix),Ge(n.suffix),Yl(r),Ge(t));return tn(e,"bindLp",o)}a(du,"poolBindLpSigScript");function lu(e,t,n,r){return P0(e,t,"addLiquidity",n,r)}a(lu,"poolAddLiquiditySigScript");function uu(e,t,n,r){return P0(e,t,"removeLiquidity",n,r)}a(uu,"poolRemoveLiquiditySigScript");function P0(e,t,n,r,o){if(!ze(e.version))throw new Error(`${n}: the ${e.version} pool has no ${n} entry`);if(r<=0n)throw new Error(`${n}: shares must be positive`);const i=xt(n,Sa[n]);return tn(e,n,_(kn(r),S0(o),Yl(i),Ge(t)))}a(P0,"poolLiquiditySigScript");function tn(e,t,n){const r=fr(n);const o=h(r[r.length-2].payload);if(e.tags[t]!==o)throw new Error(`${e.name}.${t}: artifact tag ${e.tags[t]} != encoded tag ${o}`);return n}a(tn,"withTemplateTag");function _y(e){return fr(e).map(t=>t.payload)}a(_y,"parsePushes");function Gi(e,t,n){if(n.length!==Le)throw new Error(`signature must be ${Le} bytes, got ${n.length}`);if(t<0||t+Le>e.length)throw new Error("signature slot outside the sigscript");const r=Uint8Array.from(e);r.set(n,t);return r}a(Gi,"spliceSignature");function Oa(e){const t=typeof e==="string"?L(e):e;if(t.length!==66||t[0]!==65)throw new Error(`unexpected P2PK sigscript layout: ${h(t.subarray(0,2))} length ${t.length}`);return t.subarray(1)}a(Oa,"signatureFromP2pkSigScript");var qi=_(Uint8Array.of(65),lo);var j=a(e=>`${e.txid}:${e.index}`,"outpointKey");var E0=0xffffffffn;var Tt=class extends Error{static{a(this,"ResidualBelowMinimum")}residual;minimum;constructor(t,n,r,o){super(`${t}: residual output "${n}" would be ${r} sompi, below its minimum ${o}`);this.name="ResidualBelowMinimum";this.residual=r;this.minimum=o}};var $0=10000000n;function R0(e,t){const n=new Set(e.genesisGroups.flatMap(o=>o.outputs));const r=e.outputs.map((o,i)=>({value:o.value,spkLength:o.spk.length,hasCovenant:o.binding!==void 0||o.cell!==void 0||n.has(i)}));if(e.residual&&t!==void 0&&t>0n){r.push({value:t,spkLength:e.residual.spk.length,hasCovenant:e.residual.binding!==void 0||e.residual.cell!==void 0})}return{inputs:e.inputs.map(o=>({sigScriptLength:o.sigscript.length,computeBudget:o.budget,amount:o.amount,spkLength:o.spk.length,hasCovenant:o.covenantId!==void 0})),outputs:r,payloadLength:e.payload.length}}a(R0,"shapeOf");function fu(e){U0(e);const t=pu(e);const n=e.inputs.reduce((c,d)=>c+d.amount,0n);const r=e.outputs.reduce((c,d)=>c+d.value,0n);let o=0n;let i=0n;let s;for(let c=0;c<10;c++){let d=n-r-o;if(e.residual===void 0){if(d<0n)throw new Error(`${e.name}: inputs ${n} do not cover outputs ${r} + fee ${o}`);i=0n}else if(e.residual.dropBelow!==void 0&&d<e.residual.dropBelow){i=0n;d=0n}else{if(d<e.residual.minimum)throw new Tt(e.name,e.residual.label,d,e.residual.minimum);i=d}s=Wn(R0(e,i));const u=BigInt(s.max)*t+e.feeMargin;if(e.residual===void 0){const l=n-r;if(l<u)throw new Error(`${e.name}: surplus ${l} is below the minimum fee ${u}`);o=l;break}if(i===0n){o=n-r;if(o<u)throw new Error(`${e.name}: residual dropped but the remaining ${o} sompi is below the minimum fee ${u}`);break}if(u===o)break;o=u}if(!s)throw new Error("unreachable");Fl(s);if(o>no(s.minFee))throw new to(e.name,o,s.minFee);for(const c of e.outputs)O0(e.name,c.label,c.value,c.binding!==void 0||c.cell!==void 0);if(i>0n&&e.residual)O0(e.name,e.residual.label,i,e.residual.binding!==void 0||e.residual.cell!==void 0);return{fee:o,residualValue:i,masses:s}}a(fu,"estimate");function pu(e){const t=e.feerate??De;if(t<De)throw new Error(`${e.name}: feerate ${t} is below the node's floor of ${De} sompi per gram`);return Ui(t,e.name)}a(pu,"feerateOf");function O0(e,t,n,r){const o=r?Ri:Ml;if(n<o)throw new Error(`${e}: output "${t}" of ${n} sompi is below the ${r?"covenant":"P2PK"} output floor ${o} (unminable)`)}a(O0,"assertOutputFloor");function uo(e){const t=zn();const{fee:n,residualValue:r,masses:o}=fu(e);const i=e.inputs.map(m=>({previousOutpoint:{transactionId:m.outpoint.txid,index:m.outpoint.index},signatureScript:h(m.sigscript),sequence:Iy(e.name,m),sigOpCount:0,computeBudget:m.budget,utxo:{outpoint:{transactionId:m.outpoint.txid,index:m.outpoint.index},amount:m.amount,scriptPublicKey:new t.ScriptPublicKey(0,h(m.spk)),blockDaaScore:m.daaScore,isCoinbase:false}}));const s=e.outputs.map((m,y)=>({index:y,label:m.label,value:m.value,spk:m.spk,binding:m.binding,cell:m.cell}));if(e.residual&&r>0n){s.push({index:s.length,label:e.residual.label,value:r,spk:e.residual.spk,binding:e.residual.binding,cell:e.residual.cell})}const c=s.map(m=>new t.TransactionOutput(m.value,new t.ScriptPublicKey(0,h(m.spk))));const d=new t.Transaction({version:1,inputs:i,outputs:c,lockTime:U0(e),subnetworkId:Qs,gas:0n,payload:h(e.payload)});if(e.genesisGroups.length>0)d.populateGenesisCovenants(e.genesisGroups.map(m=>new t.GenesisCovenantGroup(m.authorizingInput,[...m.outputs])));const u=d.outputs;s.forEach((m,y)=>{if(m.binding)u[y].covenant=new t.CovenantBinding(m.binding.authorizingInput,new t.Hash(m.binding.covenantId))});d.outputs=u;d.finalize();const l=e.genesisGroups.map(m=>{const y=e.inputs[m.authorizingInput];if(!y)throw new Error(`${e.name}: genesis group names input ${m.authorizingInput}, which does not exist`);const v=We(y.outpoint.txid,y.outpoint.index,m.outputs.map(x=>({index:x,value:s[x].value,scriptVersion:0,script:s[x].spk})));for(const x of m.outputs){const w=d.outputs[x]?.covenant;if(!w||w.covenantId.toString()!==v||w.authorizingInput!==m.authorizingInput){throw new Error(`${e.name}: genesis output ${x} bound to ${w?.covenantId.toString()} (auth ${w?.authorizingInput}), expected ${v} (auth ${m.authorizingInput})`)}}return{group:m,covenantId:v,outpoint:y.outpoint}});const f=s.map(m=>{const y=d.outputs[m.index].covenant;const v=y?{authorizingInput:y.authorizingInput,covenantId:y.covenantId.toString()}:void 0;const x=m.cell&&m.cell.covenantId===void 0&&v?{...m.cell,covenantId:v.covenantId}:m.cell;return{...m,binding:v,cell:x}});const b=gt(qn(d)).txid;if(b!==d.id)throw new Error(`${e.name}: KIP-24 txid ${b} != SDK txid ${d.id}`);const g=e.inputs.flatMap((m,y)=>m.signature?[{index:y,slot:m.signature}]:[]);return{plan:e,tx:d,txid:d.id,fee:n,masses:o,outputs:f,residualValue:r,inputsToSign:g,genesis:l,budgets:e.inputs.map(m=>m.budget)}}a(uo,"assemble");var _0=499999999999n;var I0=500000000000n;var L0=(1n<<63n)-1n;function U0(e){const t=e.lockTime??0n;if(typeof t!=="bigint")throw new Error(`${e.name}: lock time ${String(t)} is not a bigint`);if((e.lockTimeDomain??"daa")==="daa"){if(t<0n||t>_0)throw new Error(`${e.name}: lock time ${String(t)} is not a DAA score in 0..${_0}`);return t}if(e.lockTimeDomain!=="timestamp")throw new Error(`${e.name}: unknown lock time domain ${String(e.lockTimeDomain)}`);if(!e.inputs.some(n=>n.cellKind==="lock"))throw new Error(`${e.name}: a timestamp lock time is allowed for a token-lock claim only (no lock input)`);if(e.inputs.some(n=>n.signature!==void 0))throw new Error(`${e.name}: a timestamp lock time is allowed only in a transaction nobody signs (a lock claim)`);if(t<I0||t>L0)throw new Error(`${e.name}: lock time ${String(t)} is not a timestamp in ${I0}..${L0}`);return t}a(U0,"lockTimeOf");function Iy(e,t){const n=t.sequence??0n;if(typeof n!=="bigint"||n<0n||n>E0)throw new Error(`${e}: input "${t.label}" sequence ${String(n)} is outside 0..${E0}`);return n}a(Iy,"sequenceOf");function Ly(e,t,n){const r=e.inputsToSign.find(c=>c.index===t);if(!r)throw new Error(`input ${t} has no signature slot`);const o=e.tx.inputs;const i=o[t].signatureScript??"";const s=Gi(Wi(i),r.slot.offset,n);o[t].signatureScript=h(s);e.tx.inputs=o}a(Ly,"applySignature");function ux(e,t){const n=zn();const r=[];for(const{index:o,slot:i}of e.inputsToSign){const s=t(i,o);if(!s)continue;Ly(e,o,Oa(n.createInputSignature(e.tx,o,s,n.SighashType.All)));r.push(o)}if(qn(e.tx).inputs.length!==e.plan.inputs.length)throw new Error("input count changed while signing");if(e.tx.id!==e.txid)throw new Error(`txid changed while signing: ${e.tx.id} != ${e.txid}`);return r}a(ux,"signWithKeys");function fx(e){const t=e.tx.inputs;return e.inputsToSign.every(({index:n,slot:r})=>{const o=Wi(t[n].signatureScript??"");return o.subarray(r.offset,r.offset+Le).some(i=>i!==0)})}a(fx,"isFullySigned");function N0(e,t,n){const r=e.tx.inputs;if(!r[t])throw new Error(`no input ${t}`);r[t].computeBudget=n;e.tx.inputs=r;const o=e.budgets.map((s,c)=>c===t?n:s);const i=Wn(R0({...e.plan,inputs:e.plan.inputs.map((s,c)=>({...s,budget:o[c]}))},e.residualValue));return{...e,budgets:o,masses:i}}a(N0,"patchBudget");function px(e,t){if(t.length!==e.inputs.length)throw new Error("budgets length mismatch");return{...e,inputs:e.inputs.map((n,r)=>({...n,budget:t[r]}))}}a(px,"withBudgets");function bx(e){return qn(e.tx)}a(bx,"plainTx");function Q(e){return Wi(zn().payToAddressScript(e).script)}a(Q,"p2pkScript");function K0(e,t=0){const n=new Uint8Array(2+e.length);n[0]=t>>8&255;n[1]=t&255;n.set(e,2);return n}a(K0,"versionedSpk");function B0(e){if(e.length<2)throw new Error("versioned spk too short");return{version:e[0]<<8|e[1],script:e.subarray(2)}}a(B0,"scriptOfVersionedSpk");function Wi(e){const t=new Uint8Array(e.length/2);for(let n=0;n<t.length;n++)t[n]=parseInt(e.slice(n*2,n*2+2),16);return t}a(Wi,"hexToBytes");function Rc(e,t){const n=zn();const r=n.addressFromScriptPublicKey(new n.ScriptPublicKey(0,h(e)),t);if(!r)throw new Error("script public key has no address form");return r.toString()}a(Rc,"addressOfSpk");function M0(e,t,n,r){return{label:t,outpoint:e.outpoint,amount:e.amount,spk:e.spk,daaScore:e.daaScore,covenantId:void 0,budget:n,sigscript:r,signature:{kind:"p2pk",offset:1,signer:e.address,sighashType:1}}}a(M0,"fundingInput");var Ct=1000000n;var F0=30n;var $y=20n;var j0=10n;var mu=5n;var gu=1000000n;var Nc=1000n;var vn=1000000000n;var fo=9000000000000n;var bu=7000000000n;var Gt=1200000000n;var _a=10n;function Ry(e){H(e,"sompi");if(e<0n)throw new ye(`KAS leg must be non-negative, got ${e}`);if(e%Ct!==0n)throw new ye(`KAS leg ${e} sompi is not a multiple of ${Ct} (0.01 KAS)`);return e/Ct}a(Ry,"toKasScaled");function yu(e){H(e,"kasScaled");if(e<0n)throw new ye(`kasScaled must be non-negative, got ${e}`);return ie(e,Ct,"kasScaled * 1e6")}a(yu,"fromKasScaled");function nn(e){if(e===null||typeof e!=="object")throw new ye("pool must be an object");for(const t of["kasScaled","tokenReserve","feeAccruedScaled","dust"]){H(e[t],t);if(e[t]<0n)throw new ye(`${t} must be non-negative, got ${e[t]}`)}if(e.kasScaled===0n||e.tokenReserve===0n)throw new ye("pool reserves must both be positive");if(e.kasScaled+e.feeAccruedScaled>fo){throw new ye(`kasScaled + feeAccruedScaled ${e.kasScaled+e.feeAccruedScaled} exceeds KAS_VALUE_MAX ${fo}`)}if(e.tokenReserve>Gt)throw new ye(`tokenReserve ${e.tokenReserve} exceeds TOKEN_RESERVE_MAX ${Gt}`);if(e.dust>=Ct)throw new ye(`dust ${e.dust} is not below ${Ct}`);Uc(e)}a(nn,"validatePool");function po(e){nn(e);return Ie(ie(Ie(e.kasScaled,e.feeAccruedScaled,"kas + accrued"),Ct,"(kas + accrued) * 1e6"),e.dust,"value + dust")}a(po,"poolCellValue");function Uc(e){return e.kasScaled*e.tokenReserve}a(Uc,"invariant");function zi(e,t){H(e,"escrowSompi");if(e<0n)throw new ye(`escrow must be non-negative, got ${e}`);const n={kasScaled:e/Ct,tokenReserve:t,feeAccruedScaled:0n,dust:e%Ct};nn(n);return n}a(zi,"openPool");function Ji(e,t=Nc){nn(e);H(t,"sweepMinScaled");if(e.feeAccruedScaled<t)throw new ye(`accrual ${e.feeAccruedScaled} is below the sweep threshold ${t}`);const n=Ie(yu(e.feeAccruedScaled),e.dust,"accrued * 1e6 + dust");return{pool:{...e,feeAccruedScaled:0n,dust:0n},payout:n}}a(Ji,"sweepPool");function hu(e,t){H(e,"payout");if(e<0n)throw new ye(`payout must be non-negative, got ${e}`);if(t==="v2"){const n=e/2n;return{treasury:n,creator:e-n}}throw new ye(`unknown fee model version ${String(t)}`)}a(hu,"poolSweepSplit");function D0(e,t="floor"){const n=ln(ie(e,Dt-F0,"gross * (10000 - 30)"),Dt);const r=ie(e,j0,"gross * 10");const o=ln(t==="nearest"?r+Dt/2n:r,Dt);const i=e-n;return{net:n,fee:{total:i,reserve:i-o,platform:o}}}a(D0,"haircut");function H0(e,t,n){const r=n==="capped"?ie(e.kasScaled,e.tokenReserve,"kasScaled * tokenReserve"):Uc(e);const o=n==="capped"?ie(t.kasScaled,t.tokenReserve,"kasScaled' * tokenReserve'"):Uc(t);if(o<r)throw new ye(`invariant violated: ${o} < ${r}`)}a(H0,"assertNonDecreasing");function Xi(e,t,n="uncapped",r="floor"){nn(e);H(t,"kasInScaled");if(t<=0n)throw new ee(`kasInScaled must be positive, got ${t}`);if(n==="capped"&&t>vn)throw new ye(`KAS leg ${t} (scaled) exceeds KAS_SCALED_MAX ${vn}`);if(n==="uncapped"&&t>bu)throw new ye(`KAS leg ${t} (scaled) exceeds KAS_IN_MAX ${bu}`);const{net:o,fee:i}=D0(t,r);const s=Ie(e.kasScaled,o,"kas + net");const c=ln(ie(e.tokenReserve,o,"tok * net"),s);if(c<=0n)throw new ye(`${t} scaled KAS buys no whole token at this depth`);const d={kasScaled:St(Ie(e.kasScaled,t,"kas + in"),i.platform,"kas + in - platform"),tokenReserve:St(e.tokenReserve,c,"tok - out"),feeAccruedScaled:Ie(e.feeAccruedScaled,i.platform,"accrued + platform"),dust:e.dust};nn(d);H0(e,d,n);return{pool:d,tokenOut:c,fee:i}}a(Xi,"swapKasForTokens");function bo(e,t,n="uncapped",r="floor"){nn(e);H(t,"tokenIn");if(t<=0n)throw new ee(`tokenIn must be positive, got ${t}`);if(t>Gt)throw new ye(`token leg ${t} exceeds TOKEN_RESERVE_MAX ${Gt}`);const o=Ie(e.tokenReserve,t,"tok + in");const i=n==="capped"?ln(ie(e.kasScaled,t,"kas * in"),o):e.kasScaled*t/o;const{net:s,fee:c}=D0(i,r);if(s<=0n)throw new Xr(`${t} tokens release no scaled KAS at this depth`);if(s<_a){throw new Xr(`net payout ${s} scaled is below the pool's 0.1 KAS minimum (PAYOUT_MIN ${_a})`)}const d={kasScaled:St(St(e.kasScaled,s,"kas - net"),c.platform,"kas - net - platform"),tokenReserve:o,feeAccruedScaled:Ie(e.feeAccruedScaled,c.platform,"accrued + platform"),dust:e.dust};nn(d);H0(e,d,n);return{pool:d,kasOutScaled:s,fee:c}}a(bo,"swapTokensForKas");function Uy(e,t){nn(e);H(t,"lotSize");if(t<=0n)throw new ee(`lotSize must be positive, got ${t}`);const n=yu(e.kasScaled);const r=n*t;if(r>cc*e.tokenReserve)throw new ye("spot price is not representable");return r/e.tokenReserve}a(Uy,"spotPricePerLot");var V0=lt/10n;var G0=10000000n;var ku=lt;var Kc=Object.freeze({v2:50n});function Ex(e){At(e);const t=Ti(e.curve);const n=lc(e.curve);const r=ie(e.gradLots,e.lotSize,"GRAD_RESERVE");const o=ie(n,e.gradLots,"last * GRAD_LOTS");if(o===0n)throw new J("the last lot is free (p0 = k = 0): no graduation premium is defined");const i=(t-o)*Dt/o;return{raise:t,lastLotPrice:n,reserveTokens:r,openPricePerLot:{numerator:t,denominator:e.gradLots},openPricePerLotFloor:t/e.gradLots,premiumBps:i,finalLotFee:ml(e.curve)}}a(Ex,"graduationEconomics");function q0(e){At(e);const t=Ny(e);if(t<V0){throw new J(`final-tranche fee ${t} sompi (the final ${G0} tokens) is below the ${V0} sompi (0.1 KAS) minimum`)}}a(q0,"checkFactoryParams");function Ny(e){At(e);const t=G0/e.lotSize;return gl(e.curve,t<1n?1n:t>e.curve.curveLots?e.curve.curveLots:t)}a(Ny,"finalTrancheFee");function W0(e,t){H(e,"amount");H(t,"treasurySharePct");if(e<0n)throw new J(`amount must be non-negative, got ${e}`);if(t<0n||t>100n)throw new J(`treasurySharePct ${t} is outside [0, 100]`);const n=e/100n;const r=e%100n;const o=ie(n,t,"q * pct")+r*t/100n;return{treasury:o,creator:e-o}}a(W0,"feeSplit");function z0(e,t){const n=Kc[t];if(n===void 0)throw new J(`unknown fee model version ${String(t)}`);return W0(e,n)}a(z0,"curveFeeSplit");function Ox(e,t="v2"){At(e);const n=e.curve.feeBps*(100n-e.treasurySharePct);if(n%100n!==0n)throw new J(`the creator's curve share ${n}/100 bps is not a whole number of basis points`);if(Kc[t]===void 0)throw new J(`unknown fee model version ${String(t)}`);return{curveBps:n/100n,poolBps:mu}}a(Ox,"creatorEarnings");function J0(e,t,n){At(e);H(t,"lotsSold");H(n,"feeAccrued");if(t<0n||t>e.curve.curveLots)throw new J(`lotsSold ${t} is outside [0, ${e.curve.curveLots}]`);if(n<0n)throw new J(`feeAccrued must be non-negative, got ${n}`);return t<e.curve.curveLots&&n>=e.sweepMinSompi}a(J0,"canSweep");function X0(e,t,n){At(e);H(t,"curveValue");H(n,"feeAccrued");if(n<0n)throw new J(`feeAccrued must be non-negative, got ${n}`);if(t<n)throw new J(`curve value ${t} is below the accrued fees ${n}`);const r=St(t,n,"curveValue - feeAccrued");if(n>=ku){return{...W0(n,e.treasurySharePct),pooled:0n,escrow:r}}return{treasury:0n,creator:0n,pooled:n,escrow:t}}a(X0,"graduationPayout");var ut=gu;var Ia=1000000000n;var vu=Ia-ut;var xn=_a;var Ky=100n;var By=20n;var Y0=5n*lt;var Q0=5n*lt/2n;function La(e,t,n,r){return r==="capped"?ie(e,t,n):e*t}a(La,"prod");function Z0(e,t){return t==="capped"?vn:fo-e}a(Z0,"kasMax");function $e(e,t="capped"){if(e===null||typeof e!=="object")throw new jt("pool must be an object");for(const n of["kasScaled","tokenReserve","feeAccruedScaled"])H(e[n],n);H(e.lpShares,"lpShares");if(e.lpShares<ut)throw new jt(`lpShares ${e.lpShares} is below the locked floor ${ut}`);if(e.lpShares>Ia)throw new jt(`lpShares ${e.lpShares} exceeds SHARES_MAX ${Ia}`);if(t==="capped"){if(e.kasScaled>vn)throw new jt(`kasScaled ${e.kasScaled} exceeds KAS_SCALED_MAX ${vn}`);if(e.feeAccruedScaled>vn)throw new jt(`feeAccruedScaled ${e.feeAccruedScaled} exceeds KAS_SCALED_MAX ${vn}`)}else if(e.kasScaled+e.feeAccruedScaled>fo){throw new jt(`kasScaled + feeAccruedScaled = ${e.kasScaled+e.feeAccruedScaled} exceeds KAS_VALUE_MAX ${fo}`)}if(e.tokenReserve>Gt)throw new jt(`tokenReserve ${e.tokenReserve} exceeds TOKEN_RESERVE_MAX ${Gt}`);nn(e)}a($e,"validateLpPool");function Nx(e,t,n="capped"){const r={...zi(e,t),lpShares:ut};$e(r,n);return r}a(Nx,"openLpPool");function My(e,t="capped"){$e(e,t);return e.lpShares-ut}a(My,"lpIssued");function Yi(e,t="capped"){return vu-My(e,t)}a(Yi,"lpInventory");function Kx(e,t,n="capped"){H(t,"inventoryAmount");const r=Yi(e,n);if(t!==r){throw new fa(`L inventory ${t} != LP_SUPPLY - issued = ${r} (lpShares ${e.lpShares})`)}}a(Kx,"checkLpInventory");function e1(e,t,n){const r=La(t.kasScaled,e.lpShares,"kas' * S",n);const o=La(e.kasScaled,t.lpShares,"kas * S'",n);if(r<o)throw new Hn(`KAS value per share would decrease: ${r} < ${o}`);const i=ie(t.tokenReserve,e.lpShares,"tok' * S");const s=ie(e.tokenReserve,t.lpShares,"tok * S'");if(i<s)throw new Hn(`token value per share would decrease: ${i} < ${s}`)}a(e1,"requireValuePerShareNonDecreasing");function t1(e){H(e,"shares");if(e<1n)throw new da(`shares must be at least 1, got ${e}`)}a(t1,"assertShares");function n1(e,t,n="capped"){$e(t,n);t1(e);const r=Ie(t.lpShares,e,"S + shares");if(r>Ia)throw new la(`S + shares = ${r} exceeds SHARES_MAX ${Ia}`);const o=Vn(La(e,t.kasScaled,"shares * kasScaled",n),t.lpShares);const i=Vn(ie(e,t.tokenReserve,"shares * tokenReserve"),t.lpShares);if(n==="uncapped"&&o<=xn){throw new Zr(`KAS leg ${o} (scaled) is not above PAYOUT_MIN ${xn} (the v1 minimum deposit)`)}const s=Ie(t.kasScaled,o,"kas + dKas");const c=Z0(t.feeAccruedScaled,n);if(s>c)throw new Yr(`kasScaled would be ${s}, above ${n==="capped"?"KAS_SCALED_MAX":"KAS_VALUE_MAX - accrual"} ${c}`);const d=Ie(t.tokenReserve,i,"tok + dTok");if(d>Gt)throw new Yr(`tokenReserve would be ${d}, above TOKEN_RESERVE_MAX ${Gt}`);const u={kasScaled:s,tokenReserve:d,lpShares:r,feeAccruedScaled:t.feeAccruedScaled,dust:t.dust};e1(t,u,n);$e(u,n);return{dKasScaled:o,dTok:i,pool:u}}a(n1,"lpDeposit");function r1(e,t,n="capped"){$e(t,n);t1(e);const r=t.lpShares-ut;if(e>r)throw new Qr(`shares ${e} exceeds the issued ${r}: the locked ${ut} cannot be withdrawn`);const o=ln(La(e,t.kasScaled,"shares * kasScaled",n),t.lpShares);if(o<xn){throw new Zr(`KAS leg ${o} (scaled) is below PAYOUT_MIN ${xn} (0.1 KAS)`)}const i=ln(ie(e,t.tokenReserve,"shares * tokenReserve"),t.lpShares);if(i<1n)throw new ua(`${e} shares release no whole token at this depth`);const s=St(t.kasScaled,o,"kas - dKas");if(s<=0n)throw new Hn(`KAS reserve would be ${s}`);const c=St(t.tokenReserve,i,"tok - dTok");if(c<=0n)throw new Hn(`token reserve would be ${c}`);const d={kasScaled:s,tokenReserve:c,lpShares:St(t.lpShares,e,"S - shares"),feeAccruedScaled:t.feeAccruedScaled,dust:t.dust};e1(t,d,n);$e(d,n);return{dKasScaled:o,dTok:i,pool:d}}a(r1,"lpWithdraw");function Bx(e,t,n="capped",r="floor"){$e(e,n);const o=Xi(e,t,n,r);const i={...o.pool,lpShares:e.lpShares};$e(i,n);return{...o,pool:i}}a(Bx,"lpSwapKasForTokens");function Mx(e,t,n="capped",r="floor"){$e(e,n);const o=bo(e,t,n,r);const i={...o.pool,lpShares:e.lpShares};$e(i,n);return{...o,pool:i}}a(Mx,"lpSwapTokensForKas");function Fx(e,t=Nc,n="capped"){$e(e,n);const r=Ji(e,t);return{...r,pool:{...r.pool,lpShares:e.lpShares}}}a(Fx,"lpSweepPool");function xu(e,...t){let n=e;for(const r of t)if(r<n)n=r;return n}a(xu,"min");function Bc(e,t="capped"){$e(e,t);const n=e.lpShares;const r=Ia-n;const o=(Z0(e.feeAccruedScaled,t)-e.kasScaled)*n/e.kasScaled;const i=(Gt-e.tokenReserve)*n/e.tokenReserve;return xu(r,o,i)}a(Bc,"maxDepositShares");function jx(e,t,n="capped"){$e(t,n);H(e,"kasScaledBudget");if(e<0n)throw new ee(`kasScaledBudget must be non-negative, got ${e}`);const r=e*t.lpShares/t.kasScaled;return xu(r,Bc(t,n))}a(jx,"sharesForKas");function Dx(e,t,n="capped"){$e(t,n);H(e,"tokBudget");if(e<0n)throw new ee(`tokBudget must be non-negative, got ${e}`);const r=e*t.lpShares/t.tokenReserve;return xu(r,Bc(t,n))}a(Dx,"sharesForTokens");function Hx(e,t="capped"){$e(e,t);const n=Vn(xn*e.lpShares,e.kasScaled);const r=Vn(e.lpShares,e.tokenReserve);const o=n>r?n:r;return o<1n?1n:o}a(Hx,"minWithdrawableShares");var Fy=2900000000000n;function wu(e,t="capped"){$e(e,t);const n=e.lpShares*e.lpShares;const r=e.kasScaled*e.tokenReserve;const o=Vn(xn*Gt*n,r*ut);const i=Vn((t==="capped"?vn:Fy)*n,r*ut);const s=o>i?o:i;return s<1n?1n:s}a(wu,"permanentlyWithdrawableShares");function jy(e,t="capped"){$e(e,t);const n=Vn(By*e.kasScaled,e.lpShares);const r=Vn(wu(e,t)*e.kasScaled,e.lpShares);let o=Ky;if(n>o)o=n;if(r>o)o=r;return o}a(jy,"minDepositKasScaled");function o1(e,t="capped"){const n=jy(e,t);const r=(n-1n)*e.lpShares/e.kasScaled+1n;const o=wu(e,t);return r>o?r:o}a(o1,"minDepositShares");function Vx(e,t,n,r="capped"){H(e,"held");H(t,"shares");if(t<0n||t>e)throw new ee(`shares ${t} is outside [0, ${e}]`);const o=e-t;return o>0n&&o<wu(n,r)}a(Vx,"withdrawalLeavesSmallPosition");function Gx(e,t,n="capped"){$e(t,n);H(e,"shares");if(e<0n)throw new ee(`shares must be non-negative, got ${e}`);const r=t.lpShares-ut;if(e>r)throw new Qr(`shares ${e} exceeds the issued ${r}`);const o=ln(La(e,t.kasScaled,"shares * kasScaled",n),t.lpShares);const i=ln(ie(e,t.tokenReserve,"shares * tokenReserve"),t.lpShares);return{kasScaled:o,tok:i,withdrawable:e>=1n&&o>=xn&&i>=1n}}a(Gx,"positionValue");function qx(e,t="capped"){$e(e,t);return La(e.kasScaled,e.tokenReserve,"kasScaled * tokenReserve",t)}a(qx,"lpInvariant");function Wx(e,t,n,r){for(const[o,i]of[["kRef",e],["sRef",t],["kNow",n],["sNow",r]]){H(i,o);if(i<=0n)throw new ee(`${o} must be positive, got ${i}`)}return Math.sqrt(Number(n)/Number(e))*(Number(t)/Number(r))-1}a(Wx,"shareValueGrowth");function Mc(e,t){const n=z0(t,Br(e));return{kind:"treasury",total:t,treasury:n.treasury,creator:n.creator}}a(Mc,"curvePayoutSplit");function Fc(e,t){const n=hu(t,Br(e));return{kind:"treasury",total:t,treasury:n.treasury,creator:n.creator}}a(Fc,"poolPayoutSplit");function Su(e){return e.treasury}a(Su,"kassealShare");function a1(e,t,n,r){Br(e);const o=X0(t,n,r);return r>=ku?{escrow:o.escrow,pooled:0n,split:{kind:"treasury",total:r,treasury:o.treasury,creator:o.creator}}:{escrow:o.escrow,pooled:o.pooled,split:void 0}}a(a1,"graduationPayoutOf");var Yn=2n**256n-2n**32n-977n;var i1=0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n;var Dy=0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798n;var Hy=0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n;var be=a((e,t=Yn)=>(e%t+t)%t,"mod");function Au(e,t,n=Yn){let r=1n;e=be(e,n);while(t>0n){if(t&1n)r=r*e%n;e=e*e%n;t>>=1n}return r}a(Au,"pow");var Vy=a(e=>Au(e,Yn-2n),"inv");var Tu=[0n,1n,0n];function d1([e,t,n]){if(n===0n||t===0n)return Tu;const r=be(4n*e*t*t);const o=be(3n*e*e);const i=be(o*o-2n*r);return[i,be(o*(r-i)-8n*t**4n),be(2n*t*n)]}a(d1,"dbl");function l1(e,t){if(e[2]===0n)return t;if(t[2]===0n)return e;const n=be(e[2]*e[2]);const r=be(t[2]*t[2]);const o=be(e[0]*r);const i=be(t[0]*n);const s=be(e[1]*t[2]*r);const c=be(t[1]*e[2]*n);if(o===i)return s===c?d1(e):Tu;const d=be(i-o);const u=be(c-s);const l=be(d*d);const f=be(d*l);const b=be(u*u-f-2n*o*l);return[b,be(u*(o*l-b)-s*f),be(d*e[2]*t[2])]}a(l1,"add");function s1(e,t){let n=Tu;let r=e;while(t>0n){if(t&1n)n=l1(n,r);r=d1(r);t>>=1n}return n}a(s1,"mul");function Gy([e,t,n]){if(n===0n)return void 0;const r=Vy(n);return[be(e*r*r),be(t*r*r*r)]}a(Gy,"affine");var Qi=a(e=>BigInt(`0x${h(e)||"0"}`),"big");var c1=a((...e)=>gc(_(...e)),"sha");function qy(e,...t){const n=c1(new TextEncoder().encode(e));return c1(n,n,...t)}a(qy,"taggedHash");function jc(e){if(e.length!==32)return false;const t=Qi(e);if(t>=Yn)return false;const n=be(t**3n+7n);const r=Au(n,(Yn+1n)/4n);return be(r*r)===n}a(jc,"isXOnlyPubkey");function u1(e,t,n){if(e.length!==32||t.length!==32||n.length!==64)return false;const r=Qi(e);if(r>=Yn)return false;const o=be(r**3n+7n);let i=Au(o,(Yn+1n)/4n);if(be(i*i)!==o)return false;if(i&1n)i=Yn-i;const s=Qi(n.subarray(0,32));const c=Qi(n.subarray(32));if(s>=Yn||c>=i1)return false;const d=be(Qi(qy("BIP0340/challenge",n.subarray(0,32),e,t)),i1);const u=Gy(l1(s1([Dy,Hy,1n],c),s1([r,be(-i),1n],d)));return u!==void 0&&(u[1]&1n)===0n&&u[0]===s}a(u1,"schnorrVerify");var Ua=1;var Wy=2;var zy=4;var Jy=128;var Xy=[1,2,4,129,130,132];var Yy=new TextEncoder().encode("TransactionSigningHash");var $a=new Uint8Array(32);var Qy="00".repeat(20);var rn=class extends Error{static{a(this,"SighashError")}constructor(t){super(t);this.name="SighashError"}};var mo=a(e=>Go(e,{outLen:32,key:Yy}),"hash");function Gc(e,t,n){let r=BigInt(e);if(r<0n||r>=1n<<BigInt(8*t))throw new rn(`${n} ${String(e)} does not fit in ${t} bytes`);const o=new Uint8Array(t);for(let i=0;i<t;i++){o[i]=Number(r&0xffn);r>>=8n}return o}a(Gc,"uint");var Dc=a((e,t)=>Gc(e,1,t),"u8");var Hc=a((e,t)=>Gc(e,2,t),"u16");var f1=a((e,t)=>Gc(e,4,t),"u32");var go=a((e,t)=>Gc(e,8,t),"u64");var Cu=a(e=>_(go(e.length,"length"),e),"varBytes");function Ra(e,t,n){if(!/^([0-9a-f]{2})*$/i.test(e))throw new rn(`${n} is not hex`);const r=L(e);if(t!==void 0&&r.length!==t)throw new rn(`${n} must be ${t} bytes, got ${r.length}`);return r}a(Ra,"hex");function Vc(e){const t=Ra(e,void 0,"scriptPublicKey");if(t.length<2)throw new rn("scriptPublicKey shorter than its version");return{version:t[0]|t[1]<<8,script:t.subarray(2)}}a(Vc,"splitScriptPublicKey");var Pu=a(e=>(e&Jy)!==0,"anyoneCanPay");var p1=a(e=>(e&127)===Wy,"isNone");var b1=a(e=>(e&127)===zy,"isSingle");function Eu(e,t,n=Ua){if(!Xy.includes(n))throw new rn(`invalid sighash type 0x${n.toString(16)}`);const r=Number(e.version);const{inputs:o,outputs:i}=e;const s=o[t];if(!Number.isInteger(t)||s===void 0)throw new rn(`no input ${t} of ${o.length}`);if(!s.utxo)throw new rn(`input ${t} has no UTXO entry`);const c=Pu(n)?$a:mo(_(...o.map((x,w)=>_(Ra(x.transactionId,32,`input ${w} transactionId`),f1(x.index,`input ${w} index`)))));const d=b1(n)||Pu(n)||p1(n)?$a:mo(_(...o.map((x,w)=>go(x.sequence,`input ${w} sequence`))));const u=Pu(n)?$a:mo(_(...o.map((x,w)=>Dc(x.sigOpCount??0,`input ${w} sigOpCount`))));const l=a((x,w)=>{const A=Vc(x.scriptPublicKey);const T=[go(x.value,`output ${w} value`),Hc(A.version,`output ${w} spk version`),Cu(A.script)];if(r>=1){T.push(Dc(x.covenant?1:0,"hasCovenant"));if(x.covenant)T.push(Hc(x.covenant.authorizingInput,`output ${w} authorizingInput`),Ra(x.covenant.covenantId,32,`output ${w} covenantId`))}return _(...T)},"hashOutput");let f;if(p1(n))f=$a;else if(b1(n))f=t>=i.length?$a:mo(l(i[t],t));else f=mo(_(...i.map(l)));const b=Ra(e.subnetworkId,20,"subnetworkId");const g=Ra(e.payload??"",void 0,"payload");const m=e.subnetworkId.toLowerCase()===Qy&&g.length===0?$a:mo(Cu(g));const y=Vc(s.utxo.scriptPublicKey);const v=[Hc(r,"version"),c,d];if(r<1)v.push(u);v.push(Ra(s.transactionId,32,`input ${t} transactionId`),f1(s.index,`input ${t} index`),Hc(y.version,"spk version"),Cu(y.script),go(s.utxo.amount,"amount"),go(s.sequence,"sequence"));if(r<1)v.push(Dc(s.sigOpCount??0,"sigOpCount"));v.push(f,go(e.lockTime,"lockTime"),b,go(e.gas,"gas"),m,Dc(n,"hashType"));return h(mo(_(...v)))}a(Eu,"sighash");function m1(e,t,n=Ua){return Eu(JSON.parse(e),t,n)}a(m1,"sighashOfTxJson");var g1=1;var se=class extends Error{static{a(this,"FinalizeError")}constructor(t){super(t);this.name="FinalizeError"}};function h1(e,t){const n=JSON.parse(e.serializeToSafeJSON());if(n.inputs.length!==t.length)throw new se(`covenant ids for ${t.length} inputs, transaction has ${n.inputs.length}`);n.inputs.forEach((r,o)=>{const i=t[o];if(i===void 0)return;if(!r.utxo)throw new se(`input ${o} has no UTXO entry to carry its covenant id`);r.utxo.covenantId=i});return JSON.stringify(n)}a(h1,"safeJsonWithCovenantIds");function Na(e,t){const n=gt(qn(e.tx)).txid;if(n!==e.tx.id||n!==e.txid)throw new se(`${e.plan.name}: txidV1 ${n}, SDK ${e.tx.id}, assembled ${e.txid}`);const r=e.inputsToSign.map(({index:o,slot:i})=>{if(i.kind==="p2pk")return{index:o,kind:"p2pk",sighashType:1};return{index:o,kind:i.kind==="token-leader"?"p2sh-leader":"p2sh-delegator",sighashType:1,signatureOffset:i.offset}});for(const o of t.produces){if(!Number.isInteger(o.index)||o.index<0||o.index>=e.outputs.length)throw new se(`${e.plan.name}: produces names output ${o.index} of ${e.outputs.length}`)}return{txJson:h1(e.tx,e.plan.inputs.map(o=>o.covenantId)),txid:e.txid,masses:e.masses,feeSompi:e.fee,feerate:t.feerate,inputsToSign:r,budgets:[...e.budgets],consumes:e.plan.inputs.map(o=>({txid:o.outpoint.txid,index:o.outpoint.index})),produces:t.produces,optimistic:t.optimistic}}a(Na,"toBuiltTx");function qc(e){const t=JSON.parse(e);return{inputs:t.inputs.map((n,r)=>{if(!n.utxo||n.utxo.amount===void 0||n.utxo.scriptPublicKey===void 0)throw new se(`input ${r} has no UTXO entry`);return{sigScriptLength:(n.signatureScript??"").length/2,computeBudget:Number(n.computeBudget??0),amount:BigInt(n.utxo.amount),spkLength:y1(n.utxo.scriptPublicKey),hasCovenant:typeof n.utxo.covenantId==="string"&&n.utxo.covenantId.length>0}}),outputs:t.outputs.map(n=>({value:BigInt(n.value),spkLength:y1(n.scriptPublicKey),hasCovenant:n.covenant!==null&&n.covenant!==void 0})),payloadLength:(t.payload??"").length/2}}a(qc,"shapeOfSafeJson");function y1(e){if(e.length<4||e.length%2!==0)throw new se(`malformed scriptPublicKey ${e.slice(0,16)}`);return e.length/2-2}a(y1,"spkScriptLength");function Zy(e,t,n,r){if(t.length===66&&t[0]===65)return Oa(t);if(t.length===e.length){if(!$(t.subarray(0,n),e.subarray(0,n))||!$(t.subarray(n+Le),e.subarray(n+Le))){throw new se(`input ${r}: the returned script differs from the prebuilt one outside the signature slot`)}return t.subarray(n,n+Le)}throw new se(`input ${r}: unexpected wallet answer of ${t.length} bytes for a P2SH input`)}a(Zy,"p2shSignature");function eh(e){if(e===void 0||e.length!==4+68)return void 0;const t=L(e.slice(4));return t[0]===32&&t[33]===172?t.subarray(1,33):void 0}a(eh,"p2pkKeyOf");function k1(e,t,n={}){const r=zn();const o=r.Transaction.deserializeFromSafeJSON(e.txJson);let i;try{i=r.Transaction.deserializeFromSafeJSON(t)}catch(x){throw new se(`signed transaction does not parse: ${x.message}`)}const s=gt(qn(i)).txid;if(s!==e.txid)throw new se(`signed transaction has txid ${s}, built ${e.txid}: the wallet changed outpoints, outputs, bindings or payload`);const c=o.inputs;const d=i.inputs;if(d.length!==c.length||d.length!==e.budgets.length)throw new se("input count changed");const u=new Map(e.inputsToSign.map(x=>[x.index,x]));for(const x of e.inputsToSign)if(x.index<0||x.index>=c.length)throw new se(`inputsToSign names input ${x.index} of ${c.length}`);const l=c.map((x,w)=>{const A=L(x.signatureScript??"");const T=L(d[w].signatureScript??"");const I=u.get(w);if(I===void 0){if(!$(A,T))throw new se(`input ${w}: the wallet changed a sigscript it was not asked to sign`);return A}if(I.kind==="p2pk"){if(T.length!==66||T[0]!==65)throw new se(`input ${w}: P2PK signature script must be 41 || sig64 || hashtype, got ${T.length} bytes`);if(T[65]!==g1)throw new se(`input ${w}: hashtype 0x${T[65].toString(16)} is not SIGHASH_ALL`);if(T.subarray(1,65).every(N=>N===0))throw new se(`input ${w}: unsigned`);return T}const R=I.signatureOffset;if(R===void 0)throw new se(`input ${w}: ${I.kind} without a signature offset`);if(A.subarray(R,R+Le).some(N=>N!==0))throw new se(`input ${w}: prebuilt slot at ${R} is not zero-filled`);const K=Zy(A,T,R,w);if(K[64]!==g1)throw new se(`input ${w}: hashtype 0x${K[64].toString(16)} is not SIGHASH_ALL`);if(K.subarray(0,64).every(N=>N===0))throw new se(`input ${w}: unsigned`);const M=Gi(A,R,K);if(!$(M.subarray(0,R),A.subarray(0,R))||!$(M.subarray(R+Le),A.subarray(R+Le))){throw new se(`input ${w}: splice moved bytes outside the slot`)}return M});const f=JSON.parse(e.txJson).inputs.map(x=>x.utxo?.scriptPublicKey);const b=n.signer===void 0?void 0:L(n.signer);for(const x of e.inputsToSign){const w=b??(x.kind==="p2pk"?eh(f[x.index]):void 0);if(w===void 0)continue;const A=x.kind==="p2pk"?1:x.signatureOffset;const T=l[x.index].subarray(A,A+64);if(!u1(w,L(m1(e.txJson,x.index)),T)){throw new se(`input ${x.index}: the wallet returned an invalid signature`)}}c.forEach((x,w)=>{x.signatureScript=h(l[w]);x.computeBudget=e.budgets[w]});o.inputs=c;o.finalize();const g=gt(qn(o)).txid;if(g!==o.id||g!==e.txid)throw new se(`after finalize: txidV1 ${g}, SDK ${o.id}, built ${e.txid}`);const m=JSON.parse(e.txJson).inputs.map(x=>typeof x.utxo?.covenantId==="string"?x.utxo.covenantId:void 0);const y=h1(o,m);const v=Wn(qc(y));if(v.max!==e.masses.max||v.bytes!==e.masses.bytes||v.compute!==e.masses.compute||v.storage!==e.masses.storage){throw new se(`final masses ${JSON.stringify({...v,minFee:String(v.minFee)})} differ from the built masses`)}return{...e,txJson:y,masses:v}}a(k1,"finalizeSigned");async function Wc(e,t,n={}){return k1(e,t,n)}a(Wc,"finalize");function v1(e){const t=qc(e.txJson);if(t.inputs.length!==e.budgets.length)throw new se("budgets do not match the inputs");const n=Wn({...t,inputs:t.inputs.map((r,o)=>({...r,computeBudget:e.budgets[o]}))});return{masses:n,feeSompi:n.minFee}}a(v1,"estimateBuilt");function Cw(e){return e.flatMap((t,n)=>t===void 0?[]:[{index:n,role:t}])}a(Cw,"rolesByIndex");function Pw(e,t){const n=zn();const r=n.Transaction.deserializeFromSafeJSON(e.txJson);const o=r.inputs;for(const i of e.inputsToSign){if(i.kind!=="p2pk")throw new se(`input ${i.index} is a ${i.kind} slot: a service key signs P2PK funding inputs only`);const s=Oa(n.createInputSignature(r,i.index,t,n.SighashType.All));o[i.index].signatureScript=h(Uint8Array.of(65,...s))}r.inputs=o;return k1(e,r.serializeToSafeJSON())}a(Pw,"signBuiltWithKey");function zc(e){const t=qc(e);const n=t.inputs.reduce((o,i)=>o+i.amount,0n);const r=t.outputs.reduce((o,i)=>o+i.value,0n);return{fee:n-r,totalIn:n,totalOut:r,masses:Wn(t),budgets:t.inputs.map(o=>o.computeBudget)}}a(zc,"feeFromBytes");function Jc(e,t=br,n=0n){if(e.fee<e.masses.minFee)return`the fee ${e.fee} sompi is below the model minimum ${e.masses.minFee} for mass ${e.masses.max}`;const r=BigInt(e.masses.max)*t+n;if(e.fee>r)return`the fee ${e.fee} sompi is above ${r} (mass ${e.masses.max} at ${t} sompi/g${n>0n?` + ${n}`:""})`;if(e.fee>no(e.masses.minFee))return`the fee ${e.fee} sompi is above the builder's ceiling ${no(e.masses.minFee)}`;return void 0}a(Jc,"feeOutsideModel");var th=100000000n;var nh=10n*th;var x1=1000000n;var rh=`000020${"22".repeat(32)}ac`;function oh(e,t,n){const r=_i(t,"the claim planner");const o=e==="curve"?Mc(r,n):Fc(r,n);return{treasury:o.treasury,creator:o.creator}}a(oh,"claimSplit");function ah(e){if(e.creatorSpk===void 0)return"no-creator";if(e.creatorSpk===rh)return"placeholder";if(e.venue==="curve"&&e.soldOut===true)return"sold-out";const t=e.venue==="pool"?e.accruedSompi/x1*x1:e.accruedSompi;if(t<nh)return"below-minimum";return null}a(ah,"claimRefusal");function Mw(e){const t=[];const n=[];for(const r of e){const o=ah(r);if(o!==null){n.push({cell:r,reason:o});continue}const i=oh(r.venue,r.contractSet,r.accruedSompi);t.push({cell:r,payoutSompi:r.accruedSompi,treasurySompi:i.treasury,creatorSompi:i.creator})}return{plans:t,skipped:n,totalCreatorSompi:t.reduce((r,o)=>r+o.creatorSompi,0n)}}a(Mw,"planClaims");var Re=class extends Error{static{a(this,"ClaimMismatch")}constructor(t){super(`the built sweep does not match the claim: ${t}`);this.name="ClaimMismatch"}};function ih(e,t,n){let r;try{r=JSON.parse(t.txJson).outputs??[]}catch{throw new Re("its JSON does not parse")}let o;try{o=zc(t.txJson)}catch(y){throw new Re(`its inputs or outputs do not parse (${y.message})`)}if(o.fee!==t.feeSompi)throw new Re(`it pays a fee of ${o.fee} sompi, the build said ${t.feeSompi}`);const i=Jc(o,n.feerate);if(i!==void 0)throw new Re(i);const s=`0000${h(Q(n.funder))}`;const c=a((y,v,x,w)=>{const A=t.produces.filter(R=>R.role===y);if(A.length!==1)throw new Re(A.length===0?`it has no ${w} output`:`it has ${A.length} ${w} outputs`);const T=A[0].index;const I=r[T];if(I?.value===void 0||I.scriptPublicKey===void 0)throw new Re(`output ${T} is missing`);if(x!==void 0&&I.scriptPublicKey!==x)throw new Re(`output ${T} pays ${I.scriptPublicKey}, the ${w} is ${x}`);if(BigInt(I.value)!==v)throw new Re(`output ${T} pays ${String(I.value)} sompi, the plan ${v}`)},"check");if(e.cell.creatorSpk===void 0)throw new Re("the plan names no creator");c("creator",e.creatorSompi,e.cell.creatorSpk,"creator");c("treasury",e.treasurySompi,void 0,"treasury");const d=r.map((y,v)=>({o:y,k:v})).filter(({o:y})=>y.covenant!==null&&y.covenant!==void 0);const u=e.cell.covenantId.toLowerCase();for(const{o:y,k:v}of d){const x=String(y.covenant.covenantId??"").toLowerCase();if(x!==u)throw new Re(`output ${v} is bound to covenant ${x}, not the swept cell ${u}`)}if(d.length!==1)throw new Re(`${d.length} outputs are bound to the swept cell; a sweep has one continuation`);const l=d[0].k;const f=a(y=>t.produces.find(v=>v.role===y)?.index,"indexOf");if(f("treasury")!==l+1||f("creator")!==l+2){throw new Re(`the payouts are at outputs ${f("treasury")} and ${f("creator")}, the covenant pins them at ${l+1} and ${l+2}`)}const b=new Map(t.produces.map(y=>[y.index,y.role]));let g=0;let m=0n;for(const[y,v]of r.entries()){if(v.value===void 0||v.scriptPublicKey===void 0)throw new Re(`output ${y} is malformed`);if(v.covenant!==null&&v.covenant!==void 0)continue;const x=b.get(y);if(x==="change"){if(v.scriptPublicKey!==s)throw new Re(`the change output ${y} does not pay the funder`);g++;continue}if(x!=="treasury"&&x!=="creator")throw new Re(`output ${y} is neither a payee nor the change: an output pays neither a payee nor the funder`);m+=BigInt(v.value)}if(g>1)throw new Re(`${g} change outputs pay the funder`);if(m!==e.payoutSompi)throw new Re(`the payouts total ${m} sompi, the plan ${e.payoutSompi}: an output pays neither a payee nor the funder`)}a(ih,"checkClaimTx");async function Fw(e,t,n){const r=[];for(const o of t){const i=await e({covenantId:o.cell.covenantId,venue:o.cell.venue,funder:n});ih(o,i,{funder:n});r.push({plan:o,tx:i})}return{claims:r,totalFeeSompi:r.reduce((o,i)=>o+i.tx.feeSompi,0n),totalCreatorSompi:r.reduce((o,i)=>o+i.plan.creatorSompi,0n)}}a(Fw,"buildClaims");var Qn=500000000000n;function sh(e){const t=[];for(let n=0;n<e.length;){const r=e[n];let o=-1;let i=1;if(r>=1&&r<=75)o=r;else if(r===76){o=e[n+1];i=2}else if(r===77){o=e[n+1]|e[n+2]<<8;i=3}else if(r===78){o=(e[n+1]|e[n+2]<<8|e[n+3]<<16|e[n+4]<<24)>>>0;i=5}if(o>=0){if(n+i+o>e.length)throw new Error("truncated push in a compiled program");t.push({at:n,op:r,push:e.subarray(n+i,n+i+o)});n+=i+o}else{t.push({at:n,op:r});n+=1}}return t}a(sh,"opcodes");function Ou(e,t){return sh(e).filter(n=>n.push!==void 0&&$(n.push,t)).length}a(Ou,"pushCountOf");function _u(e,t){if(!/^[0-9a-f]{8}$/.test(e))throw new Error(`dispatch tag ${e} is not 4 bytes of hex`);return _(Uint8Array.of(4),L(e),Ge(t))}a(_u,"noArgSigScript");var gr=100n;var Qc=1000000000000000000n;var ft=100000000n;var Pt=20000000n;var ts=1n;var $u=157788000000n;var Ru=100000000n;var yr=100000000n;var ho=6;var S1=0;var Ba=0;var rs=3;var A1=5n;var es=86400000n;var ed=7n*es;var Uu=10n*60000n;var Zi=63115200000n;var wn=140;var yo=37;var Xc=(1n<<63n)-1n;function T1(e){return e===Ba||e===rs}a(T1,"isLockScheme");var Ka="contracts/lock/v1/artifacts";function ch(){return["manifest.json","lock.artifact.json","lock.ctor.json","factory.artifact.json","factory.ctor.json","build-report.txt"].map(e=>`${Ka}/${e}`)}a(ch,"lockV1ArtifactPaths");var Iu="create(byte[32],byte[32],byte,int,int,int,int,int,int,int,byte[],byte[])";var dh=Object.freeze(["int","int","int","byte[]"]);var Yc;function w1(e,t){const n=Gn(e);const r=n.contracts[t];if(!r)throw new Error(`${e}: no contract ${t}`);const o=Uint8Array.from(r.compiled.bytecode);const{offset:i,len:s}=r.compiled.state_span;const c=o.subarray(0,i);const d=o.subarray(i+s);const u=tt(c,d);if(u!==h(Uint8Array.from(r.compiled.template_hash)))throw new Error(`${e}: recomputed template hash ${u} != the artifact's`);const l={};for(const[f,b]of Object.entries(r.entries))l[f.replace("__covenant_entrypoint_auth_","")]=b.dispatch_tag.toLowerCase();return{prefix:c,suffix:d,stateOffset:i,stateLength:s,templateHash:u,bytecode:o,tags:l}}a(w1,"templateOf");var lh=Object.freeze({LOCK_TIME_THRESHOLD:Qn,TRANCHES_MAX:gr,TOTAL_MAX:Qc,PAYOUT_CELL_KAS:ft,FEE_CAP:Pt,LOCK_VERSION:ts,FIVE_YEARS_MS:$u,FINAL_KAS_MIN:Ru,T_CELL_KAS_MIN:yr,LOCK_OUT:BigInt(S1),MAX_CREATE_OUTPUTS:BigInt(ho),TOKEN_PREFIX_LEN:1n,TOKEN_SUFFIX_LEN:3885n});function Nu(){if(Yc!==void 0)return Yc;const e="lock v1";const t=Gn(`${Ka}/manifest.json`);if(t.set!=="kasseal-token-lock"||t.version!=="1")throw new Error(`${e}: manifest names set ${t.set} version ${t.version}`);for(const[l,f]of Object.entries(t.sha256)){if(!l.startsWith("artifacts/")||l.includes(".."))throw new Error(`${e}: manifest names ${l}`);const b=eo().readText(`${Ka}/${l.slice("artifacts/".length)}`);if(ma(new TextEncoder().encode(b))!==f)throw new Error(`${e}: ${l} does not hash to the manifest's ${f}`)}for(const[l,f]of Object.entries(lh)){if(t.constants[l]===void 0||BigInt(t.constants[l])!==f)throw new Error(`${e}: manifest constant ${l} = ${String(t.constants[l])}, the builder mirrors ${f}`)}const n=Ta();if(t.inputs.tokenTemplateHash!==n.templateHash||n.templateHash!==_e)throw new Error(`${e}: TOKEN_H ${t.inputs.tokenTemplateHash} is not the reference token template`);const r=w1(`${Ka}/lock.artifact.json`,"Lock");if(r.templateHash!==t.lock.templateHash)throw new Error(`${e}: lock template ${r.templateHash} != manifest ${t.lock.templateHash}`);if(r.stateOffset!==1||r.stateLength!==wn||t.lock.stateSpan.offset!==1||t.lock.stateSpan.length!==wn)throw new Error(`${e}: the lock state span is not (1, ${wn})`);if(r.bytecode.length!==t.lock.bytecodeBytes||h(r.prefix)!==t.lock.prefix||r.suffix.length!==t.lock.suffix.bytes||ma(r.suffix)!==t.lock.suffix.sha256){throw new Error(`${e}: the lock's prefix or suffix is not the manifest's`)}const o=r.tags["claim"];const i=r.tags["extend"];if(o!==xt("claim",[])||i!==xt("extend",dh))throw new Error(`${e}: the lock's entry tags are not the ones derived from claim() and extend(int,int,int,byte[])`);Ku(r.bytecode.subarray(1,1+wn));const s=w1(`${Ka}/factory.artifact.json`,"LockFactory");if(s.templateHash!==t.factory.templateHash)throw new Error(`${e}: factory template ${s.templateHash} != manifest ${t.factory.templateHash}`);if(s.stateOffset!==1||s.stateLength!==yo)throw new Error(`${e}: the factory state span is not (1, ${yo})`);if(s.bytecode.length!==t.factory.bytecodeBytes)throw new Error(`${e}: the factory is not ${t.factory.bytecodeBytes} B`);if(t.factory.lockH!==r.templateHash)throw new Error(`${e}: the factory was built for lock ${t.factory.lockH}, the lock is ${r.templateHash}`);const c=Ou(s.suffix,L(r.templateHash));if(c!==1)throw new Error(`${e}: the compiled factory pushes LOCK_H ${c} times, expected once`);for(const[l,f]of[["lock",r],["factory",s]]){if(Ou(f.suffix,L(n.templateHash))<1)throw new Error(`${e}: the ${l} does not carry TOKEN_H`)}const d=s.tags["create"];if(d!==h(qs(Iu)))throw new Error(`${e}: the factory's create tag is not the one derived from ${Iu}`);const u=C1(s.bytecode);if(!$(_(s.prefix,Z(u),s.suffix),s.bytecode))throw new Error(`${e}: the factory's constructor state does not re-encode`);Yc={set:"kasseal-token-lock",version:"1",lock:{prefix:r.prefix,suffix:r.suffix,stateOffset:1,stateLength:wn,templateHash:r.templateHash,bytecode:r.bytecode,claimTag:o,extendTag:i},factory:{prefix:s.prefix,suffix:s.suffix,stateOffset:1,stateLength:yo,templateHash:s.templateHash,bytecode:s.bytecode,createTag:d},token:n};return Yc}a(Nu,"loadLockV1");function C1(e){const t=e.subarray(1,1+yo);const n=Nt(t,0);if(n.next!==t.length||n.payload.length!==36)throw new Error("the factory state is not one 36-byte push");return Uint8Array.from(n.payload)}a(C1,"factorySpkOf");var Zc=["total","claimed","start","cliff","period","tranches","version","endCap"];function ns(e){if(e.tokenCovId.length!==32||e.beneficiary.length!==32)throw new Error("lock state: tokenCovId and beneficiary are 32 bytes");if(!Number.isInteger(e.scheme)||e.scheme<0||e.scheme>255)throw new Error("lock state: scheme is one byte");for(const n of Zc)if(typeof e[n]!=="bigint")throw new Error(`lock state: ${n} must be a bigint`);const t=_(Z(e.tokenCovId),Z(e.beneficiary),Z(Uint8Array.of(e.scheme)),...Zc.map(n=>Z(ct(e[n]))));if(t.length!==wn)throw new Error(`lock state encodes to ${t.length} B, expected ${wn}`);return t}a(ns,"encodeLockState");function Ku(e){if(e.length!==wn)throw new Error(`lock state is ${e.length} B, expected ${wn}`);let t=0;const n=a((v,x)=>{const w=Nt(e,t);if(w.payload.length!==v)throw new Error(`lock state ${x} is ${w.payload.length} B, expected ${v}`);t=w.next;return Uint8Array.from(w.payload)},"next");const r=n(32,"tokenCovId");const o=n(32,"beneficiary");const i=n(1,"scheme")[0];const s=Zc.map(v=>sn(n(8,v)));if(t!==e.length)throw new Error("lock state has trailing bytes");const[c,d,u,l,f,b,g,m]=s;const y={tokenCovId:r,beneficiary:o,scheme:i,total:c,claimed:d,start:u,cliff:l,period:f,tranches:b,version:g,endCap:m};if(!$(ns(y),e))throw new Error("lock state does not re-encode byte for byte");return y}a(Ku,"decodeLockState");function os(e){const t=e.start+e.tranches*e.period;return e.cliff>t?e.cliff:t}a(os,"lockEndOf");function P1(e){return os(e)+$u}a(P1,"lockEndCapOf");function td(e,t){if(e.tokenCovId.length!==32||e.tokenCovId.every(r=>r===0))return"tokenCovId is zero";if(t!==void 0&&h(e.tokenCovId)===t.toLowerCase())return"tokenCovId is the lock itself";if(e.beneficiary.length!==32)return"beneficiary is not 32 bytes";if(!T1(e.scheme))return`scheme 0x${e.scheme.toString(16)} is neither P2PK (0x00) nor P2SH (0x03)`;if(e.tranches<1n||e.tranches>gr)return`tranches ${e.tranches} outside 1..${gr}`;if(e.period<=0n)return"period is not positive";if(e.start<Qn)return`start ${e.start} is not a timestamp (below ${Qn})`;if(e.cliff<e.start)return"cliff is before start";if(e.claimed<0n||e.claimed>=e.tranches)return`claimed ${e.claimed} outside 0..${e.tranches-1n}`;if(e.total<e.tranches)return`total ${e.total} is below the tranche count`;if(e.total>Qc)return`total ${e.total} above ${Qc}`;if(e.version!==ts)return`version ${e.version} is not ${ts}`;for(const r of Zc)if(e[r]>Xc||e[r]<-Xc)return`${r} is outside the int64 range`;const n=os(e);if(e.tranches*e.period>Xc||e.start+e.tranches*e.period>Xc)return"the end leaves the int64 range";if(n>e.endCap)return`the end ${n} is past endCap ${e.endCap}`;return void 0}a(td,"lockStateProblem");function nd(e,t){const n=td(e,t);if(n!==void 0)throw new Error(`lock state: ${n}`)}a(nd,"assertLockState");function Zn(e,t){if(t<0n||t>e.tranches)throw new Error(`amountAt(${t}) outside 0..${e.tranches}`);const n=e.total/e.tranches;const r=e.total%e.tranches;return t*n+t*r/e.tranches}a(Zn,"lockAmountAt");function Bu(e,t){if(t<e.cliff)return 0n;const n=(t-e.start)/e.period;return n>e.tranches?e.tranches:n}a(Bu,"lockVestedAt");function Mu(e,t){if(t<1n||t>e.tranches)throw new Error(`tranche ${t} outside 1..${e.tranches}`);const n=e.start+t*e.period;return n>e.cliff?n:e.cliff}a(Mu,"lockDueAt");function Lu(e){return e.total-Zn(e,e.claimed)}a(Lu,"lockRemaining");function as(e,t){const n=Bu(e,t);if(n<=e.claimed)return{vested:e.claimed,tranches:0n,amount:0n,final:false};return{vested:n,tranches:n-e.claimed,amount:Zn(e,n)-Zn(e,e.claimed),final:n===e.tranches}}a(as,"lockClaimableAt");function Fu(e){if(e.claimed>=e.tranches)return void 0;const t=Mu(e,e.claimed+1n);const n=as(e,t);return{at:t,vested:n.vested,amount:n.amount,final:n.final}}a(Fu,"lockNextUnlock");function uh(e){const t=[];let n=e.claimed;for(let r=e.claimed+1n;r<=e.tranches;r++){const o=Mu(e,r);const i=Bu(e,o);t.push({at:o,vested:i,amount:Zn(e,i)-Zn(e,n)});n=i;r=i}return t}a(uh,"lockSchedule");function rd(e){if(e<1n||e>gr)throw new Error(`tranches ${e} outside 1..${gr}`);return e*(ft+Pt)+Ru}a(rd,"lockDeposit");function od(e){return{...e,claimed:0n,version:ts,endCap:P1(e)}}a(od,"lockGenesisState");var yt=class extends Error{static{a(this,"LockRuleViolation")}rule;constructor(t,n){super(`lock ${t}: ${n}`);this.name="LockRuleViolation";this.rule=t}};function fh(e){if(e%es===0n)return`${e/es} day${e===es?"":"s"}`;if(e%60000n===0n)return`${e/60000n} minute${e===60000n?"":"s"}`;return`${e} ms`}a(fh,"durationText");function ad(e,t){if(!T1(e.scheme))throw new yt("scheme",`beneficiary scheme 0x${e.scheme.toString(16)} is neither P2PK nor P2SH`);if(e.tranches<1n||e.tranches>gr)throw new yt("releases",`${e.tranches} releases, 1 to ${gr} allowed`);if(t.supply<=0n)throw new yt("size","the supply must be positive");if(e.total*10000n<t.supply*A1)throw new yt("size",`${e.total} is below 0.05 % of the supply ${t.supply}`);if(e.total>t.supply)throw new yt("size",`${e.total} is above the supply ${t.supply}`);const n=t.minDurationMs??ed;if(n<=0n||n>Zi)throw new yt("duration",`the minimum duration ${n} ms is outside 1..${Zi} ms`);const r=os(e)-t.now;if(r<n)throw new yt("duration",`the lock ends ${r} ms after now, at least ${fh(n)} (${n} ms) required`);if(r>Zi)throw new yt("duration",`the lock ends ${r} ms after now, at most 2 years (${Zi} ms) allowed`);if(e.start+e.period<=t.now)throw new yt("schedule",`the first release by the schedule is due at ${e.start+e.period}, not after now ${t.now}: tokens would be claimable at creation`)}a(ad,"assertLockAppRules");function id(e,t,n,r){return tt(e.subarray(0,t),e.subarray(t+n))===r}a(id,"spansHashTo");function Ma(e,t){const n=_(e.lock.prefix,ns(t),e.lock.suffix);if(!id(n,e.lock.stateOffset,e.lock.stateLength,e.lock.templateHash))throw new Error("lock program does not hash to LOCK_H");return n}a(Ma,"lockProgram");function E1(e,t){const{stateOffset:n,stateLength:r}=e.lock;if(t.length!==e.lock.bytecode.length)throw new Error("program length is not the lock template's");if(!id(t,n,r,e.lock.templateHash))throw new Error("program is not the lock template (LOCK_H)");return Ku(t.subarray(n,n+r))}a(E1,"lockStateOfProgram");function ju(e,t){if(!dt(t))throw new Error("creatorSpk is not a version-0 Schnorr P2PK script (36 B)");const n=_(e.factory.prefix,Z(t),e.factory.suffix);if(!id(n,1,yo,e.factory.templateHash))throw new Error("factory program does not hash to FACTORY_H");return n}a(ju,"lockFactoryProgram");function Du(e,t){if(t.length!==e.factory.bytecode.length)throw new Error("program length is not the factory template's");if(!id(t,1,yo,e.factory.templateHash))throw new Error("program is not the factory template (FACTORY_H)");const n=C1(t);if(!dt(n))throw new Error("the factory's creatorSpk is not a version-0 Schnorr P2PK script");return n}a(Du,"lockFactoryCreatorOf");function sd(e){if(e.beneficiary.length!==32)throw new Error("beneficiary is not 32 bytes");if(e.scheme===Ba)return _(Uint8Array.of(32),e.beneficiary,Uint8Array.of(172));if(e.scheme===rs)return _(Uint8Array.of(170,32),e.beneficiary,Uint8Array.of(135));throw new Error(`beneficiary scheme 0x${e.scheme.toString(16)} is neither P2PK nor P2SH`)}a(sd,"lockPayeeScript");function cd(e,t){const n=t.covenantId.toLowerCase();if(!/^[0-9a-f]{64}$/.test(n))throw new Error("the lock cell carries no covenant id");const r=E1(e,t.program);nd(r,n);if(t.state!==void 0&&!$(ns(t.state),ns(r)))throw new Error("the served lock state differs from the state decoded from its program");return{kind:"lock",outpoint:{txid:t.outpoint.txid.toLowerCase(),index:t.outpoint.index},value:t.value,covenantId:n,program:t.program,state:r,daaScore:t.daaScore}}a(cd,"lockCellOf");function dd(e,t){if(t.covenantId.toLowerCase()!==h(e.state.tokenCovId))return`the cell is of lineage ${t.covenantId}, the lock holds ${h(e.state.tokenCovId)}`;if(t.outpoint.txid.toLowerCase()!==e.outpoint.txid)return"the cell was not created by the lock cell's transaction (a decoy)";const n=Ae(t.state);if(n.ownerScheme!==mt||h(n.owner)!==e.covenantId)return"the cell is not owned by the lock (0x04, K)";if(n.borrowScheme!==0||n.borrowGuard.some(r=>r!==0))return"the cell has a borrow scheme or guard set";if(n.amount!==Lu(e.state))return`the cell holds ${n.amount}, the lock state leaves ${Lu(e.state)}`;return void 0}a(dd,"lockTokenCellProblem");var rt=class extends Error{static{a(this,"OptimisticConflict")}constructor(t){super(t);this.name="OptimisticConflict"}};function ph(e){if(e.curve)return{kind:"curve",covenantId:e.curve.covenantId,outpoint:e.curve.toOutpoint};if(e.pool)return{kind:"pool",covenantId:e.pool.poolId,outpoint:e.pool.toOutpoint};const t=e.genesis?.[0];return t?{kind:t.kind,covenantId:t.covenantId,outpoint:t.outpoint}:void 0}a(ph,"predictedHeadOf");function bh(e){return[...e.curve?[e.curve.fromOutpoint]:[],...e.pool?[e.pool.fromOutpoint]:[],...e.cells.consumed,...(e.terminated??[]).map(t=>t.outpoint)]}a(bh,"consumedByDelta");var O1=class{static{a(this,"OptimisticStore")}#e=new Map;pending(){return[...this.#e.values()]}get(t){return this.#e.get(t)}apply(t,n){if(this.#e.has(t.txid))throw new rt(`${t.txid} is already applied`);const r=t.consumes.map(d=>({txid:d.txid,index:d.index}));const o=new Set(r.map(j));if(o.size!==r.length)throw new rt(`${t.txid} consumes an outpoint twice`);for(const d of bh(t.optimistic)){if(!o.has(j(d)))throw new rt(`${t.txid}: the delta consumes ${j(d)}, which the transaction does not spend`)}for(const d of t.optimistic.funding.reserved){if(!o.has(j(d))&&d.txid!==t.txid)throw new rt(`${t.txid}: reserves ${j(d)}, neither spent nor produced by it`)}for(const d of this.#e.values()){const u=d.consumes.find(l=>o.has(j(l)));if(u)throw new rt(`${t.txid} spends ${j(u)}, already spent by our ${d.txid}`)}const i=[...new Set(r.filter(d=>this.#e.has(d.txid)).map(d=>d.txid))];const s=ph(t.optimistic);const c={txid:t.txid,status:"pending",consumes:r,...s?{predictedHead:s}:{},submittedAt:n,dependsOn:i,delta:t.optimistic};this.#e.set(t.txid,c);return c}commit(t){const n=this.#n(t);if(n.dependsOn.some(r=>this.#e.get(r)?.status==="pending"))throw new rt(`${t} accepted before a transaction it spends`);if(n.status==="pending")this.#e.set(t,{...n,status:"accepted"})}drop(t){const n=this.#n(t);if(n.status!=="accepted")throw new rt(`${t} is dropped before acceptance`);this.#e.delete(t);for(const[r,o]of this.#e)if(o.dependsOn.includes(t))this.#e.set(r,{...o,dependsOn:o.dependsOn.filter(i=>i!==t)})}rollback(t){const n=this.#n(t);if(n.status==="accepted")throw new rt(`${t} was accepted; an accepted transaction is not rolled back`);const r=new Set([t]);for(const i of this.#e.values())if(i.dependsOn.some(s=>r.has(s)))r.add(i.txid);const o=[t,...[...this.#e.keys()].filter(i=>i!==t&&r.has(i))];for(const i of o)this.#e.delete(i);return o}replace(t,n,r){const o=this.#n(t);if(o.status!=="pending")throw new rt(`${t} is not pending`);const i=o.consumes.map(j).sort();const s=n.consumes.map(j).sort();if(i.length!==s.length||i.some((d,u)=>d!==s[u]))throw new rt("a replacement must spend the same outpoints");const c=this.rollback(t);try{this.apply(n,r)}catch(d){this.#e.set(t,o);throw d}return c.slice(1)}reserved(){const t=new Set;for(const n of this.#e.values()){for(const r of n.consumes)t.add(j(r));for(const r of n.delta.funding.reserved)t.add(j(r))}return t}curveHead(t,n){return this.#o("curve",t,n)}poolHead(t,n){return this.#o("pool",t,n)}tokenCells(t){const n=this.#r();const r=t.filter(i=>!n.has(j(i.outpoint)));const o=new Set(r.map(i=>j(i.outpoint)));for(const i of this.#e.values()){for(const s of i.delta.cells.produced){const c=j(s.outpoint);if(!n.has(c)&&!o.has(c)){r.push({outpoint:s.outpoint,state:s.state,amount:s.amount});o.add(c)}}}return r}fundingView(t,n,r=0n){const o=this.reserved();const i=t.filter(c=>!o.has(j(c.outpoint)));const s=new Set(i.map(c=>j(c.outpoint)));for(const c of this.#e.values()){const d=c.delta.funding.change;if(!d)continue;const u=j(d.outpoint);if(o.has(u)||s.has(u))continue;i.push({outpoint:d.outpoint,amount:d.amount,spk:n.spk,daaScore:r,address:n.address});s.add(u)}return i}onHead(t){const n=[];const r=this.#e.get(t.createdBy);if(r){this.commit(t.createdBy);n.push(t.createdBy)}return{accepted:n,lost:this.#t(t.createdBy,t.consumed)}}onConflict(t){return this.#t(t.winnerTxid,[t.outpoint])}#t(t,n){const r=new Set(n.map(j));const o=[];for(const i of[...this.#e.values()]){if(i.txid===t||i.status!=="pending"||!this.#e.has(i.txid))continue;if(i.consumes.some(s=>r.has(j(s))))o.push(...this.rollback(i.txid))}return o}#n(t){const n=this.#e.get(t);if(!n)throw new rt(`${t} is not a live row`);return n}#r(){const t=new Set;for(const n of this.#e.values())for(const r of n.consumes)t.add(j(r));return t}#o(t,n,r){let o=r;const i=[];if(o===void 0){for(const s of this.#e.values()){const c=s.delta.genesis?.find(d=>d.kind===t&&d.covenantId===n);if(c){o={outpoint:c.outpoint,state:c.state,amount:c.amount};i.push(s.txid);break}}if(o===void 0)return void 0}for(let s=0;s<=this.#e.size;s++){const c=j(o.outpoint);let d;for(const u of this.#e.values()){const l=t==="curve"?u.delta.curve:u.delta.pool;const f=l===void 0?void 0:"covenantId"in l?l.covenantId:l.poolId;if(l&&f===n&&j(l.fromOutpoint)===c){d={row:u,cell:{outpoint:l.toOutpoint,state:l.state,amount:l.amount}};break}if(u.delta.terminated?.some(b=>b.kind===t&&b.covenantId===n&&j(b.outpoint)===c))return void 0}if(d===void 0)return{...o,via:i};i.push(d.row.txid);o=d.cell}throw new rt(`${t} ${n}: the predicted chain loops`)}};var Xe=class extends Error{static{a(this,"TokenRecipientRefused")}outputIndex;constructor(t,n){super(`token recipients refused${t===void 0?"":` at output ${t}`}: ${n}`);this.name="TokenRecipientRefused";this.outputIndex=t}};var is=a(e=>e.toLowerCase(),"lower");function i4(e,t,n){const r=new Set(t.covenantOwners.map(is));const o=typeof t.userXOnly==="string"?L(t.userXOnly):t.userXOnly;if(o.length!==32)throw new Xe(void 0,"the user key is not a 32-byte x-only key");for(const{index:i,owner:s}of _1(e,t.tokenIds,n)){if(s.schemeByte===Bs){if(!$(s.identifier,o))throw new Xe(i,`tokens go to key ${h(s.identifier)}, not the connected key`)}else if(s.schemeByte===mt){if(!r.has(h(s.identifier)))throw new Xe(i,`tokens go to covenant ${h(s.identifier)}, which this transaction does not name`)}else{throw new Xe(i,`owner scheme 0x${s.schemeByte.toString(16).padStart(2,"0")} is neither the connected key nor a named covenant`)}}}a(i4,"checkTokenRecipients");function s4(e,t,n,r){const o=new Set(n.map(i=>`${i.scheme}:${is(i.identifier)}`));for(const{index:i,owner:s}of _1(e,t,r)){const c=`${s.schemeByte}:${h(s.identifier)}`;if(!o.has(c)){throw new Xe(i,`tokens go to owner ${h(s.identifier)} under scheme 0x${s.schemeByte.toString(16).padStart(2,"0")}, which this transaction does not name`)}}}a(s4,"checkTokenOwners");function _1(e,t,n){const r=new Set(t.map(is));let o;try{const c=JSON.parse(e.txJson);if(!Array.isArray(c.outputs))throw new Error("no outputs");o=c.outputs}catch{throw new Xe(void 0,"the transaction does not parse")}const i=new Map;for(const c of e.optimistic.cells.produced){if(c.outpoint.txid!==e.txid)throw new Xe(c.outpoint.index,"a produced cell names another transaction");if(i.has(c.outpoint.index))throw new Xe(c.outpoint.index,"two cells claim the same output");i.set(c.outpoint.index,c)}o.forEach((c,d)=>{const u=typeof c.covenant?.covenantId==="string"&&r.has(is(c.covenant.covenantId));if(u&&!i.has(d))throw new Xe(d,"a token output that no produced cell explains")});const s=[];for(const[c,d]of i){const u=o[c];if(u===void 0)throw new Xe(c,"a produced cell claims an output the transaction does not have");const l=u.covenant?.covenantId;if(typeof l!=="string"||!r.has(is(l)))throw new Xe(c,"a produced cell claims an output that is not bound to the token");let f;try{f=Je(n,d.state)}catch(g){throw new Xe(c,`the claimed state does not encode: ${g instanceof Error?g.message:String(g)}`)}const b=typeof u.scriptPublicKey==="string"&&/^0000([0-9a-f]{2})+$/i.test(u.scriptPublicKey)?L(u.scriptPublicKey.slice(4)):null;if(b===null||!$(b,Y(f)))throw new Xe(c,"the output script is not the claimed token state");s.push({index:c,owner:d.state.owner})}return s}a(_1,"claimedTokenOutputs");var ko=class extends Error{static{a(this,"CovenantCellNotFound")}role;expectedAmount;candidates;constructor(t,n,r){super(`no live ${t} cell holding ${n} tokens among ${r} covenant-owned candidate(s)`);this.name="CovenantCellNotFound";this.role=t;this.expectedAmount=n;this.candidates=r}};var mh="00".repeat(32);function ld(e,t,n){if(e.covenantId!==t||!en(e.state,n))return false;try{return Hs(e.state)===hn&&h(Vs(e.state))===mh}catch{return false}}a(ld,"isCovenantVaultCell");function I1(e){const t=new Set;const n=[];for(const r of e){const o=j(r.outpoint);if(t.has(o))continue;t.add(o);n.push(r)}return n}a(I1,"distinct");function L1(e,t,n,r,o=false){const i=I1(e).filter(d=>ld(d,t,n));const s=i.find(d=>d.state.amount===r.supply);if(s===void 0)throw new ko("supply",r.supply,i.length);const c=i.find(d=>d!==s&&d.state.amount===r.reserve);if(c===void 0&&o)throw new ko("reserve",r.reserve,i.length);return{supply:s,reserve:c}}a(L1,"selectCurveCells");function $1(e,t,n,r){const o=I1(e).filter(s=>ld(s,t,n));const i=o.find(s=>s.state.amount===r);if(i===void 0)throw new ko("pool-reserve",r,o.length);return i}a($1,"selectPoolReserve");var ot=we/10n;var R1=Ri;var Fa=2010000n;var hr=class extends Error{static{a(this,"FloorViolation")}rule;outputIndex;constructor(t,n,r){super(r);this.name="FloorViolation";this.rule=t;this.outputIndex=n}};function gh(e,t){for(const n of t){const r=`${e}: output ${n.index} "${n.label}"`;if(n.covenantId===void 0){if(n.value<Fa)throw new hr("p2pk-output",n.index,`${r} of ${n.value} sompi is below the P2PK floor ${Fa}`);continue}if(n.value<R1)throw new hr("covenant-output",n.index,`${r} of ${n.value} sompi is below the covenant output floor ${R1} (unminable)`);if(n.token===void 0)continue;try{Vr(n.token.state,L(n.covenantId),r)}catch(o){if(o instanceof ne)throw new hr("self-owned",n.index,o.message);throw o}if(n.token.ownerScheme!==mt&&n.value<ot){throw new hr("user-cell",n.index,`${r} is a user cell of ${n.value} sompi, below the ${ot} sompi minimum`)}}}a(gh,"assertOutputFloors");function ja(e){gh(e.plan.name,e.outputs.map(t=>{const n=t.binding?.covenantId??t.cell?.covenantId;const r=t.cell?.predicted.kind==="token"?{ownerScheme:t.cell.predicted.state.owner.schemeByte,state:t.cell.predicted.state}:void 0;return{index:t.index,label:t.label,value:t.value,covenantId:n,token:r}}))}a(ja,"assertFloors");var vo=class extends Error{static{a(this,"InsufficientFundsError")}needed;available;fragmented;total;constructor(t,n,r=false,o){super(r?`insufficient funds in at most the allowed inputs: need ${t} sompi, ${n} available in the largest UTXOs (${o} in all): combine UTXOs first`:`insufficient funds: need ${t} sompi, ${n} available`);this.name="InsufficientFundsError";this.needed=t;this.available=n;this.fragmented=r;this.total=o}};var yh=5000000n;var hh=we;var kh=3;var vh=8;var xh=60;var wh=130000n;var cs=class extends Error{static{a(this,"PinnedFundingGone")}outpoints;constructor(t){super(`pinned funding no longer available: ${t.join(", ")}`);this.name="PinnedFundingGone";this.outpoints=t}};var Sh=a((e,t)=>e.amount<t.amount?1:e.amount>t.amount?-1:0,"byAmountDesc");var ss=a(e=>e.reduce((t,n)=>t+n.amount,0n),"sum");function kr(e,t,n={}){if(t<0n)throw new Error("needed must be non-negative");const r=n.feeAllowance??yh;const o=n.maxInputs??kh;if(!Number.isInteger(o)||o<1)throw new Error("maxInputs must be a positive integer");const i=n.preferredChange??hh;const s=n.minChange??$0;const c=n.reserved??new Set;const d=t+r;const u=Math.max(o,n.escalateTo??vh);const l=Math.max(u,n.escalateMax??xh);const f=[...new Set([o,u,l])];const b=a(A=>d+BigInt(Math.max(0,A-o))*wh,"need");const g=new Set;const m=e.filter(A=>{const T=j(A.outpoint);if(c.has(T)||g.has(T))return false;g.add(T);return A.amount>0n}).sort(Sh);const y=n.required??new Set;if(y.size>0){const A=m.filter(R=>y.has(j(R.outpoint)));const T=[...y].filter(R=>!A.some(K=>j(K.outpoint)===R));if(T.length>0)throw new cs(T);if(A.length>l)throw new Error(`${A.length} required funding inputs exceed ${l}`);const I=m.filter(R=>!y.has(j(R.outpoint)));for(const R of f.filter(K=>K>=A.length)){for(const K of[i,s,0n]){const M=[...A];for(const N of[void 0,...I]){if(N!==void 0){if(M.length>=R)break;M.push(N)}if(ss(M)>=b(M.length)+K)return M}}}throw new vo(d,ss([...A,...I].slice(0,l)))}const v=m.filter(A=>A.amount>=d+i);if(v.length>0)return[v[v.length-1]];for(const A of f){for(const T of[i,s,0n]){const I=[];for(const R of m){if(I.length>=A)break;I.push(R);if(ss(I)>=b(I.length)+T)return I}}}const x=ss(m);const w=ss(m.slice(0,l));throw x>=d?new vo(d,w,true,x):new vo(d,w)}a(kr,"selectFunding");function w4(e){return new Set(e.map(j))}a(w4,"reserve");function U1(e,t,n,r){return{outpoint:e,amount:t,spk:n,daaScore:0n,address:r}}a(U1,"predictedFunding");function vr(e,t=gn,n=nt,r){const o=Mi(n,r);const i=_c(e,o);return{curve:i,pool:o,token:Ta(),networkId:t}}a(vr,"createContext");function He(e){if(e.curve.version!==e.pool.version)throw new Error(`context mixes a ${e.curve.version} curve with a ${e.pool.version} pool`);return e.curve.version}a(He,"contextSet");function pt(e){const t=He(e);return t==="v1"&&Xn(e.pool)?Ec:jl(t)}a(pt,"budgetsOf");function Ue(e){He(e);return"uncapped"}a(Ue,"poolLimitsOf");function Da(e){return N1(e.pool)}a(Da,"poolRoundingOf");var Ah=Object.freeze(["v1-2026-10-18-final","v1-kasseal-mainnet-tn10","v1-kasseal-mainnet","v1-kasseal-mainnet-2-tn10","v1-kasseal-mainnet-2","v1-kasseal-mainnet-3-tn10","v1-kasseal-mainnet-3"]);function N1(e){return e.version==="v1"&&(e.revision===void 0||Ah.includes(e.revision))?"nearest":"floor"}a(N1,"poolTemplateRounding");function Ha(e){const t=He(e);if(t==="v1")return Xn(e.pool)?Ec:Ni;throw new Error(`a ${t} context has no bindLp / addLiquidity / removeLiquidity budgets`)}a(Ha,"budgetsV3Of");function Va(e,t,n,r,o){return{label:t,outpoint:e.outpoint,amount:e.value,spk:Y(e.program),daaScore:e.daaScore,covenantId:e.covenantId,budget:n,sigscript:r,signature:o,cellKind:e.kind}}a(Va,"cellInput");function qt(e,t,n,r){const o=Zl(e.program,t);return Va(e,n,r,o.bytes,void 0)}a(qt,"tokenLeaderCovenantInput");function ht(e,t,n,r){const o=Ql(e.program,t);return Va(e,n,r,o.bytes,K1(o,"token-leader",e))}a(ht,"tokenLeaderSignedInput");function Sn(e,t,n=Te.tokenDelegatorCovenant){return Va(e,t,n,tu(e.program).bytes,void 0)}a(Sn,"tokenDelegatorCovenantInput");function xo(e,t,n=Te.tokenDelegatorSigned){const r=nu(e.program);return Va(e,t,n,r.bytes,K1(r,"token-delegator",e))}a(xo,"tokenDelegatorSignedInput");function K1(e,t,n){if(e.signatureOffset===void 0)throw new Error("sigscript has no signature slot");return{kind:t,offset:e.signatureOffset,signer:h(n.state.owner.identifier),sighashType:1}}a(K1,"slotOf");function on(e,t,n,r){return Va(e,t,n,r,void 0)}a(on,"curveInput");function an(e,t,n,r){return Va(e,t,n,r,void 0)}a(an,"poolInput");function de(e,t="funding (P2PK)"){return M0(e,t,Te.p2pk,qi)}a(de,"kasInput");function le(e,t,n,r,o,i){if(o!==void 0)Vr(n,L(o),t);if(n.owner.schemeByte===mt&&o!==void 0&&h(n.owner.identifier)===o)throw new Error(`${t}: self-owned token output`);const s=Je(e.token,n);const c={predicted:{kind:"token",state:n},program:s,covenantId:o};return{label:t,value:r,spk:Y(s),binding:o!==void 0&&i!==void 0?{authorizingInput:i,covenantId:o}:void 0,cell:c}}a(le,"tokenOutput");function An(e,t,n,r,o,i){const s=Ca(e.curve,n);const c={predicted:{kind:"curve",state:n},program:s,covenantId:o};return{label:t,value:r,spk:Y(s),binding:o!==void 0&&i!==void 0?{authorizingInput:i,covenantId:o}:void 0,cell:c}}a(An,"curveOutput");function Et(e,t,n,r,o,i){const s=Fi(e.pool,n);const c={predicted:{kind:"pool",state:n},program:s,covenantId:o};return{label:t,value:r,spk:Y(s),binding:o!==void 0&&i!==void 0?{authorizingInput:i,covenantId:o}:void 0,cell:c}}a(Et,"poolOutput");function er(e,t,n){return{label:e,value:t,spk:n,binding:void 0,cell:void 0}}a(er,"plainOutput");function Ne(e,t="change",n=10000000n){return{label:t,spk:e,binding:void 0,cell:void 0,minimum:0n,dropBelow:n}}a(Ne,"changeTo");function wo(e,t="payout",n=10000000n){return{label:t,spk:e,binding:void 0,cell:void 0,minimum:n,dropBelow:void 0}}a(wo,"payoutTo");function Hu(e,t,n,r,o,i){Vr(n,L(r),t);const s=Je(e.token,n);return{label:t,spk:Y(s),binding:{authorizingInput:o,covenantId:r},cell:{predicted:{kind:"token",state:n},program:s,covenantId:r},minimum:i,dropBelow:void 0}}a(Hu,"tokenResidual");var So=class extends Error{static{a(this,"ProofNotBound")}verdict;operation;constructor(t,n){const r=typeof n==="string"?n:void 0;super(`${t} refused: the token's launch proof is ${r===void 0?"not supplied":`'${r}'`}, not 'bound'; C's singleton is proven only by the launch proof`);this.name="ProofNotBound";this.verdict=r;this.operation=t}};var tr=class extends Error{static{a(this,"ShapeNotSupported")}constructor(t){super(t);this.name="ShapeNotSupported"}};var Ao=class extends Error{static{a(this,"LineageMismatch")}expected;actual;constructor(t,n,r){super(`${t} names token lineage ${r}, the order is for ${n}: refused`);this.name="LineageMismatch";this.expected=n;this.actual=r}};var nr=class extends Error{static{a(this,"TokenAmountMismatch")}expected;actual;constructor(t,n,r){super(`${t} would take ${r} tokens (whole lots of the curve program), the order approved ${n}: refused`);this.name="TokenAmountMismatch";this.expected=n;this.actual=r}};var To=class extends Error{static{a(this,"UnknownCurveTemplate")}constructor(t="curve program matches no known curve template"){super(t);this.name="UnknownCurveTemplate"}};var Co=class extends Error{static{a(this,"CovenantCellValue")}cell;value;minimum;constructor(t,n,r){super(`${t}: served value ${n} sompi is below the curve's token cell value ${r}; refused`);this.name="CovenantCellValue";this.cell=t;this.value=n;this.minimum=r}};var xr=class extends Error{static{a(this,"LpUnsafe")}reason;constructor(t){super(`deposit refused: the indexer does not confirm this pool's LP invariants${t===void 0?"":` (${t})`}`);this.name="LpUnsafe";this.reason=t}};var Po=class extends Error{static{a(this,"CurveNotOfProof")}curveId;expectedCurveId;constructor(t,n){super(`curve ${t} is not the curve ${n} the launch proof names`);this.name="CurveNotOfProof";this.curveId=t;this.expectedCurveId=n}};var Eo=class extends Error{static{a(this,"PoolNotOfProof")}poolId;expectedPoolId;constructor(t,n){super(`pool ${t} is not the pool ${n} the launch proof recomputes from the graduation`);this.name="PoolNotOfProof";this.poolId=t;this.expectedPoolId=n}};var wr=class extends Error{static{a(this,"NetBoundExceeded")}kind;actual;bound;feeSompi;constructor(t,n,r,o,i){super(n==="all-in"?`${t}: ${r} sompi would leave the wallet (network fee ${i}), above the ${o} shown as the most to pay`:`${t}: ${r} sompi would reach the wallet net (network fee ${i}), below the ${o} shown as the least to receive`);this.name="NetBoundExceeded";this.kind=n;this.actual=r;this.bound=o;this.feeSompi=i}};var Oo=class extends Error{static{a(this,"NeedsConsolidation")}cells;transactions;constructor(t,n){super(`needs ${n} consolidation transaction(s) over ${t.length} cells first`);this.name="NeedsConsolidation";this.cells=t;this.transactions=n}};var _o=class extends Error{static{a(this,"NeedsSplit")}cell;carve;constructor(t,n){super(`needs a split of ${t.txid}:${t.index} carving ${n} first`);this.name="NeedsSplit";this.cell=t;this.carve=n}};var Tn=2010000n;var X4=we/10n;function Lo(e){return e===void 0?new Uint8Array(0):Zp(e)}a(Lo,"tradePayload");function Sr(e,t,n=false){if(n)return;if(t!=="bound")throw new So(e,t)}a(Sr,"requireProofBound");function Ot(e,t,n){const r=h(t);if(n!==void 0&&r!==n.toLowerCase())throw new Ao(e,n.toLowerCase(),r);return r}a(Ot,"requireLineage");var $o=a(e=>(e??[]).reduce((t,n)=>t+n.amount,0n),"fundingSum");function Ga(e,t,n,r){if(r!==void 0&&t>r)throw new wr(e,"all-in",t,r,n)}a(Ga,"assertAllIn");function qa(e,t,n,r){if(r!==void 0&&t<r)throw new wr(e,"net-out",t,r,n)}a(qa,"assertNetOut");function Pe(e){return Na(e.built,{feerate:pu(e.built.plan),produces:e.roles.map((t,n)=>({index:n,role:t})),optimistic:e.optimistic})}a(Pe,"toBuilt");function ke(e){return e.feerate===void 0?{feeMargin:e.feeMargin??0n}:{feeMargin:e.feeMargin??0n,feerate:e.feerate}}a(ke,"feeFields");function ve(e,t,n,r={}){if(t.length!==e.outputs.length)throw new Error(`${e.name}: ${t.length} roles for ${e.outputs.length} fixed outputs`);const o=uo(e);ja(o);const i=[...t];if(o.outputs.length>e.outputs.length){if(n===void 0)throw new Error(`${e.name}: residual output without a role`);i.push(n)}return{built:o,roles:i,optimistic:ds(o,i,r)}}a(ve,"finish");var Th=new Set(["change","payout"]);function ds(e,t,n={}){const r=a(T=>({txid:e.txid,index:T}),"at");const o=[];const i=[];const s=[];const c=[];for(const T of e.plan.inputs){const I={txid:T.outpoint.txid,index:T.outpoint.index};if(T.cellKind==="vault"||T.cellKind==="deposit"||T.cellKind==="splitter"||T.cellKind==="order"||T.cellKind==="anchor"||T.cellKind==="dist-key"||T.cellKind==="lock"||T.cellKind==="lock-factory")o.push(I);else if(T.covenantId===void 0)i.push(I);else if(T.cellKind==="token")o.push(I);else if(T.cellKind==="curve")s.push({covenantId:T.covenantId,outpoint:I});else if(T.cellKind==="pool")c.push({covenantId:T.covenantId,outpoint:I});else throw new Error(`${e.plan.name}: covenant input "${T.label}" has no cell kind`)}const d=[];const u=[];const l=[];let f;for(const T of e.outputs){const I=T.cell?.predicted;const R=T.binding?.covenantId??T.cell?.covenantId;if(I!==void 0&&R===void 0)throw new Error(`${e.plan.name}: output ${T.index} has a predicted cell but no covenant id`);const K=a(()=>io(R,`${e.plan.name}: covenant id of the predicted cell at output ${T.index}`),"idOf");if(I?.kind==="token")d.push({outpoint:r(T.index),state:I.state,amount:T.value});else if(I?.kind==="curve")u.push({covenantId:K(),outpoint:r(T.index),state:I.state,amount:T.value});else if(I?.kind==="pool")l.push({covenantId:K(),outpoint:r(T.index),state:I.state,amount:T.value});else if(Th.has(t[T.index])){if(f!==void 0)throw new Error(`${e.plan.name}: more than one change output`);f={outpoint:r(T.index),amount:T.value}}}for(const T of n.reserveOutputs??[])i.push(r(T));if(s.length>1||u.length>1||c.length>1||l.length>1)throw new Error(`${e.plan.name}: more than one singleton of a kind`);const b=[];const g=[];let m;let y;const[v,x,w,A]=[s[0],u[0],c[0],l[0]];if(v&&x){if(v.covenantId!==x.covenantId)throw new Error(`${e.plan.name}: curve continuation of another lineage`);m={covenantId:v.covenantId,fromOutpoint:v.outpoint,toOutpoint:x.outpoint,state:x.state,amount:x.amount}}else if(x)b.push({kind:"curve",covenantId:x.covenantId,outpoint:x.outpoint,state:x.state,amount:x.amount});else if(v)g.push({kind:"curve",covenantId:v.covenantId,outpoint:v.outpoint});if(w&&A){if(w.covenantId!==A.covenantId)throw new Error(`${e.plan.name}: pool continuation of another lineage`);y={poolId:w.covenantId,fromOutpoint:w.outpoint,toOutpoint:A.outpoint,state:A.state,amount:A.amount}}else if(A)b.push({kind:"pool",covenantId:A.covenantId,outpoint:A.outpoint,state:A.state,amount:A.amount});else if(w)g.push({kind:"pool",covenantId:w.covenantId,outpoint:w.outpoint});return{...m?{curve:m}:{},...y?{pool:y}:{},cells:{consumed:o,produced:d},funding:f?{reserved:i,change:f}:{reserved:i},...b.length>0?{genesis:b}:{},...g.length>0?{terminated:g}:{}}}a(ds,"deltaOf");function Ar(e,t){if(t.state.phase!==Bt)throw new Error(`curve is in phase ${t.state.phase}, not active`);if(t.state.tokenCovId.every(n=>n===0))throw new Error("curve state has no token lineage (not initialised)");if(t.program.length!==e.curve.bytecode.length)throw new Error("curve cell program length does not match the template");return h(t.state.tokenCovId)}a(Ar,"requireActiveCurve");function ud(e,t,n){const r=h(t.state.tokenCovId);if(n.covenantId!==r)throw new Error(`supply cell lineage ${n.covenantId} != curve's T ${r}`);if(!en(n.state,t.covenantId))throw new Error("supply cell is not owned by the curve");const o=(e.curve.params.curveLots-t.state.lotsSold)*e.curve.params.lot;if(n.state.amount!==o)throw new Error(`supply cell holds ${n.state.amount}, expected ${o} (is this the reserve cell?)`);return r}a(ud,"requireSupplyCell");function Wa(e,t){const n=e.curve.params.tokenCellKas;for(const{cell:r,name:o}of t){if(r.value<n)throw new Co(`${o} cell ${r.outpoint.txid}:${r.outpoint.index}`,r.value,n)}return BigInt(t.length)*n}a(Wa,"curveOwnedCellValue");function Cn(e,t){const n=He(e);const r=zo(t.state);if(r!==Wo(n))throw new Error(`a ${r} pool cell in a ${n} context`);const{stateOffset:o,stateLength:i,templateHash:s}=e.pool;if(t.program.length!==e.pool.bytecode.length||Jt(t.program,o,i)!==s){throw new Error(`the pool cell's program is not this context's ${n} pool template`)}if(ze(n)){const c=t.state;const d=t.value-(c.kasScaled+c.feeAccruedScaled)*he;$e({kasScaled:c.kasScaled,tokenReserve:c.tokenReserve,feeAccruedScaled:c.feeAccruedScaled,dust:d,lpShares:c.lpShares},Ue(e))}return n}a(Cn,"requirePoolOfContext");function za(e,t){const n=h(e.state.tokenCovId);if(t.covenantId!==n)throw new Error("pool token cell is not of lineage T");if(!en(t.state,e.covenantId))throw new Error("token cell is not pool-owned");if(t.state.amount!==e.state.tokenReserve)throw new Error(`pool token cell holds ${t.state.amount}, state says ${e.state.tokenReserve}`);const r=Ae(t.state);if(r.borrowScheme!==0||r.borrowGuard.some(o=>o!==0))throw new Error("pool token cell has a borrow scheme or guard set; it is not the pool reserve");return n}a(za,"requirePoolToken");function Tr(e,t,n){if(e.covenantId!==t)throw new Error("user cell is not of lineage T");if(en(e.state,n))throw new Error("leader cell is owned by the venue");if(e.state.owner.schemeByte!==0)throw new Error(`user cell owner scheme ${e.state.owner.schemeByte} is not p2pk-schnorr/v1; the builder signs only key-owned leaders`)}a(Tr,"requireUserCell");function Fe(e,t,n,r,o){const i=Qf({inputs:t.map((s,c)=>({state:s.state,index:c,kasValue:s.value})),outputs:n.map((s,c)=>o?.[c]===void 0?{state:s,index:c}:{state:s,index:c,kasValue:o[c]}),witness:r,covenantId:L(e)});if(i.selfOwnedOutputs.length>0)throw new Error(`token output ${i.selfOwnedOutputs[0]} would be self-owned (anyone-can-spend)`)}a(Fe,"checkTokenFamily");function Vu(e,t,n){if(e===void 0)throw new Error(`the template names no ${t} script`);if(n==="p2pk"?!dt(e):!Oc(e))throw new Error(`the ${t} script is not a version-0 ${n==="p2pk"?"P2PK":"P2SH"} script`);return B0(e).script}a(Vu,"payeeScript");function B1(e){return e!==void 0&&e.length===37?"p2sh":"p2pk"}a(B1,"treasuryForm");function ls(e,t,n,r=false){if(r){if(e.creator!==0n)throw new Error("a treasury-only payout with a creator share");return{outputs:[er(n.treasury,e.treasury,Vu(t.treasurySpk,"treasury",B1(t.treasurySpk)))],roles:["treasury"]}}return{outputs:[er(n.treasury,e.treasury,Vu(t.treasurySpk,"treasury",B1(t.treasurySpk))),er(n.creator,e.creator,Vu(t.creatorSpk,"creator","p2pk"))],roles:["treasury","creator"]}}a(ls,"payoutOutputs");var Pn=Uint8Array.of(0);var _t=(()=>{const e=new Uint8Array(66);e[0]=0;return e})();var Io=class extends Error{static{a(this,"ForeignCovenantInput")}tx;outpoint;constructor(t,n,r){super(`${t}: input ${n} ${r}: refused (a foreign covenant cell in a curve or pool transaction is taken by its submitter)`);this.name="ForeignCovenantInput";this.tx=t;this.outpoint=n}};var Ch=a(e=>e.length===35&&e[0]===170&&e[1]===32&&e[34]===135,"isP2shScript");function Ye(e,t,n){const r=new Set(t.map(o=>o.toLowerCase()));for(const o of e.inputs){const i=`${o.outpoint.txid}:${o.outpoint.index}`;if(o.cellKind===void 0){if(o.covenantId!==void 0)throw new Io(e.name,i,`is a funding input bound to covenant ${o.covenantId}`);const s=n!==void 0&&n.outpoint.txid===o.outpoint.txid&&n.outpoint.index===o.outpoint.index&&h(n.spk)===h(o.spk);if(Ch(o.spk)&&!s)throw new Io(e.name,i,"is a funding input paying a P2SH script");continue}if(o.covenantId===void 0||!r.has(o.covenantId.toLowerCase()))throw new Io(e.name,i,`carries lineage ${String(o.covenantId)}, not one of the transaction's own`)}}a(Ye,"requireOwnLineages");function Ph(e,t){const n=Ae(e);return et({amount:t,owner:n.owner,ownerScheme:n.ownerScheme,borrowScheme:hn,borrowGuard:Ve,extensionCommitment:n.extensionCommitment})}a(Ph,"carvedState");function Gu(e,t){return et({...Ae(e),amount:t})}a(Gu,"withAmount");var fd=250000000n;function us(e){const t=e/2n;const n=t<fd?fd:t;const r=e-n<fd?fd:e-n;const o=n+r-e;return{carveValue:n,restValue:r,topUp:o>0n?o:0n}}a(us,"splitValues");function pd(e){const{ctx:t,cell:n,carve:r,funding:o}=e;const i=n.covenantId;if(n.state.owner.schemeByte!==0)throw new Error("split: the builder signs only key-owned cells (owner scheme 0x00)");if(r<=0n||r>=n.state.amount)throw new Error(`split: carve ${r} must be positive and below the cell's ${n.state.amount}`);if(o.length===0)throw new Error("split needs a funding input for the fee");const s=us(n.value);const c=e.carveValue??s.carveValue;const d=e.restValue??(e.carveValue===void 0?s.restValue:n.value-c);const u=Gu(n.state,n.state.amount-r);const l=Ph(n.state,r);Fe(i,[n],[u,l],_t);const f={name:`split ${n.state.amount} -> ${n.state.amount-r} + ${r}`,inputs:[ht(n,[u,l],"KCC20 cell (T leader, 00 || sig)",Vt(1,2)),...o.map(b=>de(b,"owner KAS (fee)"))],outputs:[le(t,"rest (owner kept)",u,d,i,0),le(t,"carved cell",l,c,i,0)],residual:Ne(Q(e.changeAddress)),genesisGroups:[],payload:new Uint8Array(0),...ke(e)};return{...ve(f,["token-user","token-user"],"change"),restNext:u,carvedNext:l}}a(pd,"buildSplit");function qu(e){const{ctx:t,cells:n,owner:r}=e;if(n.length<2||n.length>3)throw new Error("consolidate takes 2 or 3 cells (max_token_inputs = 3)");const o=n[0].covenantId;const i=h(r.xOnlyPubkey);const s=new Set;for(const m of n){if(m.covenantId!==o)throw new Error("cells are of different lineages");if(m.state.owner.schemeByte!==0||h(m.state.owner.identifier)!==i)throw new Error("every cell must be p2pk-owned by the same key");const y=`${m.outpoint.txid}:${m.outpoint.index}`;if(s.has(y))throw new Error(`cell ${y} appears twice`);s.add(y)}const c=n.reduce((m,y)=>m+y.state.amount,0n);const d=Gu(n[0].state,c);Fe(o,n,[d],_t);const u=e.funding??[];const l=[ht(n[0],[d],"KCC20 leader (00 || sig)",Vt(n.length,1)),...n.slice(1).map((m,y)=>xo(m,`KCC20 delegator ${y+1} (sig)`)),...u.map(m=>de(m,"owner KAS (fee)"))];const f=`consolidate ${n.length}->1`;const b=u.length===0?{name:f,inputs:l,outputs:[],residual:Hu(t,"consolidated cell",d,o,0,ot),genesisGroups:[],payload:new Uint8Array(0),...ke(e)}:{name:f,inputs:l,outputs:[le(t,"consolidated cell",d,n.reduce((m,y)=>m+y.value,0n),o,0)],residual:Ne(Q(r.address)),genesisGroups:[],payload:new Uint8Array(0),...ke(e)};const g=u.length===0?ve(b,[],"token-user"):ve(b,["token-user"],"change");return{...g,next:d}}a(qu,"buildConsolidate");var Pr=class extends Error{static{a(this,"InsufficientTokensError")}needed;available;constructor(t,n){super(`insufficient tokens: need ${t}, ${n} available`);this.name="InsufficientTokensError";this.needed=t;this.available=n}};var fs=a((e,t)=>e.amount<t.amount?1:e.amount>t.amount?-1:0,"byAmountDesc");var bd=a(e=>`step${e}:merged`,"mergedId");var md=a(e=>`step${e}:rest`,"restId");var Cr=a(e=>`step${e}:carved`,"carvedId");function M1(e,t,n=Nn){const r=[...e].sort(fs);for(let o=2;o<=Math.min(n,r.length);o++){const i=[];const s=a((c,d)=>{if(i.length===o)return d===0n;for(let u=c;u<r.length;u++){const l=r[u];if(l.amount>d)continue;i.push(l);if(s(u+1,d-l.amount))return true;i.pop()}return false},"rec");if(s(0,t))return i}return void 0}a(M1,"exactSubset");function zu(e,t,n=Nn,r=0){return F1([...e].sort(fs),t,n,r)}a(zu,"planMerges");function F1(e,t,n,r){if(n<2)throw new Error("a merge needs at least 2 inputs");if(e.length===0)throw new Error("no cells");const o=[...e];const i=[];for(;;){const s=o[0];if(t!==void 0&&s.amount>=t)return{steps:i,largest:s};if(o.length===1){if(t!==void 0)throw new Pr(t,s.amount);return{steps:i,largest:s}}const c=[s];let d=s.amount;for(let f=1;f<o.length&&c.length<n;f++){if(t!==void 0&&d>=t)break;c.push(o[f]);d+=o[f].amount}const u=r+i.length;const l={id:bd(u),amount:d};i.push({kind:"merge",inputs:c.map(f=>f.id),output:l.id,amount:d});o.splice(0,c.length);o.unshift(l)}}a(F1,"planMergesFrom");function Ju(e,t,n=Nn){if(t<=0n)throw new Error("target must be positive");const r=new Set;for(const f of e){if(f.amount<=0n)throw new Error(`cell ${f.id} holds no tokens`);if(r.has(f.id))throw new Error(`cell ${f.id} listed twice`);r.add(f.id)}const o=e.reduce((f,b)=>f+b.amount,0n);if(o<t)throw new Pr(t,o);const i=e.find(f=>f.amount===t);if(i)return{target:t,kind:"exact",steps:[],result:i.id};const s=e.filter(f=>f.amount>t).sort(fs);if(s.length>0){const f=s[s.length-1];return{target:t,kind:"split",steps:[{kind:"split",input:f.id,carve:t,rest:md(0),carved:Cr(0)}],result:Cr(0)}}const c=M1(e,t,n);if(c)return{target:t,kind:"merge",steps:[{kind:"merge",inputs:c.map(f=>f.id),output:bd(0),amount:t}],result:bd(0)};const{steps:d,largest:u}=zu(e,t,n);if(u.amount===t)return{target:t,kind:"merge",steps:d,result:u.id};const l=d.length;return{target:t,kind:"merge+split",steps:[...d,{kind:"split",input:u.id,carve:t,rest:md(l),carved:Cr(l)}],result:Cr(l)}}a(Ju,"planExactCell");function Eh(e,t,n,r=Nn){if(n.size===0)return Ju(e,t,r);if(t<=0n)throw new Error("target must be positive");const o=e.reduce((b,g)=>b+g.amount,0n);if(o<t)throw new Pr(t,o);const i=e.filter(b=>n.has(b.id)).sort(fs);if(i.length===0)throw new Error("none of the cells the plan must spend is listed");const s=i.find(b=>b.amount===t);if(s)return{target:t,kind:"exact",steps:[],result:s.id};const c=i.filter(b=>b.amount>t);if(c.length>0){const b=c[c.length-1];return{target:t,kind:"split",steps:[{kind:"split",input:b.id,carve:t,rest:md(0),carved:Cr(0)}],result:Cr(0)}}const d=i[0];const{steps:u,largest:l}=F1([d,...e.filter(b=>b.id!==d.id).sort(fs)],t,r,0);if(l.amount===t)return{target:t,kind:"merge",steps:u,result:l.id};const f=u.length;return{target:t,kind:"merge+split",steps:[...u,{kind:"split",input:l.id,carve:t,rest:md(f),carved:Cr(f)}],result:Cr(f)}}a(Eh,"planExactCellSpending");function S6(e,t){const n=new Map(e.map(o=>[o.id,o.amount]));const r=a(o=>{const i=n.get(o);if(i===void 0)throw new Error(`plan spends ${o}, which is not live`);n.delete(o);return i},"take");for(const o of t){if(o.kind==="merge"){const i=o.inputs.reduce((s,c)=>s+r(c),0n);if(i!==o.amount)throw new Error(`merge ${o.output}: inputs hold ${i}, step says ${o.amount}`);n.set(o.output,i)}else{const i=r(o.input);if(o.carve<=0n||o.carve>=i)throw new Error(`split of ${o.input}: carve ${o.carve} of ${i}`);n.set(o.rest,i-o.carve);n.set(o.carved,o.carve)}}return n}a(S6,"applyPlan");var j1=a(e=>e.map(t=>({id:j(t.outpoint),amount:t.state.amount})),"planCellsOf");function Wu(e,t){const n=e.built.outputs[t];if(n?.cell?.predicted.kind!=="token"||n.cell.covenantId===void 0)throw new Error(`${e.built.plan.name}: output ${t} is not a token cell`);return{kind:"token",outpoint:{txid:e.built.txid,index:t},value:n.value,covenantId:n.cell.covenantId,program:n.cell.program,state:n.cell.predicted.state,daaScore:0n}}a(Wu,"producedCell");function D1(e,t){const{ctx:n,owner:r}=e;const o=new Map(e.cells.map(f=>[j(f.outpoint),f]));let i=[...e.funding];const s=Q(r.address);const c=a(f=>{const b=o.get(f);if(!b)throw new Error(`plan step needs cell ${f}, which is not available`);o.delete(f);return b},"take");const d=a((f,b)=>{const g=new Set(b.map(y=>j(y.outpoint)));i=i.filter(y=>!g.has(j(y.outpoint)));const m=f.optimistic.funding.change;if(m)i.push({outpoint:m.outpoint,amount:m.amount,spk:s,daaScore:0n,address:r.address})},"spendFunding");const u={...e.feeMargin===void 0?{}:{feeMargin:e.feeMargin},...e.feerate===void 0?{}:{feerate:e.feerate}};const l=[];for(const f of t){if(f.kind==="merge"){const b=f.inputs.map(c);let g;try{g=qu({ctx:n,cells:b,owner:r,...u})}catch(m){if(!(m instanceof Tt))throw m;const y=kr(i,0n,e.fundingOptions);g=qu({ctx:n,cells:b,owner:r,funding:y,...u});d(g,y)}l.push(g);o.set(f.output,Wu(g,0))}else{const b=c(f.input);const g=kr(i,us(b.value).topUp,e.fundingOptions);const m=pd({ctx:n,cell:b,carve:f.carve,changeAddress:r.address,funding:g,...u});d(m,g);l.push(m);o.set(f.rest,Wu(m,0));o.set(f.carved,Wu(m,1))}}return{transactions:l,cells:o}}a(D1,"buildSteps");function ps(e){const t=new Set((e.mustSpend??[]).map(j));const n=Eh(j1(e.cells),e.target,t);const{transactions:r,cells:o}=D1(e,n.steps);const i=o.get(n.result);if(!i||i.state.amount!==e.target)throw new Error(`chain did not produce a cell of ${e.target}`);return{plan:n,transactions:r,totalFee:r.reduce((s,c)=>s+c.built.fee,0n),cell:i}}a(ps,"buildExactCellChain");function H1(e){const t=j1(e.cells);if(t.length<2)throw new Error("nothing to consolidate: fewer than two cells");let n;const r=e.target;if(r!==void 0){const c=t.reduce((u,l)=>u+l.amount,0n);if(c<r)throw new Pr(r,c);if(t.some(u=>u.amount>=r))throw new Error(`a cell of at least ${r} already exists`);const d=M1(t,r);n=d?[{kind:"merge",inputs:d.map(u=>u.id),output:bd(0),amount:r}]:zu(t,r).steps}else{n=zu(t,void 0).steps}const{transactions:o,cells:i}=D1(e,n);const s=n[n.length-1];if(s.kind!=="merge")throw new Error("unreachable: a merge chain ends with a merge");return{plan:{steps:n},transactions:o,totalFee:o.reduce((c,d)=>c+d.built.fee,0n),cell:io(i.get(s.output),`the merged cell ${s.output}`)}}a(H1,"buildMergeChain");function On(e){const t=e.value-(e.state.kasScaled+e.state.feeAccruedScaled)*he;if(t<0n||t>=he)throw new Error(`pool cell value ${e.value} is inconsistent with its state (dust ${t})`);return{kasScaled:e.state.kasScaled,tokenReserve:e.state.tokenReserve,feeAccruedScaled:e.state.feeAccruedScaled,dust:t}}a(On,"poolMathState");var En=class extends Error{static{a(this,"UnsafeScript")}constructor(t){super(t);this.name="UnsafeScript"}};function N6(e){if(e.length!==32)throw new Error("a key-locked script needs a 32-byte x-only key");return _(Uint8Array.of(32),e,Uint8Array.of(172))}a(N6,"keyLockedRedeem");function gd(e){return e.length===34&&e[0]===32&&e[33]===172?e.subarray(1,33):void 0}a(gd,"keyOfLockedRedeem");var Oh=a((e,t)=>t.length>0&&e.length>=t.length&&h(e.subarray(e.length-t.length))===h(t),"endsWith");function yd(e,t){if(e.length===0)throw new En("an empty script can be satisfied by anyone");if(gd(e)!==void 0)return;if(t.allowAnyScript!==true)throw new En("only a key-locked script (<x-only key> OP_CHECKSIG) is accepted; pass allowAnyScript for another one");for(const n of t.programs){const r=n.subarray(Math.max(0,n.length-256));if(Oh(e,r))throw new En("the script is a pool or token program: tokens delivered to it would be locked for good")}}a(yd,"assertSafeRedeem");function V1(e){const{ctx:t,pool:n,poolToken:r,buyer:o,kasInScaled:i,funding:s}=e;Cn(t,n);Ot(`pool ${n.covenantId}`,n.state.tokenCovId,e.tokenId);const c=za(n,r);const d=e.userCellValue??Ht;if(d<ot)throw new Error(`user cell value ${d} is below the ${ot} sompi minimum`);if(i<=0n)throw new Error("kasInScaled must be positive");if(s.length===0)throw new Error("swap needs at least one funding input");const u=Xi(On(n),i,Ue(t),Da(t));if(u.tokenOut<=0n)throw new Error(`a leg of ${i} scaled units buys no tokens`);if(e.minTokensOut!==void 0&&u.tokenOut<e.minTokensOut)throw new Error(`quote ${u.tokenOut} tokens is below minOut ${e.minTokensOut}`);const l=e.minTokensOut??u.tokenOut;const f={...n.state,kasScaled:u.pool.kasScaled,tokenReserve:u.pool.tokenReserve,feeAccruedScaled:u.pool.feeAccruedScaled};const b=Ce(u.pool.tokenReserve,n.covenantId);const g=e.deliverToScript;if(g!==void 0&&!Xn(t.pool))throw new Error("swap-and-deposit needs a composable pool (Kasseal-mainnet-2)");if(g!==void 0){yd(g.redeem,{...g.allowAnyScript===void 0?{}:{allowAnyScript:g.allowAnyScript},programs:[n.program,r.program]});if(g.scriptFunding<Fa)throw new Error(`script funding ${g.scriptFunding} is below the ${Fa} sompi output minimum`)}const m=g===void 0?Jn(u.tokenOut,o.xOnlyPubkey):ql(u.tokenOut,mr(g.redeem));Fe(c,[r],[b,m],Pn);const y=po(u.pool);if(y!==n.value+i*he)throw new Error("pool value arithmetic mismatch");const v={name:`swapKasForTokens(${i})`,inputs:[an(n,`POOL swapKasForTokens(${i}, ${l}, ${Xn(t.pool)?`${Vi.reserveK}, ${Vi.restK}`:"user"})`,pt(t).poolSwapKasForTokens,iu(t.pool,n.program,i,pr(m,t.token.templateHash),l)),qt(r,[b,m],"KCC20 pool cell (T leader, witness 00)",Te.tokenLeaderCovenant2Out),...s.map(A=>de(A,"buyer KAS"))],outputs:[Et(t,"POOL'",f,y,n.covenantId,0),le(t,"rest (owner P)",b,r.value,c,1),le(t,g===void 0?"user cell":"deposit cell (owned by the script)",m,d,c,1),...g===void 0?[]:[er("script funding (P2SH)",g.scriptFunding,Y(g.redeem))]],residual:Ne(Q(o.address),"change (buyer)"),genesisGroups:[],payload:Lo(e.partnerTag),...ke(e)};Ye(v,[n.covenantId,c]);const x=ve(v,g===void 0?["pool","token-rest","token-user"]:["pool","token-rest","token-user","deposit"],"change");const w=i*he+d+(g?.scriptFunding??0n)+x.built.fee;Ga(v.name,w,x.built.fee,e.maxAllIn);return{...x,poolNext:f,tokensOut:u.tokenOut,restNext:b,userNext:m,allIn:w}}a(V1,"buildSwapKasForTokens");function Xu(e){const{ctx:t,pool:n,poolToken:r,userCell:o,seller:i}=e;Cn(t,n);Ot(`pool ${n.covenantId}`,n.state.tokenCovId,e.tokenId);const s=za(n,r);const c=e.extraUserCells??[];const d=e.scriptAuthority;if((c.length>0||d!==void 0)&&!Xn(t.pool))throw new Error("a multi-cell or script-authorized sell needs a composable pool (Kasseal-mainnet-2)");if(c.length>1)throw new Error("KCC-20 carries at most three token inputs: the seller's cell, one more and the reserve");if(d===void 0)Tr(o,s,n.covenantId);else{if(o.covenantId!==s)throw new Error("user cell is not of lineage T");if(o.state.owner.schemeByte!==3||h(o.state.owner.identifier)!==h(mr(d.redeem)))throw new Error("the cell is not owned by the authority script");yd(d.redeem,{...d.allowAnyScript===void 0?{}:{allowAnyScript:d.allowAnyScript},programs:[n.program,r.program]});const K=gd(d.redeem);if(K!==void 0&&h(K)!==d.signerXOnly.toLowerCase())throw new En("the authority script is locked to another key than the signer")}for(const K of c)Tr(K,s,n.covenantId);const u=c.reduce((K,M)=>K+M.state.amount,o.state.amount);const l=bo(On(n),u,Ue(t),Da(t));if(e.minOutScaled!==void 0&&l.kasOutScaled<e.minOutScaled)throw new Error(`net payout ${l.kasOutScaled} is below minOut ${e.minOutScaled}`);const f=e.minOutScaled??l.kasOutScaled;const b={...n.state,kasScaled:l.pool.kasScaled,tokenReserve:l.pool.tokenReserve,feeAccruedScaled:l.pool.feeAccruedScaled};const g=Ce(l.pool.tokenReserve,n.covenantId);const m=2+c.length+1;const y=d===void 0?_t:Uint8Array.of(Di,m);Fe(s,[o,...c,r],[g],y);const v=po(l.pool);if(v!==n.value-l.kasOutScaled*he)throw new Error("pool value arithmetic mismatch");const x=d===void 0?ht(o,[g],"KCC20 user cell (T leader, 00 || sig)",Vt(2+c.length,1)):(()=>{const K=Hi(o.program,[g],y);return{label:"KCC20 script-owned cell (T leader, 00 || authority input)",outpoint:o.outpoint,amount:o.value,spk:Y(o.program),daaScore:o.daaScore,covenantId:o.covenantId,budget:Te.tokenLeaderCovenant1Out,sigscript:K.bytes,signature:void 0,cellKind:"token"}})();const w={reserveK:BigInt(1+c.length),mergedK:0n};const A=d===void 0?[]:[{label:"authority script (P2SH, the signer's key)",outpoint:d.utxo.outpoint,amount:d.utxo.amount,spk:Y(d.redeem),daaScore:d.utxo.daaScore,covenantId:void 0,budget:Te.p2pk,sigscript:_(Uint8Array.of(65),lo,Ge(d.redeem)),signature:{kind:"token-delegator",offset:1,signer:d.signerXOnly,sighashType:1}}];const T={name:`swapTokensForKas(${u})`,inputs:[x,...c.map(K=>xo(K,"KCC20 user cell (T delegator, sig)")),Sn(r,"KCC20 pool cell (T delegator, empty witness)"),an(n,`POOL swapTokensForKas(${u}, ${f})`,pt(t).poolSwapTokensForKas,su(t.pool,n.program,u,f,w)),...A,...(e.funding??[]).map(K=>de(K,"seller KAS (top-up)"))],outputs:[le(t,"merged (owner P)",g,r.value,s,0),Et(t,"POOL'",b,v,n.covenantId,2+c.length)],residual:wo(Q(i.address),"payout (seller)",Tn),genesisGroups:[],payload:Lo(e.partnerTag),...ke(e)};Ye(T,[n.covenantId,s],d===void 0?void 0:{outpoint:d.utxo.outpoint,spk:Y(d.redeem)});const I=ve(T,["token-rest","pool"],"payout");const R=I.built.residualValue-$o(e.funding);qa(T.name,R,I.built.fee,e.minNetOut);return{...I,poolNext:b,kasOutScaled:l.kasOutScaled,mergedNext:g,payout:I.built.residualValue,netOut:R}}a(Xu,"buildSwapTokensForKas");var _h=0;var Ih=1;var X6=2;var G1=3;var Y6=4;var Q6=0;var Z6=1;var eS=2;var tS=3;var Lh=0;var nS=1;var q1=2;var $h=3;var rS=4;var oS=0;var aS=1;var iS=2;var Rh=3;var Yu=4;var ms=Y0;var W1=Q0;function Qu(e){return{...On(e),lpShares:e.state.lpShares}}a(Qu,"lpPoolMathState");function gs(e){if(e.state.lpCovId===void 0)throw new Error(`pool ${e.covenantId} has the 108-byte state: swap-only, no liquidity entries`);if(!pi(e.state))throw new Error(`pool ${e.covenantId} is unbound (lpCovId 0^32): swap-only until bindLp`);return h(e.state.lpCovId)}a(gs,"requireBoundPool");function ys(e,t,n="capped"){const r=gs(e);if(t.covenantId!==r)throw new Error(`inventory cell lineage ${t.covenantId} is not the pool's L ${r}`);if(!en(t.state,e.covenantId))throw new Error("inventory cell is not pool-owned");const o=Yi(Qu(e),n);if(t.state.amount!==o)throw new Error(`L inventory holds ${t.state.amount}, the state implies ${o} (LP_SUPPLY - issued); the pool is not spendable through add/remove`);return r}a(ys,"requirePoolInventory");function hs(e,t,n="capped"){gs(e);const r=Qu(e);if(t<1n)throw new Error(`shares must be at least 1, got ${t}`);const o=Bc(r,n);if(t>o)throw new Error(`${t} shares exceed the ${o} this pool can still issue (SHARES_MAX or a reserve cap)`);const i=o1(r,n);if(t<i)throw new Error(`deposit of ${t} shares is below the minimum of ${i} (at least max(1 KAS, 20 shares' worth of KAS), and enough shares to stay withdrawable whatever the price does later)`);return n1(t,r,n)}a(hs,"depositQuote");function ks(e,t,n,r,o="capped"){gs(e);if(t<1n)throw new Error(`shares must be at least 1, got ${t}`);const i=r1(t,Qu(e),o);if(i.dKasScaled<xn)throw new Error(`KAS leg ${i.dKasScaled} scaled is below the pool's PAYOUT_MIN ${xn}`);if(n!==void 0&&i.dKasScaled<n)throw new Error(`KAS leg ${i.dKasScaled} scaled is below minKasOut ${n}`);if(r!==void 0&&i.dTok<r)throw new Error(`token leg ${i.dTok} is below minTokOut ${r}`);return i}a(ks,"withdrawalQuote");var Ro=a(e=>Ae(e.state).extensionCommitment,"extOf");function z1(e,t,n){const r=h(ji(e.pool,t.covenantId));const o=h(Ro(n));if(o!==r)throw new Error(`L inventory extension commitment ${o} is not the ${r===t.covenantId?"pool's id":"0^32 of this build"} (${r})`)}a(z1,"requireLpCommitment");function rr(e){const t=e<0n;const n=t?-e:e;const r=n/we;const o=(n%we).toString().padStart(8,"0").replace(/0+$/,"");return`${t?"-":""}${r}${o.length>0?`.${o}`:""}`}a(rr,"kasString");function hd(e){const{ctx:t,pool:n,inventory:r,reserve:o,userCell:i,funding:s,shares:c}=e;if(!ze(Cn(t,n)))throw new Error("addLiquidity exists in the v1 pool only");if(e.lpSafe!==true)throw new Error("deposit refused: the caller must assert lpSafe (the indexer confirms the L supply and the inventory equation of this pool)");Ot(`pool ${n.covenantId}`,n.state.tokenCovId,e.tokenId);const d=ys(n,r,Ue(t));z1(t,n,r);const u=za(n,o);const l=n.covenantId;Tr(i,u,l);if(s.length===0)throw new Error("addLiquidity needs at least one KAS input (the KAS leg and the fee)");const f=e.lpCellValue??ms;if(f<W1)throw new Error(`LP cell value ${f} is below the ${W1} sompi minimum`);const b=hs(n,c,Ue(t));if(i.state.amount!==b.dTok)throw new Error(`user cell holds ${i.state.amount} tokens, a deposit of ${c} shares takes exactly ${b.dTok}; split or merge first`);const g=Ro(o);if(h(Ro(i))!==h(g))throw new Error("user cell's extension commitment differs from the pool reserve's");const m={...n.state,kasScaled:b.pool.kasScaled,tokenReserve:b.pool.tokenReserve,lpShares:b.pool.lpShares};const y=Ce(b.pool.tokenReserve,l,g);const v=Ro(r);const x=Ce(r.state.amount-c,l,v);const w=Jn(c,i.state.owner.identifier,{extensionCommitment:v});Fe(u,[i,o],[y],_t);Fe(d,[r],[x,w],Pn);const A=po(b.pool);if(A!==n.value+b.dKasScaled*he)throw new Error("pool value arithmetic mismatch");const T=Ha(t);const I={name:`addLiquidity(${c})`,inputs:[an(n,`POOL addLiquidity(${c}, lpUser)`,T.poolAddLiquidity,lu(t.pool,n.program,c,pr(w,t.token.templateHash))),ht(i,[y],"KCC20 user cell of T (T leader, 00 || sig)",Vt(2,1)),Sn(o,"KCC20 pool reserve (T delegator, empty witness)"),qt(r,[x,w],"KCC20 L inventory (L leader, witness 00)",Te.tokenLeaderCovenant2Out),...s.map(N=>de(N,"KAS (depositor: KAS leg, LP cell funding, fee)"))],outputs:[Et(t,"POOL' {+dKas, +dTok, +shares}",m,A,l,_h),le(t,"mergedT (owner P)",y,o.value,u,Ih),le(t,"restL inventory (owner P)",x,r.value,d,G1),le(t,"lpUser (LP cell)",w,f,d,G1)],residual:Ne(Q(e.changeAddress),"change (depositor)"),genesisGroups:[],payload:new Uint8Array(0),...ke(e)};Ye(I,[l,u,d]);const R=ve(I,["pool","token-rest","token-reserve","token-user"],"change");const K=$o(s)-R.built.residualValue;Ga(I.name,K,R.built.fee,e.maxAllIn);const M=`Deposit ${c} shares: ${rr(b.dKasScaled*he)} KAS + ${b.dTok} tokens into the pool (shares ${n.state.lpShares} -> ${b.pool.lpShares}); your ${rr(i.value)} KAS token cell becomes a ${rr(f)} KAS LP cell; network fee ${rr(R.built.fee)} KAS.`;return{...R,shares:c,dKasScaled:b.dKasScaled,dTok:b.dTok,L:d,poolNext:m,mergedTokenNext:y,restLpNext:x,lpUserNext:w,lpCellValue:f,budgets:R.built.budgets,fee:R.built.fee,summary:M,allIn:K}}a(hd,"buildAddLiquidity");var Uh=we/2n;function vs(e){const t=e-Uh;const n=t>Ht?Ht:t;return n<ot?ot:n}a(vs,"defaultTokenCellValue");var Nh=we/2n;function kd(e,t,n){return e-t+n*he<Nh}a(kd,"withdrawalNeedsTopUp");function Ja(e){const{ctx:t,pool:n,inventory:r,reserve:o,userLpCell:i,shares:s}=e;if(!ze(Cn(t,n)))throw new Error("removeLiquidity exists in the v1 pool only");Ot(`pool ${n.covenantId}`,n.state.tokenCovId,e.tokenId);const c=ys(n,r,Ue(t));z1(t,n,r);const d=za(n,o);const u=n.covenantId;if(i.covenantId!==c)throw new Error(`LP cell lineage ${i.covenantId} is not the pool's L ${c}`);Tr(i,c,u);const l=e.tokCellValue??vs(i.value);if(l<ot)throw new Error(`token cell value ${l} is below the ${ot} sompi minimum`);const f=ks(n,s,e.minKasOut,e.minTokOut,Ue(t));if(i.state.amount!==s)throw new Error(`LP cell holds ${i.state.amount} shares, removeLiquidity(${s}) absorbs exactly ${s}; split or merge first`);const b=Ro(r);if(h(Ro(i))!==h(b))throw new Error("LP cell's extension commitment differs from the inventory's");const g=i.state.owner;if(g.schemeByte!==0)throw new Error(`LP cell owner scheme ${g.schemeByte} is not p2pk-schnorr/v1; the builder withdraws key-owned positions only`);const m=Q(e.changeAddress);if(h(m)!==`20${h(g.identifier)}ac`)throw new Error("the payout address is not the LP cell owner's key: the pool pays the KAS leg to the owner");const y={...n.state,kasScaled:f.pool.kasScaled,tokenReserve:f.pool.tokenReserve,lpShares:f.pool.lpShares};const v=Ce(r.state.amount+s,u,b);const x=Ro(o);const w=Ce(f.pool.tokenReserve,u,x);const A=Jn(f.dTok,i.state.owner.identifier,{extensionCommitment:x});Fe(c,[i,r],[v],_t);Fe(d,[o],[w,A],Pn);const T=po(f.pool);if(T!==n.value-f.dKasScaled*he)throw new Error("pool value arithmetic mismatch");const I=Ha(t);const R={name:`removeLiquidity(${s})`,inputs:[ht(i,[v],"KCC20 user cell of L (L leader, 00 || sig)",Vt(2,1)),Sn(r,"KCC20 L inventory (L delegator, empty witness)"),qt(o,[w,A],"KCC20 pool reserve (T leader, witness 00)",Te.tokenLeaderCovenant2Out),an(n,`POOL removeLiquidity(${s}, tokUser)`,I.poolRemoveLiquidity,uu(t.pool,n.program,s,pr(A,t.token.templateHash))),...(e.funding??[]).map(ue=>de(ue,"KAS (withdrawer top-up)"))],outputs:[le(t,"mergedL inventory (owner P)",v,r.value,c,Lh),le(t,"restT (owner P)",w,o.value,d,q1),le(t,"tokUser (token cell)",A,l,d,q1),Et(t,"POOL' {-dKas, -dTok, -shares}",y,T,u,$h)],residual:wo(m,"payout (withdrawer)",f.dKasScaled*he>Tn?f.dKasScaled*he:Tn),genesisGroups:[],payload:new Uint8Array(0),...ke(e)};Ye(R,[u,d,c]);if(R.outputs.length!==Yu||Yu!==Rh+1)throw new Error(`removeLiquidity payout must be output ${Yu}, right after the pool`);const K=ve(R,["token-reserve","token-rest","token-user","pool"],"payout");const M=K.built.residualValue;const N=M-$o(e.funding);qa(R.name,N,K.built.fee,e.minNetOut);const D=`Withdraw ${s} shares: ${rr(f.dKasScaled*he)} KAS + ${f.dTok} tokens out of the pool (shares ${n.state.lpShares} -> ${f.pool.lpShares}); your ${rr(i.value)} KAS LP cell becomes a ${rr(l)} KAS token cell and a ${rr(M)} KAS payout; network fee ${rr(K.built.fee)} KAS.`;return{...K,shares:s,dKasScaled:f.dKasScaled,dTok:f.dTok,L:c,poolNext:y,mergedLpNext:v,restTokenNext:w,tokenUserNext:A,tokCellValue:l,payout:M,netOut:N,budgets:K.built.budgets,fee:K.built.fee,summary:D}}a(Ja,"buildRemoveLiquidity");var Kh=.01;var Bh=100n;function Zu(e,t){for(const[o,i]of[["quoted",e],["live",t]]){if(i.kasScaled<=0n||i.tokenReserve<=0n)throw new Error(`${o} state has non-positive reserves`)}const n=t.kasScaled*e.tokenReserve;const r=e.kasScaled*t.tokenReserve;return{num:n>r?n-r:r-n,den:r}}a(Zu,"ratioTerms");function sS(e,t){const{num:n,den:r}=Zu(e,t);return(n*10000n+r-1n)/r}a(sS,"ratioDriftBps");function Mh(e,t){const{num:n,den:r}=Zu(e,t);return Number(n*1000000000n/r)/1e9}a(Mh,"ratioDrift");function Fh(e,t){const{num:n,den:r}=Zu(e,t);return n*10000n<Bh*r}a(Fh,"canRebuildAutomatically");var bs=class extends Error{static{a(this,"RatioDriftError")}drift;quoted;live;constructor(t,n){const r=Mh(t,n);super(`reserve ratio moved ${(r*100).toFixed(3)} % since the quote (limit ${Kh*100} %): re-quote before rebuilding`);this.name="RatioDriftError";this.drift=r;this.quoted={kasScaled:t.kasScaled,tokenReserve:t.tokenReserve};this.live={kasScaled:n.kasScaled,tokenReserve:n.tokenReserve}}};function J1(e,t){if(!Fh(e,t))throw new bs(e,t)}a(J1,"assertRebuildAllowed");var X1="qpzry9x8gf2tvdw0s3jn54khce6mua7l";var jh=[0x98f2bc8e61n,0x79b76d99e2n,0xf33e5fb3c4n,0xae2eabe2a8n,0x1e4f43e470n];var wd=0;var Dh=1;var Hh=8;var vd={0:32,1:33,8:32};var Ee=class extends Error{static{a(this,"AddressError")}constructor(t){super(t);this.name="AddressError"}};function Vh(e){let t=1n;for(const n of e){const r=t>>35n;t=(t&0x07ffffffffn)<<5n^BigInt(n);for(let o=0;o<5;o++)if(r>>BigInt(o)&1n)t^=jh[o]}return t^1n}a(Vh,"polymod");function Y1(e,t){return Vh([...[...t].map(n=>n.charCodeAt(0)&31),0,...e,0,0,0,0,0,0,0,0])}a(Y1,"checksum");function xd(e,t,n,r){let o=0;let i=0;const s=[];const c=(1<<n)-1;for(const d of e){o=o<<t|d;i+=t;while(i>=n){i-=n;s.push(o>>i&c)}o&=(1<<i)-1}if(r){if(i>0)s.push(o<<n-i&c)}else if(i>=t||(o<<n-i&c)!==0){throw new Ee("address payload has non-zero padding")}return s}a(xd,"convertBits");function ef(e,t,n){if(!/^[a-z0-9]+$/.test(e))throw new Ee(`invalid address prefix ${JSON.stringify(e)}`);if(n.length!==vd[t])throw new Ee(`version ${t} payload must be ${vd[t]} bytes, got ${n.length}`);const r=xd([t,...n],8,5,true);const o=Y1(r,e);const i=[];for(let c=4;c>=0;c--)i.push(Number(o>>BigInt(8*c)&0xffn));const s=xd(i,8,5,true);return`${e}:${[...r,...s].map(c=>X1[c]).join("")}`}a(ef,"encodeAddress");function It(e){const t=e.lastIndexOf(":");if(t<=0)throw new Ee(`address ${JSON.stringify(e)} has no prefix`);const n=e.slice(0,t);const r=e.slice(t+1);if(n!==n.toLowerCase()||r!==r.toLowerCase())throw new Ee("mixed-case address");if(r.length<9)throw new Ee("address too short");const o=[...r].map(b=>{const g=X1.indexOf(b);if(g<0)throw new Ee(`invalid address character ${JSON.stringify(b)}`);return g});const i=o.slice(0,-8);const s=o.slice(-8);const c=xd(s,5,8,false);let d=0n;for(const b of c)d=d<<8n|BigInt(b);if(d!==Y1(i,n))throw new Ee("address checksum mismatch");const u=xd(i,5,8,false);const l=u[0];if(l!==0&&l!==1&&l!==8)throw new Ee(`unknown address version ${l}`);const f=Uint8Array.from(u.slice(1));if(f.length!==vd[l])throw new Ee(`version ${l} payload must be ${vd[l]} bytes, got ${f.length}`);return{prefix:n,version:l,payload:f}}a(It,"decodeAddress");function Lt(e){if(e==="mainnet")return"kaspa";if(e==="devnet")return"kaspadev";if(e==="simnet")return"kaspasim";if(/^testnet(-\d+)?$/.test(e))return"kaspatest";throw new Ee(`unknown network ${JSON.stringify(e)}`)}a(Lt,"addressPrefixOf");function Xa(e){const t=It(e);if(t.version!==wd)throw new Ee(`${e} is not a Schnorr P2PK address (version ${t.version})`);return t.payload}a(Xa,"xOnlyKeyOfAddress");function Sd(e,t){if(e.length===34&&e[0]===32&&e[33]===172)return ef(t,wd,e.subarray(1,33));if(e.length===35&&e[0]===33&&e[34]===171)return ef(t,Dh,e.subarray(1,34));if(e.length===35&&e[0]===170&&e[1]===32&&e[34]===135)return ef(t,Hh,e.subarray(2,34));return void 0}a(Sd,"addressOfScript");var Er=class extends Error{static{a(this,"LockRefused")}rule;constructor(t,n){super(`lock ${t}: ${n}`);this.name="LockRefused";this.rule=t}};var Ya=class extends Er{static{a(this,"LockClaimNotDue")}now;nextAt;constructor(t,n){super("not-due",`nothing is claimable at ${t}; the next tranche is due at ${n}`);this.name="LockClaimNotDue";this.now=t;this.nextAt=n}};function C(e,t){throw new Er(e,t)}a(C,"refuse");function Cd(e){return e.feerate===void 0?{feeMargin:e.feeMargin??0n}:{feeMargin:e.feeMargin??0n,feerate:e.feerate}}a(Cd,"feeFieldsOf");function tf(e){return e.minDurationMs===void 0?{}:{minDurationMs:e.minDurationMs}}a(tf,"minDurationOf");var eb=20000000n;var Qa=10000001n;var Za=100000000n;function ws(e,t,n,r,o,i){Vr(n,L(o),t);const s=Je(e.token,n);return{label:t,value:r,spk:Y(s),binding:{authorizingInput:i,covenantId:o},cell:{predicted:{kind:"token",state:n},program:s,covenantId:o}}}a(ws,"tokenOut");function rf(e,t,n){return et({amount:t,owner:e.beneficiary,ownerScheme:e.scheme,borrowScheme:hn,borrowGuard:Ve,extensionCommitment:n})}a(rf,"lockPayoutState");function Ss(e,t,n){return Ce(e,t,n)}a(Ss,"lockCellTokenState");function Gh(e,t,n,r,o){return{label:t,outpoint:e.outpoint,amount:e.value,spk:Y(e.program),daaScore:e.daaScore,covenantId:e.covenantId,budget:n,sigscript:r,signature:o,cellKind:"lock",sequence:0n}}a(Gh,"lockInputOf");function tb(e){return{label:"change",spk:e,binding:void 0,cell:void 0,minimum:0n,dropBelow:10000000n}}a(tb,"changeTo");function of(e){return e.map((t,n)=>({index:n,role:t}))}a(of,"producesOf");var Ad=a(e=>`${e.txid}:${e.index}`,"outpointKey");function nb(e,t){const n=va;return{factory:t?n.factoryCreateRest:n.factoryCreate,leader:e?n.leaderCreateDelegated:t?n.leaderCreate2Out:n.leaderCreate1Out}}a(nb,"createBudgetsOf");function qh(e,t,n){try{cd(e,{...t,state:t.state})}catch(o){C("lock",o.message)}const r=dd(t,n);if(r!==void 0)C("lock-cell",r);if(n.program.length!==e.token.bytecode.length||!$(Je(e.token,n.state),n.program))C("lock-cell","the T cell's program is not the reference token with its state")}a(qh,"requireLiveLock");function rb(e,t,n){for(const r of e){const o=Ad(r.outpoint);if(!tk(r.spk))C("funding",`${t} ${o} is not a Schnorr P2PK output`);if(n!==void 0&&!$(r.spk,n))C("funding",`${t} ${o} does not pay the creator's script`)}}a(rb,"requireFunding");var nf=10;var ob=50000000n;function As(e,t){const n=Q(t);const r=_(Uint8Array.of(0,0),n);if(!dt(r))C("creator","the creator address is not a Schnorr P2PK address");const o=ju(e,r);return{creatorSpk:r,program:o,script:Y(o)}}a(As,"lockFactoryOf");function Wh(e,t){const n=As(e,t);const r=Sd(n.script,It(t).prefix);if(r===void 0)C("creator","the factory script has no address form");return r}a(Wh,"lockFactoryAddressOf");function zh(e,t,n){const r=As(e,t);return n.filter(o=>(o.scriptVersion??0)===0&&o.isCoinbase!==true&&$(o.script,r.script)&&o.amount>=Qa&&o.amount<=Za).map(o=>({outpoint:{txid:o.outpoint.txid.toLowerCase(),index:o.outpoint.index},value:o.amount,daaScore:o.daaScore})).sort((o,i)=>o.value!==i.value?o.value>i.value?-1:1:o.outpoint.txid!==i.outpoint.txid?o.outpoint.txid<i.outpoint.txid?-1:1:o.outpoint.index-i.outpoint.index)}a(zh,"lockFactoryCellsOf");function Jh(e){const{set:t,creator:n,funding:r}=e;const o=e.count??1;const i=e.factoryValue??(o>1?ob:eb);if(!Number.isInteger(o)||o<1||o>nf)C("factory",`${o} factory cells, 1 to ${nf}`);if(i<Qa||i>Za)C("factory",`a factory cell of ${i} sompi is outside ${Qa}..${Za}`);if(r.length===0)C("funding","the prep needs the creator's KAS");const s=As(t,n);rb(r,"funding");const c={name:"lock prep",inputs:r.map(g=>de(g,"creator KAS (P2PK)")),outputs:Array.from({length:o},()=>({label:"lock factory (P2SH)",value:i,spk:s.script,binding:void 0,cell:void 0})),residual:tb(Q(n)),genesisGroups:[],payload:new Uint8Array(0),...Cd(e)};const d=uo(c);ja(d);if(d.outputs.length<=o)C("funding","the prep leaves no change to the creator; add KAS so the indexer can find the prep");const u=[...Array.from({length:o},()=>"lock-factory"),"change"];const l=ds(d,u,{reserveOutputs:Array.from({length:o},(g,m)=>m)});const f=Na(d,{feerate:c.feerate??De,produces:of(u),optimistic:l});const b=Array.from({length:o},(g,m)=>({outpoint:{txid:d.txid,index:m},value:i}));return{built:d,roles:u,optimistic:l,creatorSpk:s.creatorSpk,factoryProgram:s.program,factory:b[0],factories:b,tx:f}}a(Jh,"buildLockPrep");function ab(e){if(e.kind==="p2pk"){if(e.xOnly.length!==32)C("beneficiary","a P2PK beneficiary is a 32-byte x-only key");if(!jc(e.xOnly))C("beneficiary","the P2PK beneficiary is not a valid x-only key on secp256k1: nobody could claim its releases");return{beneficiary:Uint8Array.from(e.xOnly),scheme:Ba}}if(e.kind==="p2sh"){try{yd(e.redeem,{...e.allowAnyScript===void 0?{}:{allowAnyScript:e.allowAnyScript},programs:[]})}catch(n){C("beneficiary",n.message)}const t=gd(e.redeem);if(t!==void 0&&!jc(t))C("beneficiary","the script's key is not a valid x-only key on secp256k1: nobody could spend its releases");return{beneficiary:mr(e.redeem),scheme:rs}}return C("beneficiary","a beneficiary is P2PK or P2SH")}a(ab,"lockBeneficiaryOf");function af(e,t,n,r,o){return _(Ge(n.tokenCovId),Ge(n.beneficiary),Xl(n.scheme),kn(n.total),kn(n.start),kn(n.cliff),kn(n.period),kn(n.tranches),kn(r),kn(BigInt(o)),Ge(e.lock.prefix),Ge(e.lock.suffix),Uint8Array.of(4),L(e.factory.createTag),Ge(t))}a(af,"lockCreateSigScript");function Xh(e){const{set:t,creator:n,factory:r,tokenCells:o,total:i,funding:s}=e;if(o.length<1||o.length>3)C("cells",`${o.length} T cells, 1 to 3 (a leader and up to 2 delegators)`);if(s.length===0)C("funding","the creation needs the creator's KAS");const c=As(t,n);const d=Q(n);const u=d.subarray(1,33);rb(s,"funding",d);const l=o[0];const f=l.covenantId.toLowerCase();if(e.tokenId!==void 0&&e.tokenId.toLowerCase()!==f)C("cells",`the cells are of lineage ${f}, not ${e.tokenId}`);const b=new Set([Ad(r.outpoint),...s.map(B=>Ad(B.outpoint))]);if(b.size!==1+s.length)C("funding","an outpoint appears twice");for(const B of o){const V=Ad(B.outpoint);if(b.has(V))C("cells",`outpoint ${V} appears twice`);b.add(V);if(B.covenantId.toLowerCase()!==f)C("cells","every T cell is of the leader's lineage");if(B.state.owner.schemeByte!==0||!$(B.state.owner.identifier,u))C("cells",`cell ${V} is not owned by the creator's key (the builder signs only the creator's key-owned cells)`);if(!$(Je(t.token,B.state),B.program))C("cells",`cell ${V}'s program is not the reference token with its state`)}if(r.value<Qa||r.value>Za)C("factory",`the factory cell holds ${r.value} sompi, outside ${Qa}..${Za}`);const g=o.reduce((B,V)=>B+V.state.amount,0n);if(i<=0n||i>g)C("amount",`lock ${i} of the cells' ${g}`);const m=g-i;const y=ab(e.beneficiary);const v={tokenCovId:L(f),beneficiary:y.beneficiary,scheme:y.scheme,total:i,start:e.start,cliff:e.cliff,period:e.period,tranches:e.tranches};try{ad(v,{supply:e.supply,now:e.now,...tf(e)})}catch(B){C("app-rule",B.message)}const x=od(v);const w=rd(x.tranches);const A=Y(Ma(t,x));const T=We(r.outpoint.txid,r.outpoint.index,[{index:0,value:w,scriptVersion:0,script:A}]);const I=td(x,T);if(I!==void 0)C("state",I);const R=Ae(l.state);const K=Ss(i,T,R.extensionCommitment);const M=m>0n?et({...R,amount:m}):void 0;const N=M===void 0?[K]:[K,M];Fe(f,o,N,_t);const D=e.tCellValue??yr;if(D<yr)C("t-cell",`the lock's T cell value ${D} is below ${yr}`);const ue=e.restValue??l.value;const oe=o.slice(1);const ae=1+o.length;const ce=nb(oe.length>0,M!==void 0);const te={name:`lock create(${i} in ${x.tranches})`,inputs:[{label:"LOCK FACTORY create()",outpoint:r.outpoint,amount:r.value,spk:c.script,daaScore:r.daaScore,covenantId:void 0,budget:ce.factory,sigscript:af(t,c.program,x,m,ae),signature:void 0,cellKind:"lock-factory"},ht(l,N,"T creator (leader, 00 || sig)",ce.leader),...oe.map(B=>xo(B,"T creator (delegator, sig)",va.delegatorCreate)),...s.map(B=>de(B,"creator KAS (P2PK)"))],outputs:[{label:"LOCK (genesis K)",value:w,spk:A,binding:void 0,cell:void 0},ws(t,"the lock's T cell (K, 0x04)",K,D,f,1),...M===void 0?[]:[ws(t,"the creator's rest",M,ue,f,1)]],residual:tb(d),genesisGroups:[{authorizingInput:0,outputs:[0]}],payload:new Uint8Array(0),...Cd(e)};const je=te.inputs.reduce((B,V)=>B+V.amount,0n);const st=te.outputs.reduce((B,V)=>B+V.value,0n);if(je<=st)C("funds",`the inputs hold ${je} sompi, the lock's deposit and cells need ${st} plus the fee`);let p;try{p=uo(te)}catch(B){if(/below the minimum fee|do not cover/.test(B.message))C("funds",`the inputs hold ${je} sompi, too little for ${st} and the fee`);throw B}ja(p);if(p.genesis.length!==1||p.genesis[0].covenantId!==T)C("genesis",`the genesis id ${p.genesis[0]?.covenantId} is not K ${T}`);if(p.outputs.length>ho)C("layout",`${p.outputs.length} outputs, at most ${ho}`);const k=["lock","token-rest",...M===void 0?[]:["token-user"],...p.outputs.length>te.outputs.length?["change"]:[]];const P=ds(p,k);const S=Na(p,{feerate:te.feerate??De,produces:of(k),optimistic:P});const O=lb(t,S,{supply:e.supply,now:e.now,creator:n,...tf(e)},{...Cd(e),feerate:te.feerate??De});if(O.lockId!==T||O.fee!==p.fee||O.restAmount!==m)C("self-check","the check derived other figures than the build");const E=M===void 0?void 0:{kind:"token",outpoint:{txid:p.txid,index:2},value:ue,covenantId:f,program:Je(t.token,M),state:M,daaScore:0n};const U=k.indexOf("change");const X=U<0?void 0:{outpoint:{txid:p.txid,index:U},amount:p.outputs[U].value,spk:d,daaScore:0n,address:n};return{built:p,roles:k,optimistic:P,lockId:T,state:x,lockValue:w,restAmount:m,tx:S,...E===void 0?{}:{restCell:E},...X===void 0?{}:{change:X}}}a(Xh,"buildLockCreate");function Q1(e,t,n,r,o,i,s){const c=va;return{inputs:[Gh(t,"LOCK claim()",i?c.lockClaimFinal:c.lockClaim,_u(e.lock.claimTag,t.program),void 0),qt(n,o,"the lock's T cell (T leader, 00)",i?c.cellClaimFinal:c.cellClaim)],genesisGroups:[],payload:new Uint8Array(0),lockTime:r,lockTimeDomain:"timestamp",...Cd(s)}}a(Q1,"claimPlanBase");function Yh(e){const{set:t,lock:n,tCell:r,now:o}=e;qh(t,n,r);if(typeof o!=="bigint"||o<Qn)C("time",`now ${String(o)} is not a timestamp (Unix ms at or above ${Qn})`);const i=n.state;const s=as(i,o);if(s.tranches===0n)throw new Ya(o,Fu(i).at);const c=n.covenantId;const d=h(i.tokenCovId);const u=Ae(r.state).extensionCommitment;const l=rf(i,s.amount,u);let f;let b;try{if(s.final){const w=Q1(t,n,r,o,[l],true,e);const A={...w,name:`lock claim ${i.claimed} -> ${s.vested} of ${i.tranches} (final)`,outputs:[ws(t,"payout (beneficiary)",l,ft,d,1)],residual:{label:"the lock's KAS (beneficiary)",spk:sd(i),binding:void 0,cell:void 0,minimum:n.value+r.value-ft-Pt,dropBelow:void 0}};f=uo(A)}else{b={...i,claimed:s.vested};const w=Ss(i.total-Zn(i,s.vested),c,u);const A=Q1(t,n,r,o,[w,l],false,e);const T=Y(Ma(t,b));const I=`lock claim ${i.claimed} -> ${s.vested} of ${i.tranches}`;const R=ws(t,"rest (K, 0x04)",w,r.value,d,1);const K=ws(t,"payout (beneficiary)",l,ft,d,1);const M={...A,name:I,outputs:[R,K],residual:{label:"LOCK'",spk:T,binding:{authorizingInput:0,covenantId:c},cell:void 0,minimum:n.value-ft-Pt,dropBelow:void 0}};const N=fu(M).fee;const D={...A,name:I,outputs:[{label:"LOCK'",value:n.value-ft-N,spk:T,binding:{authorizingInput:0,covenantId:c},cell:void 0},R,K],residual:void 0};f=uo(D);if(f.fee!==N)C("fee",`the fee moved from ${N} to ${f.fee} between sizing and assembly`)}}catch(w){if(w instanceof Tt)C("fee",`the claim's fee would be above the lock's cap ${Pt} at feerate ${e.feerate??De}`);throw w}if(f.fee>Pt)C("fee",`the fee ${f.fee} sompi is above the lock's cap ${Pt}`);if(f.inputsToSign.length!==0)C("signature","a claim has no signature slot");ja(f);const g=s.final?["token-user","beneficiary"]:["lock","token-rest","token-user"];const m=ds(f,g);const y=e.feerate??De;const v=Na(f,{feerate:y,produces:of(g),optimistic:m});const x=ub(t,v,{feerate:y,feeMargin:e.feeMargin??0n});if(x.vested!==s.vested||x.fee!==f.fee||x.final!==s.final||x.lockId!==c)C("self-check","the check derived other figures than the build");return{built:f,roles:g,optimistic:m,final:s.final,vested:s.vested,amount:s.amount,...b===void 0?{}:{next:b},feeSompi:f.fee,tx:v}}a(Yh,"buildLockClaim");function xs(e,t){if(typeof e==="number"&&Number.isSafeInteger(e)&&e>=0)return BigInt(e);if(typeof e==="string"&&/^[0-9]+$/.test(e))return BigInt(e);return C("self-check",`${t} is not a decimal amount`)}a(xs,"big");function Z1(e,t){if(typeof e!=="string"||!/^0000([0-9a-f]{2})+$/.test(e))return C("self-check",`${t} is not a version-0 script`);return L(e.slice(4))}a(Z1,"scriptOf");function ib(e){let t;try{t=JSON.parse(e.txJson)}catch{return C("self-check","the transaction JSON does not parse")}if(t.version!==void 0&&t.version!==1)C("self-check",`version ${t.version}`);if(t.payload!==void 0&&t.payload!=="")C("self-check","the transaction carries a payload");if(t.gas!==void 0&&xs(t.gas,"gas")!==0n)C("self-check","gas is not 0");if(t.subnetworkId!==void 0&&!/^0+$/.test(t.subnetworkId))C("self-check","not the native subnetwork");const n=(t.inputs??[]).map((o,i)=>{const s=(o.previousOutpoint?.transactionId??o.transactionId??"").toLowerCase();const c=o.previousOutpoint?.index??o.index;if(!/^[0-9a-f]{64}$/.test(s)||typeof c!=="number")C("self-check",`input ${i} has no outpoint`);if(typeof o.signatureScript!=="string"||!/^([0-9a-f]{2})*$/.test(o.signatureScript))C("self-check",`input ${i} has no sigscript`);const d=o.utxo?.covenantId??void 0;return{outpoint:{txid:s,index:c},sigscript:L(o.signatureScript),sequence:o.sequence===void 0?0n:xs(o.sequence,`input ${i} sequence`),amount:xs(o.utxo?.amount,`input ${i} amount`),script:Z1(o.utxo?.scriptPublicKey,`input ${i} script`),covenantId:d===void 0||/^0*$/.test(d)?void 0:d.toLowerCase()}});const r=(t.outputs??[]).map((o,i)=>{const s=o.covenant;let c;if(s!==null&&s!==void 0){if(typeof s.authorizingInput!=="number"||typeof s.covenantId!=="string")C("self-check",`output ${i} binding is malformed`);c={authorizingInput:s.authorizingInput,covenantId:s.covenantId.toLowerCase()}}return{value:xs(o.value,`output ${i} value`),script:Z1(o.scriptPublicKey,`output ${i} script`),binding:c}});return{inputs:n,outputs:r,lockTime:t.lockTime===void 0?0n:xs(t.lockTime,"lockTime")}}a(ib,"parseLockTx");function sb(e,t,n){const r=zc(e.txJson);if(r.budgets.length!==t.length||r.budgets.some((i,s)=>i!==t[s]))C("fee",`the compute budgets ${r.budgets.join(",")} are not the roles' ${t.join(",")}`);const o=Jc(r,n.feerate,n.feeMargin??0n);if(o!==void 0)C("fee",o);if(r.fee!==e.feeSompi)C("fee",`the transaction pays ${r.fee} sompi, the build said ${e.feeSompi}`);return r.fee}a(sb,"feeChecked");function Qh(e,t){const n=Ic();try{if(n.identifyTemplate(e).templateHash!==_e)C("cells",`${t} is not the reference token template`);return n.assertRoundTrip(e,_e)}catch(r){if(r instanceof Er)throw r;return C("cells",`${t}: ${r.message}`)}}a(Qh,"tokenStateOf");function cb(e,t){let n;try{n=aa(e.sigscript,"token")}catch(i){return C("cells",`input ${t} is not a token invocation: ${i.message}`)}if(!$(Y(n.program),e.script))C("cells",`input ${t}'s program does not hash to its script`);const r=Qh(n.program,`input ${t}`);const o=n.invocation;if(o.contract!=="token")return C("cells",`input ${t} is not a token invocation`);return o.entry==="transfer"?{program:n.program,state:r,entry:"transfer",next:o.nextStates,witness:o.witness}:{program:n.program,state:r,entry:"transferDelegator",next:[],witness:o.witness}}a(cb,"tokenInvocationOf");var Td=a((e,t,n)=>$(Je(e.token,t),Je(e.token,n)),"sameToken");var Uo=a((e,t,n)=>e?.binding?.authorizingInput===t&&e.binding.covenantId===n,"bound");function db(e,t){try{return Wr(e)}catch(n){return C(t,`input 0: ${n.message}`)}}a(db,"envelopeOf");function Zh(e,t,n){if(t.covenantId===void 0)C("lock","input 0 carries no covenant id");try{return cd(e,{outpoint:t.outpoint,value:t.amount,covenantId:t.covenantId,program:n,daaScore:0n})}catch(r){return C("lock",r.message)}}a(Zh,"lockCellOfInput");function ek(e,t,n){if(t.covenantId!==n)C("lock-cell",`input 1 is of lineage ${t.covenantId}, the lock holds ${n}`);const r=cb(t,1);const o=dd(e,{outpoint:t.outpoint,covenantId:t.covenantId,state:r.state});if(o!==void 0)C("lock-cell",o);if(r.entry!=="transfer"||r.witness.length!==1||r.witness[0]!==0)C("lock-cell","input 1 is not the T leader with witness 00");return r}a(ek,"lockTCellInvocationOf");function tk(e){return e.length===34&&e[0]===32&&e[33]===172}a(tk,"isP2pkScript");function lb(e,t,n,r={}){const{inputs:o,outputs:i,lockTime:s}=ib(t);if(s!==0n)C("self-check","a creation has lockTime 0");if(i.length<2||i.length>ho)C("layout",`${i.length} outputs, a creation has 2 to ${ho}`);if(o.length<3)C("layout","a creation has the factory, a T cell and the creator's KAS");const c=new Set(t.inputsToSign.map(S=>S.index));if(c.has(0))C("factory","the factory input carries no signature");const d=o[0];if(d.covenantId!==void 0)C("factory","the factory input is bound to a covenant");const u=db(d.sigscript,"factory");if(u.tag!==e.factory.createTag)C("factory","input 0 does not invoke the factory's create()");let l;try{l=Du(e,u.program)}catch(S){return C("factory",S.message)}if(!$(Y(u.program),d.script))C("factory","the factory program does not hash to its input's script");const f=l.subarray(2);if(n.creator!==void 0&&!$(Q(n.creator),f))C("factory","the factory is not the creator's");const b=u.argumentPushes.map(S=>S.payload);if(b.length!==12)C("factory",`create() takes 12 arguments, got ${b.length}`);const g=a((S,O)=>{try{return Ke(S)}catch(E){return C("factory",`${O}: ${E.message}`)}},"int");if(b[0].length!==32||b[1].length!==32||b[2].length!==1)C("factory","create() arguments are malformed");const m={tokenCovId:Uint8Array.from(b[0]),beneficiary:Uint8Array.from(b[1]),scheme:b[2][0],total:g(b[3],"total"),start:g(b[4],"start"),cliff:g(b[5],"cliff"),period:g(b[6],"period"),tranches:g(b[7],"tranches")};if(m.scheme===Ba&&!jc(m.beneficiary))C("beneficiary","the P2PK beneficiary is not a valid x-only key on secp256k1");const y=g(b[8],"restAmount");const v=g(b[9],"creatorIdx");if(!$(b[10],e.lock.prefix)||!$(b[11],e.lock.suffix))C("factory","create() does not carry the lock template");try{ad(m,{supply:n.supply,now:n.now,...tf(n)})}catch(S){C("app-rule",S.message)}const x=od(m);const w=h(m.tokenCovId);let A=0;while(1+A<o.length&&o[1+A].covenantId!==void 0)A++;if(A<1||A>3)C("cells",`${A} T inputs, 1 to 3`);const T=o.slice(1,1+A).map((S,O)=>{if(S.covenantId!==w)C("cells",`input ${1+O} is of lineage ${S.covenantId}, the lock is of ${w}`);return cb(S,1+O)});const I=T[0];if(I.entry!=="transfer")C("cells","input 1 is not the T leader");for(const[S,O]of T.entries()){if(S>0&&O.entry!=="transferDelegator")C("cells",`input ${1+S} is not a T delegator`);const E=Ae(O.state);if(E.ownerScheme!==0||!$(E.owner,f.subarray(1,33)))C("cells",`input ${1+S} is not owned by the creator's key`)}for(let S=1+A;S<o.length;S++){const O=o[S];if(O.covenantId!==void 0||!$(O.script,f))C("funding",`input ${S} is not the creator's plain P2PK KAS`)}if(v!==BigInt(1+A))C("factory",`creatorIdx ${v} is not the creator's first KAS input ${1+A}`);const R=T.reduce((S,O)=>S+O.state.amount,0n);if(y!==R-m.total||y<0n)C("amount",`restAmount ${y}, the cells hold ${R} and the lock takes ${m.total}`);const K=rd(x.tranches);const M=i[0];const N=Y(Ma(e,x));if(!$(M.script,N))C("lock","output 0 is not the lock with the create() state");if(M.value!==K)C("deposit",`the lock holds ${M.value}, the deposit is exactly ${K}`);const D=We(d.outpoint.txid,d.outpoint.index,[{index:0,value:M.value,scriptVersion:0,script:M.script}]);if(!Uo(M,0,D))C("lock",`output 0 is not the genesis of K ${D} authorised by the factory`);try{nd(x,D)}catch(S){C("state",S.message)}const ue=Ae(I.state);const oe=Ss(m.total,D,ue.extensionCommitment);const ae=y>0n?et({...ue,amount:y}):void 0;const ce=ae===void 0?[oe]:[oe,ae];if(I.next.length!==ce.length||I.next.some((S,O)=>!Td(e,S,ce[O])))C("cells","the leader does not transfer exactly [the lock's cell, the rest]");const te=i[1];if(!$(te.script,Y(Je(e.token,oe)))||!Uo(te,1,w))C("t-cell","output 1 is not the lock's T cell bound (1, T)");if(te.value<yr)C("t-cell",`the lock's T cell holds ${te.value}, at least ${yr}`);let je=2;if(ae!==void 0){const S=i[2];if(S===void 0||!$(S.script,Y(Je(e.token,ae)))||!Uo(S,1,w))C("rest","output 2 is not the creator's rest bound (1, T)");je=3}for(let S=je;S<i.length;S++){const O=i[S];if(O.binding!==void 0)C("layout",`output ${S} is bound to ${O.binding.covenantId}: a creation has no other covenant output`);if(!$(O.script,f))C("layout",`output ${S} does not pay the creator (only change follows the T cells)`)}if(i.length-je>1)C("layout","at most one change output");const st=va;const p=nb(A>1,ae!==void 0);const k=[p.factory,p.leader,...Array.from({length:A-1},()=>st.delegatorCreate),...Array.from({length:o.length-1-A},()=>st.p2pk)];const P=sb(t,k,r);if(!$(d.sigscript,af(e,u.program,x,y,Number(v))))C("factory","the create() sigscript is not the canonical encoding");return{lockId:D,state:x,lockValue:K,tCellValue:te.value,restAmount:y,creatorSpk:l,fee:P}}a(lb,"checkLockCreateTx");function ub(e,t,n={}){const{inputs:r,outputs:o,lockTime:i}=ib(t);if(t.inputsToSign.length!==0)C("signature","a claim has no input to sign");if(i<Qn)C("time",`lockTime ${i} is not a timestamp`);if(n.pastMedianTime!==void 0&&i>=n.pastMedianTime)C("time",`lockTime ${i} is not below the past median time ${n.pastMedianTime}: the node would reject the claim`);if(r.length!==2)C("layout",`${r.length} inputs, a claim has exactly the lock and its T cell`);const[s,c]=[r[0],r[1]];if(s.sequence!==0n||c.sequence!==0n)C("layout","a claim's inputs have sequence 0");const d=db(s.sigscript,"lock");if(d.tag!==e.lock.claimTag||d.argumentPushes.length!==0)C("lock","input 0 does not invoke claim()");if(!$(s.sigscript,_u(e.lock.claimTag,d.program)))C("lock","the claim() sigscript is not canonical");if(!$(Y(d.program),s.script))C("lock","the lock program does not hash to its input's script");const u=Zh(e,s,d.program);const l=u.state;const f=u.covenantId;const b=h(l.tokenCovId);const g=ek(u,c,b);const m=as(l,i);if(m.tranches===0n)C("not-due",`nothing is claimable at ${i}`);const y=Ae(g.state).extensionCommitment;const v=rf(l,m.amount,y);const x=Y(Je(e.token,v));if(m.final){if(o.length!==2)C("layout",`${o.length} outputs, a final claim has exactly 2`);if(g.next.length!==1||!Td(e,g.next[0],v))C("payout","the T leader does not transfer exactly the payout");const[T,I]=[o[0],o[1]];if(!$(T.script,x)||!Uo(T,1,b))C("payout","output 0 is not the payout bound (1, T)");if(T.value!==ft)C("payout",`the payout cell holds ${T.value}, exactly ${ft}`);if(!$(I.script,sd(l))||I.binding!==void 0)C("final","output 1 is not the beneficiary's own script, unbound");if(I.value<s.amount+c.amount-ft-Pt)C("final","the beneficiary's KAS output is below lock + T cell - 1 KAS - FEE_CAP")}else{if(o.length!==3)C("layout",`${o.length} outputs, a claim has exactly 3`);const T={...l,claimed:m.vested};const I=Ss(l.total-Zn(l,m.vested),f,y);if(g.next.length!==2||!Td(e,g.next[0],I)||!Td(e,g.next[1],v))C("payout","the T leader does not transfer exactly [rest, payout]");const[R,K,M]=[o[0],o[1],o[2]];if(!$(R.script,Y(Ma(e,T)))||!Uo(R,0,f))C("lock","output 0 is not the continuation {.., claimed: vested} bound (0, K)");if(R.value<s.amount-ft-Pt)C("lock","the continuation is below lock - 1 KAS - FEE_CAP");if(!$(K.script,Y(Je(e.token,I)))||!Uo(K,1,b))C("rest","output 1 is not the K-owned rest bound (1, T)");if(K.value<c.amount)C("rest","the rest holds less KAS than the lock's T cell");if(!$(M.script,x)||!Uo(M,1,b))C("payout","output 2 is not the payout bound (1, T)");if(M.value!==ft)C("payout",`the payout cell holds ${M.value}, exactly ${ft}`)}const w=r.reduce((T,I)=>T+I.amount,0n)-o.reduce((T,I)=>T+I.value,0n);if(w<0n||w>Pt)C("fee",`the claim pays a fee of ${w} sompi, the lock allows 0..${Pt}`);const A=va;if(sb(t,m.final?[A.lockClaimFinal,A.cellClaimFinal]:[A.lockClaim,A.cellClaim],n)!==w)C("fee","the fee from the bytes differs from the outputs' arithmetic");return{lockId:f,state:l,now:i,vested:m.vested,final:m.final,amount:m.amount,fee:w}}a(ub,"checkLockClaimTx");var Pd=1e3;var fb=10000n;var Wt=class extends Error{static{a(this,"SlippageOutOfRange")}value;constructor(t,n){super(`slippage: ${String(t)} ${n}`);this.name="SlippageOutOfRange";this.value=t}};function sf(e){if(typeof e!=="number"||!Number.isInteger(e))throw new Wt(e,"bps is not an integer");if(e<0)throw new Wt(e,"bps is negative");if(e>Pd)throw new Wt(e,`bps is above the ${Pd} bps maximum`)}a(sf,"assertSlippageBps");function pb(e){if(typeof e!=="number"||!Number.isFinite(e))throw new Wt(e,"% is not a finite number");if(e<0)throw new Wt(e,"% is negative");const t=e*100;const n=Math.round(t);if(Math.abs(t-n)>1e-6)throw new Wt(e,"% is finer than one basis point");sf(n);return n}a(pb,"slippageBpsOfPercent");function bb(e){if(typeof e!=="bigint")throw new Wt(Number(e),"amount is not a bigint");if(e<0n)throw new Wt(e,"amount is negative")}a(bb,"assertAmount");function nk(e,t){bb(e);sf(t);return e+e*BigInt(t)/fb}a(nk,"maxWithSlippage");function rk(e,t){bb(e);sf(t);return e-e*BigInt(t)/fb}a(rk,"minWithSlippage");function _S(e,t){return nk(e,pb(t))}a(_S,"maxWithSlippagePct");function IS(e,t){return rk(e,pb(t))}a(IS,"minWithSlippagePct");function ok(e,t){const n=String(e);const r=/script units exceeded the amount committed in the input: used=(\d+), limit=(\d+)/.exec(n);if(r){const d=Number(r[1]);const u=Number(r[2]);const l=ro(u);const f=t&&l!==void 0?ak(t,l):void 0;return{kind:"budget",used:d,limit:u,inputIndex:f,message:n}}const o=/fees which is under the required amount of (\d+) for ([a-z ]*mass)/.exec(n);if(o)return{kind:"fee-too-low",required:BigInt(o[1]),bucket:o[2].trim(),message:n};const i=/output \(([0-9a-f]{64}), (\d+)\) already spent by transaction ([0-9a-f]{64}) in the mempool/.exec(n);if(i)return{kind:"lost-race",outpoint:{txid:i[1],index:Number(i[2])},winnerTxid:i[3],message:n};const s=/already spent by transaction ([0-9a-f]{64}) in the mempool/.exec(n);if(s)return{kind:"lost-race",outpoint:void 0,winnerTxid:s[1],message:n};if(/is an orphan where orphan is disallowed/.test(n))return{kind:"orphan",message:n};if(/is already in the mempool/.test(n))return{kind:"duplicate",message:n};const c=/storage mass of (\d+) is larger than max allowed size of 500000/.exec(n);if(c)return{kind:"unminable",storageMass:Number(c[1]),message:n};if(/failed to verify the signature script/.test(n))return{kind:"script-failure",message:n};return{kind:"other",message:n}}a(ok,"classifyRejection");function ak(e,t){const n=e.map((r,o)=>r===t?o:-1).filter(r=>r>=0);return n.length>0?n[0]:void 0}a(ak,"indexOfBudget");var ei=class extends Error{static{a(this,"RejectedError")}rejection;txid;constructor(t,n){super(`transaction ${t} rejected (${n.kind}): ${n.message}`);this.name="RejectedError";this.rejection=n;this.txid=t}};function ik(e){return String(e?.message??e)}a(ik,"errorMessage");async function KS(e,t,{maxBudgetPatches:n=6}={}){const r=[];let o=t;for(let i=0;;i++){try{const s=await e.submitTransaction({transaction:o.tx,allowOrphan:false});r.push({budgets:o.budgets,fee:o.fee,ok:true});if(s.transactionId!==o.txid)throw new Error(`node echoed txid ${s.transactionId}, expected ${o.txid}`);return{txid:o.txid,attempts:r,budgets:o.budgets,masses:o.masses}}catch(s){if(s instanceof Error&&s.message.startsWith("node echoed txid"))throw s;const c=ok(ik(s),o.budgets);r.push({budgets:o.budgets,fee:o.fee,ok:false,rejection:c});if(c.kind==="budget"&&c.inputIndex!==void 0&&i<n){const d=Math.max(o.budgets[c.inputIndex]+1,Ki(c.used));o=N0(o,c.inputIndex,d);if(o.masses.minFee>o.fee){throw new ei(o.txid,{...c,message:`${c.message} (budget ${d} makes compute the binding bucket; rebuild with the new budget)`})}continue}throw new ei(o.txid,c)}}}a(KS,"submit");async function sk(e,t,n=5){for(let r=0;r<n;r++){try{const o=await e.getMempoolEntry({transactionId:t,includeOrphanPool:false,filterTransactionPool:false});const i=o.mempoolEntry.transaction;return{fee:o.mempoolEntry.fee,storageMass:i.storageMass??i.mass,computeMass:i.verboseData?.computeMass}}catch{await mb(50)}}return void 0}a(sk,"mempoolEntry");async function BS(e,t){const n=await e.getUtxosByAddresses([t]);return n.entries.filter(r=>!r.isCoinbase).map(r=>ck(r,t))}a(BS,"utxosOf");function ck(e,t){const n=e.entry.covenantId?.toString();return{outpoint:{txid:e.outpoint.transactionId,index:e.outpoint.index},amount:e.amount,spk:Wi(e.scriptPublicKey.script),daaScore:e.blockDaaScore,address:t,covenantId:n===void 0||/^0+$/.test(n)?void 0:n}}a(ck,"utxoOf");async function MS(e,t,n,{timeoutMs:r=6e4,pollMs:o=200}={}){const i=t.outputs.filter(l=>l.cell!==void 0||l.binding!==void 0);const s=i.length>0?i:[t.outputs[t.outputs.length-1]];const c=Date.now()+r;const d=new Map;const u=await sk(e,t.txid);while(Date.now()<c){for(const l of s){if(d.has(l.index))continue;const f=Rc(l.spk,n);const b=await e.getUtxosByAddresses([f]);const g=b.entries.find(m=>m.outpoint.transactionId===t.txid&&m.outpoint.index===l.index);if(g){d.set(l.index,{outputIndex:l.index,address:f,amount:g.amount,covenantId:g.entry.covenantId?.toString(),spk:g.scriptPublicKey.script,daaScore:g.blockDaaScore})}}if(d.size===s.length){const l=[...d.values()].sort((f,b)=>f.outputIndex-b.outputIndex);return{txid:t.txid,daaScore:l[0].daaScore,cells:l,mempool:u}}await mb(o)}throw new Error(`${t.plan.name} ${t.txid}: not in the UTXO index after ${r} ms (${d.size}/${s.length} outputs seen)`)}a(MS,"waitForAcceptance");function FS(e,t){const n=e.outputs[t.outputIndex];if(!n)throw new Error(`no output ${t.outputIndex}`);if(t.amount!==n.value)throw new Error(`output ${n.index} "${n.label}": on-chain amount ${t.amount} != built ${n.value}`);if(t.spk!==h(n.spk))throw new Error(`output ${n.index} "${n.label}": on-chain spk ${t.spk} != built ${h(n.spk)}`);const r=n.cell?.covenantId??n.binding?.covenantId;if(r!==void 0&&t.covenantId!==r)throw new Error(`output ${n.index} "${n.label}": on-chain covenant id ${t.covenantId} != ${r}`)}a(FS,"assertAcceptedCell");var mb=a(e=>new Promise(t=>setTimeout(t,e)),"sleep");var cf=.001;var xe=class extends Error{static{a(this,"ReplacementRefused")}constructor(t){super(t);this.name="ReplacementRefused"}};var dk=new Set(["submitted","already-in-mempool","fee-too-low"]);var lk=new Set(["change","payout"]);function yb(e){if(!Number.isFinite(e)||e<0||e>1)throw new xe(`bump ${e} out of range`);return BigInt(Math.round(e*1e6))}a(yb,"bumpPpm");function uk(e,t=cf){if(e<=0n)throw new xe("original fee must be positive");const n=yb(t);const r=(e*(1000000n+n)+999999n)/1000000n;return r>e?r:e+1n}a(uk,"replacementMinFee");function fk(e,t,n){if(t.kind==="lost-race")throw new xe("a lost race is never replaced: rebuild at the new head instead");if(!dk.has(t.kind))throw new xe(`state ${t.kind} is not replaceable`);if("txid"in t&&t.txid!==e.txid)throw new xe(`state is about ${t.txid}, not ${e.txid}`);if(!n.some(r=>r.txid===e.txid))throw new xe(`${e.txid} is not one of our pending transactions`)}a(fk,"assertReplaceable");function gb(e){return JSON.parse(e.txJson).outputs}a(gb,"outputsOf");function pk(e,t,n,r=cf){if(t.txid===e.txid)throw new xe("the replacement has the same txid");const o=e.consumes.map(j).sort();const i=t.consumes.map(j).sort();if(o.length!==i.length||o.some((m,y)=>m!==i[y]))throw new xe("the replacement must spend exactly the same outpoints");const s=new Set(i);for(const m of n){if(m.txid===e.txid)continue;const y=m.consumes.find(v=>s.has(j(v)));if(y)throw new xe(`the replacement would also conflict with our pending ${m.txid} on ${j(y)}`)}const c=gb(e);const d=gb(t);if(c.length!==d.length)throw new xe("the replacement changes the output count");const u=new Map(e.produces.map(m=>[m.index,m.role]));const l=new Map(t.produces.map(m=>[m.index,m.role]));c.forEach((m,y)=>{const v=d[y];if(u.get(y)!==l.get(y))throw new xe(`output ${y} changes its role`);const x=(m.covenant??null)===null?(v.covenant??null)===null:v.covenant!==null&&v.covenant!==void 0&&m.covenant.authorizingInput===v.covenant.authorizingInput&&m.covenant.covenantId===v.covenant.covenantId;if(m.scriptPublicKey!==v.scriptPublicKey||!x)throw new xe(`output ${y} changes its script or binding`);const w=u.get(y);if(w!==void 0&&lk.has(w)){if(BigInt(v.value)>BigInt(m.value))throw new xe(`output ${y} (${w}) grows in the replacement`)}else if(BigInt(v.value)!==BigInt(m.value)){throw new xe(`output ${y} changes its value; only the change or payout may pay for the bump`)}});const f=BigInt(e.masses.max);const b=BigInt(t.masses.max);if(f<=0n||b<=0n)throw new xe("masses must be positive");const g=yb(r);if(!(t.feeSompi*f>e.feeSompi*b))throw new xe("the replacement feerate is not strictly greater");if(t.feeSompi*f*1000000n<e.feeSompi*b*(1000000n+g))throw new xe(`the replacement feerate is below the +${Number(g)/1e4} % bump`)}a(pk,"assertReplacement");async function VS(e,t){const n=t.bump??cf;fk(e,t.state,t.pending);const r=await t.rebuild(uk(e.feeSompi,n));pk(e,r,t.pending,n);const o=await t.sign(r);if(o.txid!==r.txid)throw new xe("signing changed the replacement txid");const i=await t.submitReplacement(o);if(i.transactionId!==o.txid)throw new xe(`node echoed ${i.transactionId}, submitted ${o.txid}`);if(i.replacedTxid!==e.txid)throw new xe(`the node replaced ${i.replacedTxid}, not our ${e.txid}`);return{state:{kind:"replaced",oldTxid:e.txid,newTxid:o.txid},built:o}}a(VS,"replace");var hb=Object.freeze({budgetMs:15e3,backoffMinMs:120,backoffMaxMs:200,silenceMs:3e3});var at=class extends Error{static{a(this,"RetryPolicyError")}constructor(t){super(t);this.name="RetryPolicyError"}};var df=class{static{a(this,"RetryPolicy")}config;#e;#t;#n;#r;#o;#c=0;#i=0;#s=0;#d=0;#a;constructor(t,n=Math.random,r=hb){if(!(r.backoffMinMs>=0&&r.backoffMaxMs>=r.backoffMinMs&&r.budgetMs>0&&r.silenceMs>0))throw new at("invalid retry policy configuration");if(r.firstCheckMs!==void 0&&!(r.firstCheckMs>0&&r.firstCheckMs<=r.silenceMs))throw new at("invalid retry policy configuration");this.#e=t;this.#t=n;this.config=r}start(){if(this.#n!==void 0)throw new at("retry policy already started");this.#n=this.#e.now()}get startedAt(){if(this.#n===void 0)throw new at("retry policy not started");return this.#n}get deadline(){const t=this.#a===void 0?0:Math.max(0,this.#e.now()-this.#a);return this.startedAt+this.config.budgetMs+this.#d+t}pause(){if(this.#a===void 0)this.#a=this.#e.now()}resume(){if(this.#a===void 0)return;this.#d+=Math.max(0,this.#e.now()-this.#a);this.#a=void 0}get pausedMs(){return this.#d+(this.#a===void 0?0:Math.max(0,this.#e.now()-this.#a))}get rereads(){return this.#s}get pending(){return this.#r}onState(t){const n=this.#e.now();this.#o=t;switch(t.kind){case"built":case"signed":throw new at(`state ${t.kind} is not a submission outcome`);case"accepted":case"confirmed":return this.#f({kind:"done",txid:t.txid});case"replaced":return this.#f({kind:"superseded",newTxid:t.newTxid});case"script-failed":return this.#l("script-failed",t);case"failed":return this.#l("failed",t);case"submitted":case"already-in-mempool":return this.#p(t.txid,n,t,this.config.firstCheckMs??this.config.silenceMs);case"lost-race":if(t.cause==="mempool-spent"&&t.winnerTxid!==void 0){if(n>=this.deadline)return this.#l("busy",t);return this.#f({kind:"await-winner",winnerTxid:t.winnerTxid,until:Math.min(n+this.config.silenceMs,this.deadline)})}return this.#u(n,t);case"fee-too-low":if(this.#c>=1)return this.#l("builder-bug",t);if(n>=this.deadline)return this.#l("busy",t);this.#c++;return this.#f({kind:"rebuild-with-fee",minFeeSompi:t.requiredSompi});case"budget-too-low":{const r=ro(t.limit);if(this.#i>=1||t.inputIndex<0||r===void 0)return this.#l("builder-bug",t);if(n>=this.deadline)return this.#l("busy",t);this.#i++;return this.#f({kind:"patch-budget",inputIndex:t.inputIndex,budget:Math.max(r+1,Ki(t.used))})}}}onWinnerAccepted(t){const n=this.#r;if(n?.kind!=="await-winner"||n.winnerTxid!==t)throw new at(`not waiting for ${t}`);const r=this.config.backoffMaxMs-this.config.backoffMinMs+1;const o=this.#t();if(!(o>=0&&o<1))throw new at(`random source returned ${o}`);return this.#u(this.#e.now()+this.config.backoffMinMs+Math.floor(o*r),this.#o)}onWinnerInTip(t){const n=this.#r;if(n?.kind!=="await-winner"||n.winnerTxid!==t)throw new at(`not waiting for ${t}`);return this.#u(this.#e.now(),this.#o)}onTimer(){const t=this.#e.now();const n=this.#r;if(n===void 0)throw new at("no pending action");if(n.kind==="await-winner"&&t>=n.until)return this.#u(t,this.#o);if(n.kind==="await-acceptance"&&t>=n.until)return t>=this.deadline?this.#l("busy",this.#o):this.#f({kind:"check-status",txid:n.txid});return n}onStatus(t){const n=this.#e.now();const r=this.#o;const o=this.#r?.kind==="check-status"||this.#r?.kind==="await-acceptance"?this.#r.txid:void 0;if(o===void 0||r===void 0)throw new at("no transaction in flight");if(t==="accepted")return this.#f({kind:"done",txid:o});if(t==="in-mempool")return this.#p(o,n,r);return this.#u(n,{kind:"lost-race",txid:o,cause:"orphan"})}#p(t,n,r,o=this.config.silenceMs){if(n>=this.deadline)return this.#l("busy",r);return this.#f({kind:"await-acceptance",txid:t,until:Math.min(n+o,this.deadline)})}#u(t,n){if(t>=this.deadline)return this.#l("busy",n);this.#s++;return this.#f({kind:"reread",at:t})}#l(t,n){return this.#f({kind:"give-up",reason:t,state:n})}#f(t){this.#r=t;return t}};function JS(e){if(!Number.isInteger(e.slippageBps)||e.slippageBps<0||e.slippageBps>Pd)throw new at(`slippage ${e.slippageBps} bps out of range`);if(e.quoted<=0n||e.requoted<0n)throw new at("quotes must be positive");const t=BigInt(e.slippageBps);return e.side==="cost"?e.requoted*10000n<=e.quoted*(10000n+t):e.requoted*10000n>=e.quoted*(10000n-t)}a(JS,"withinSlippage");async function XS(e,t=hb){const n=new df(e.clock,e.random??Math.random,t);n.start();let r=0;let o=0;let i={};let s;let c;const d=a(m=>e.onState?.(m,c??s),"report");const u=a(m=>({outcome:m,built:c??s,submissions:r,rebuilds:o,elapsedMs:e.clock.now()-n.startedAt}),"finish");const l=a(async m=>{n.pause();try{return await m()}finally{n.resume()}},"person");let f={kind:"reread",at:e.clock.now()};for(;;){switch(f.kind){case"done":case"give-up":case"superseded":return u(f);case"reread":case"rebuild-with-fee":{if(f.kind==="reread")await e.sleepUntil(f.at);else i={...i,minFeeSompi:f.minFeeSompi};if(s!==void 0)o++;s=await e.build(i);d({kind:"built"});if(o>0&&e.approve!==void 0&&!await l(()=>e.approve(s,o))){const m={kind:"failed",reason:"price moved beyond the accepted slippage"};d(m);return u({kind:"give-up",reason:"failed",state:m})}c=await l(()=>e.sign(s));d({kind:"signed"});f=await g(c);break}case"patch-budget":{const m=e.patchBudget(c,f.inputIndex,f.budget);if(m===void 0){i={...i,budget:{inputIndex:f.inputIndex,budget:f.budget}};if(s!==void 0)o++;s=await e.build(i);d({kind:"built"});c=await l(()=>e.sign(s));d({kind:"signed"});f=await g(c);break}c=m;d({kind:"signed"});f=await g(c);break}case"await-winner":{const m=await e.waitForAcceptance(f.winnerTxid,f.until);f=m!==void 0?n.onWinnerAccepted(f.winnerTxid):await b(f.until);break}case"await-acceptance":{const m=await e.waitForAcceptance(f.txid,f.until);if(m!==void 0){const y={kind:"accepted",txid:f.txid,acceptingBlueScore:m};d(y);f=n.onState(y)}else{f=await b(f.until)}break}case"check-status":f=n.onStatus(await e.status(f.txid));break}}async function b(m){await e.sleepUntil(m);return n.onTimer()}a(b,"timer");async function g(m){r++;const y=await e.submit(m);d(y);return n.onState(y)}a(g,"submitOnce")}a(XS,"runSubmission");var No="([0-9a-f]{64})";var bk=new RegExp(`^(?:RPC Server \\(remote error\\) -> )?Rejected transaction ${No}: (.*)$`,"s");var mk=new RegExp(`^output \\(${No}, (\\d+)\\) already spent by transaction ${No} in the mempool$`);var gk=new RegExp(`^transaction ${No} is an orphan where orphan is disallowed$`);var yk=new RegExp(`^transaction ${No} is already in the mempool$`);var hk=new RegExp(`^transaction ${No} was already accepted by the consensus$`);var kk=/^failed to verify the signature script: script units exceeded the amount committed in the input: used=(\d+), limit=(\d+)$/;var vk=new RegExp(`^(?:transaction ${No} is not standard: )?transaction has (\\d+) fees which is under the required amount of (\\d+) for (compute|normalized transient|storage) mass (\\d+)(?: \\(proportional to transaction byte size\\))?$`);var xk=/^failed to verify the signature script: (?:script ran, but verification failed|false stack entry at end of script execution|encountered invalid state while running script: pick at an invalid location|signature invalid: malformed signature)$/;var wk={compute:"compute","normalized transient":"transient",storage:"storage"};function Sk(e){if(typeof e==="string")return e;const t=e?.message;return typeof t==="string"?t:String(e)}a(Sk,"rejectionMessage");function kb(e,t={}){const n=Sk(e).trim();const r=bk.exec(n);if(!r)return{kind:"failed",reason:n};const o=r[1];const i=r[2];if(t.txid!==void 0&&t.txid.toLowerCase()!==o)return{kind:"failed",reason:`rejection names ${o}, submitted ${t.txid}: ${n}`};const s=o;const c=mk.exec(i);if(c)return{kind:"lost-race",txid:s,winnerTxid:c[3],cause:"mempool-spent"};const d=gk.exec(i);if(d&&d[1]===s)return{kind:"lost-race",txid:s,cause:"orphan"};const u=yk.exec(i);if(u&&u[1]===s)return{kind:"already-in-mempool",txid:s};const l=hk.exec(i);if(l&&l[1]===s)return{kind:"already-in-mempool",txid:s};const f=kk.exec(i);if(f){const g=Number(f[1]);const m=Number(f[2]);const y=ro(m);const v=y===void 0||t.budgets===void 0?-1:t.budgets.indexOf(y);return{kind:"budget-too-low",txid:s,inputIndex:v,used:g,limit:m}}const b=vk.exec(i);if(b&&(b[1]===void 0||b[1]===s))return{kind:"fee-too-low",txid:s,requiredSompi:BigInt(b[3]),bucket:wk[b[4]]};if(xk.test(i))return{kind:"script-failed",txid:s};return{kind:"failed",reason:n}}a(kb,"classifyNodeRejection");var Ak=10;var _n=class extends Error{static{a(this,"InvalidTransition")}state;event;constructor(t,n,r="not allowed"){super(`submit state ${t.kind} cannot take event ${n.kind}: ${r}`);this.name="InvalidTransition";this.state=t;this.event=n}};var Tk=new Set(["script-failed","replaced","failed"]);var Ck=new Set(["submitted","already-in-mempool"]);var Pk=new Set(["lost-race","fee-too-low","budget-too-low"]);function Ek(e){return Tk.has(e.kind)}a(Ek,"isTerminal");function Ok(e){if(e.kind==="replaced")return e.newTxid;return"txid"in e?e.txid:void 0}a(Ok,"txidOf");function Or(e,t,n){const r=Ok(e);if(r!==void 0&&r!==n)throw new _n(e,t,`event names ${n}, state is about ${r}`)}a(Or,"sameTx");function _k(e,t){if(t.kind==="failed"){if(Ek(e)||e.kind==="confirmed")throw new _n(e,t);return{kind:"failed",reason:t.reason}}switch(e.kind){case"built":if(t.kind==="signed")return{kind:"signed"};break;case"signed":if(t.kind==="submitted"){if(!/^[0-9a-f]{64}$/.test(t.txid))throw new _n(e,t,"txid is not 32-byte hex");return{kind:"submitted",txid:t.txid,at:t.at}}break;case"submitted":case"already-in-mempool":switch(t.kind){case"accepted":Or(e,t,t.txid);return{kind:"accepted",txid:t.txid,acceptingBlueScore:t.acceptingBlueScore};case"rejected":{const n=kb(t.error,t.budgets===void 0?{txid:e.txid}:{txid:e.txid,budgets:t.budgets});return n}case"conflict":Or(e,t,t.txid);if(t.winnerTxid===t.txid)throw new _n(e,t,"a transaction cannot conflict with itself");return{kind:"lost-race",txid:t.txid,winnerTxid:t.winnerTxid,cause:t.winnerAccepted?"orphan":"mempool-spent"};case"unknown":Or(e,t,t.txid);return{kind:"lost-race",txid:t.txid,cause:"orphan"};case"replaced":Or(e,t,t.oldTxid);if(t.newTxid===t.oldTxid)throw new _n(e,t,"a replacement has a new txid");return{kind:"replaced",oldTxid:t.oldTxid,newTxid:t.newTxid};default:break}break;case"accepted":if(t.kind==="accepted"){Or(e,t,t.txid);return{kind:"accepted",txid:t.txid,acceptingBlueScore:t.acceptingBlueScore}}if(t.kind==="depth"){Or(e,t,t.txid);return t.depth>=Ak?{kind:"confirmed",txid:t.txid,depth:t.depth}:e}break;case"confirmed":if(t.kind==="depth"){Or(e,t,t.txid);return t.depth>e.depth?{kind:"confirmed",txid:e.txid,depth:t.depth}:e}break;case"lost-race":case"fee-too-low":case"budget-too-low":if(t.kind==="rebuilt")return{kind:"built"};if(t.kind==="budget-patched"&&e.kind==="budget-too-low")return{kind:"signed"};if(t.kind==="replaced"&&e.kind==="fee-too-low"){Or(e,t,t.oldTxid);return{kind:"replaced",oldTxid:t.oldTxid,newTxid:t.newTxid}}break;default:break}throw new _n(e,t)}a(_k,"nextState");var vb=class{static{a(this,"SubmitMachine")}#e;#t;constructor(t={kind:"built"}){this.#e=t;this.#t=[t]}get state(){return this.#e}get history(){return this.#t}get inFlight(){return Ck.has(this.#e.kind)}get retryable(){return Pk.has(this.#e.kind)}dispatch(t){const n=_k(this.#e,t);if(n!==this.#e){this.#e=n;this.#t.push(n)}return n}};var ti="mainnet";var Ed=class extends Error{static{a(this,"PresetNotAllowedOnNetwork")}preset;networkId;constructor(t,n,r){super(`preset ${t} cannot be launched on ${n}: ${r}`);this.name="PresetNotAllowedOnNetwork";this.preset=t;this.networkId=n}};function xb(e){if(e.networkId!==ti)return;const t=e.curve;const n=Sl(t.preset);if(n===void 0)throw new Ed(t.preset,e.networkId,"only the Standard family (standard and its price bands) may be launched on mainnet");const r=t.params;const o=r.p0===n.curve.p0&&r.k===n.curve.k&&r.feeBps===n.curve.feeBps&&r.curveLots===n.curve.curveLots&&r.lot===n.lotSize&&r.gradReserve===n.gradLots*n.lotSize;if(!o)throw new Ed(t.preset,e.networkId,`its constants are not the ${n.name} preset's`)}a(xb,"assertPresetAllowedOnNetwork");var wb=15*6e4;var Ik=6e4;var lf=class extends Error{static{a(this,"KasPriceRequired")}preset;constructor(t){super(`preset ${t}: a Standard-family launch on mainnet needs the KAS/USD price its band was picked at`);this.name="KasPriceRequired";this.preset=t}};var uf=class extends Error{static{a(this,"KasPriceStale")}asOfMs;nowMs;constructor(t,n){super(`the KAS/USD price is from ${Number.isFinite(t)?new Date(t).toISOString():String(t)}, ${Math.round((n-t)/1e3)} s before now: a launch needs a price at most ${wb/6e4} minutes old`);this.name="KasPriceStale";this.asOfMs=t;this.nowMs=n}};var Ts=class extends Error{static{a(this,"StandardBandMismatch")}preset;kasUsd;expected;constructor(t,n,r,o){super(`preset ${t} is not the Standard band for KAS/USD ${n}${r===void 0?"":` (that is ${r})`}: ${o}`);this.name="StandardBandMismatch";this.preset=t;this.kasUsd=n;this.expected=r}};function Sb(e,t,n){const r=e.curve.preset;if(Sl(r)===void 0){if(jp(r))throw new Ts(r,t?.usd??Number.NaN,void 0,"it is a legacy band, no longer part of the Standard family");return}if(t===void 0){if(e.networkId===ti)throw new lf(r);return}const{usd:o,asOfMs:i}=t;if(typeof o!=="number"||!Number.isFinite(o)||o<=0)throw new Ts(r,o,void 0,"the price is not a positive number");if(typeof i!=="number"||!Number.isFinite(i)||n-i>wb||i-n>Ik){throw new uf(i,n)}const s=Gp(r,o,0);if(!s.accepted)throw new Ts(r,o,s.expected?.name,s.message)}a(Sb,"assertBandForPrice");function Ab(e){throw new Qt(`contracts/vault/v1/artifacts/${e}/manifest.json`)}a(Ab,"splitterOfArtifacts");var ff="kaspa:qrt0p8sd5g8k383mzxgqtyl7ehkdez8ds8cpxqcuwjdaayke9rjhg9pqnr3zx";var Lk="mainnet";var Ko=class extends Error{static{a(this,"TreasuryNotAllowedOnNetwork")}networkId;treasurySpk;constructor(t,n,r){super(`treasury ${n??"(none)"} is not allowed on ${t}: ${r}`);this.name="TreasuryNotAllowedOnNetwork";this.networkId=t;this.treasurySpk=n}};function Cb(e,t){const n=It(e);if(n.prefix!==t)throw new Error(`${e} is not a ${t} address`);if(n.version!==wd)throw new Error(`${e} is not a Schnorr P2PK address`);return Uint8Array.from([0,0,32,...n.payload,172])}a(Cb,"p2pkTreasurySpkOfAddress");function Pb(){return h(Cb(ff,"kaspa"))}a(Pb,"mainnetCompanySpk");function Eb(){const e=Pb();let t;try{t=Ab(Lk)}catch(n){if(n instanceof Qt)return[e];throw n}if(h(t.companySpk)!==e){throw new Ko(ti,h(t.spk),`the mainnet Splitter pays company script ${h(t.companySpk)}, not ${e} (${ff})`)}return[e,h(t.spk)]}a(Eb,"mainnetTreasurySpks");var Tb;function Od(e){if(e!==ti)return void 0;Tb??=Eb();return Tb}a(Od,"allowedTreasurySpks");function pf(e,t=Od(e.networkId)){if(t===void 0)return void 0;const n=e.curve.params.treasurySpk;const r=e.pool.treasurySpk;const o=`${e.curve.version}:${e.curve.preset}${e.pool.revision===void 0?"":`@${e.pool.revision}`}`;if(n===void 0||r===void 0)return`${o}: the curve or its pool names no treasury`;if(h(n)!==h(r))return`${o}: the curve's treasury ${h(n)} is not its pool's ${h(r)}`;if(!t.includes(h(n)))return`${o}: its treasury is not one of ${t.join(", ")}`;return void 0}a(pf,"treasuryProblemOf");function Cs(e,t){return pf(e,t??Od(e.networkId))===void 0}a(Cs,"isTreasuryAllowedOnNetwork");function ni(e,t){const n=pf(e,t??Od(e.networkId));if(n!==void 0){const r=e.curve.params.treasurySpk;throw new Ko(e.networkId,r===void 0?void 0:h(r),n)}}a(ni,"assertTreasuryAllowedOnNetwork");var or=class extends Error{static{a(this,"MessageSignatureError")}wallet;constructor(t,n){super(`${t} signMessage: ${n}`);this.name="MessageSignatureError";this.wallet=t}};var ri=class extends Error{static{a(this,"MessageSigningUnsupported")}wallet;constructor(t,n){super(`${t} cannot sign messages here: ${n}`);this.name="MessageSigningUnsupported";this.wallet=t}};function _d(e,t){if(typeof t!=="string")throw new or(e,`expected a hex signature, got ${t===null?"null":typeof t}`);const n=t.trim().replace(/^0x/i,"").toLowerCase();if(!/^[0-9a-f]*$/.test(n)||n.length%2!==0)throw new or(e,"the signature is not hex");if(n.length!==128)throw new or(e,`expected a 64-byte Schnorr signature, got ${n.length/2} bytes`);return n}a(_d,"kaspaMessageSignature");var re=class extends Error{static{a(this,"SignRequestError")}constructor(t){super(t);this.name="SignRequestError"}};function $k(e){const t=[];for(const n of fr(e)){if(n.payload.length===Le)t.push(n.dataOffset);else if(n.payload.length===Le+1&&n.payload[0]===0)t.push(n.dataOffset+1)}return t}a($k,"signatureSlotsOf");function Rk(e,t,n){if(!Number.isInteger(t)||t<0||t+Le>e.length){throw new re(`input ${n}: signature offset ${t} outside the ${e.length}-byte sigscript`)}let r;try{r=$k(e)}catch(o){throw new re(`input ${n}: sigscript is not push-only: ${o.message}`)}if(!r.includes(t))throw new re(`input ${n}: offset ${t} is not a signature slot of the sigscript (slots ${r.join(", ")||"none"})`);if(e.subarray(t,t+Le).some(o=>o!==0))throw new re(`input ${n}: signature slot at ${t} is not empty`)}a(Rk,"assertEmptySignatureSlot");function oi(e,t,{networkId:n}){let r;try{r=JSON.parse(e)}catch(l){throw new re(`transaction JSON does not parse: ${l.message}`)}if(!Array.isArray(r.inputs))throw new re("transaction JSON has no inputs");if(typeof r.id!=="string"||!/^[0-9a-f]{64}$/.test(r.id))throw new re("transaction JSON has no transaction id");if(t.length===0)throw new re("no inputs to sign");const o=Lt(n);const i=new Set;const s=[];const c=JSON.parse(e);for(const l of[...t].sort((f,b)=>f.index-b.index)){const f=l.index;const b=c.inputs[f];if(!Number.isInteger(f)||b===void 0)throw new re(`input ${f} does not exist (${c.inputs.length} inputs)`);if(i.has(f))throw new re(`input ${f} listed twice`);i.add(f);if(l.sighashType!==Ua)throw new re(`input ${f}: sighash type ${String(l.sighashType)} is not SIGHASH_ALL (1)`);if(!b.utxo)throw new re(`input ${f} has no UTXO entry`);if(b.utxo.isCoinbase===true)throw new re(`input ${f} spends a coinbase output`);const g=L(b.signatureScript??"");if(l.kind==="p2pk"){if(g.length!==0&&!$(g,qi))throw new re(`input ${f}: P2PK input does not hold the builder placeholder`);if(l.signatureOffset!==void 0&&l.signatureOffset!==1)throw new re(`input ${f}: P2PK signature offset ${l.signatureOffset}`)}else{if(l.signatureOffset===void 0)throw new re(`input ${f}: ${l.kind} without a signature offset`);if(typeof b.utxo.covenantId!=="string"||!/^[0-9a-f]{64}$/.test(b.utxo.covenantId))throw new re(`input ${f}: covenant input without utxo.covenantId`);Rk(g,l.signatureOffset,f);s.push({inputIndex:f,scriptHex:"",prebuiltSignatureScript:h(g),signatureOffsets:[l.signatureOffset],expectedSighash:""})}b.signatureScript=""}for(const[l,f]of c.inputs.entries()){if(f.utxo&&(f.utxo.address===null||f.utxo.address===void 0)){const b=Sd(Vc(f.utxo.scriptPublicKey).script,o);if(b===void 0)throw new re(`input ${l}: UTXO script has no address form`);f.utxo.address=b}}const d=JSON.stringify(c);const u=c;return{txJson:d,txid:r.id,signInputs:[...i].sort((l,f)=>l-f).map(l=>({index:l,sighashType:Ua})),prebuilt:s.map(l=>({...l,expectedSighash:Eu(u,l.inputIndex,Ua)}))}}a(oi,"prepareSignRequest");function Ob(e){if(typeof e==="string")return e;if(e!==null&&typeof e==="object"&&"psktTransactionJson"in e){const t=e.psktTransactionJson;if(typeof t==="string")return t;if(t!==null&&typeof t==="object")return JSON.stringify(t)}throw new re("wallet returned neither a SafeJSON string nor { psktTransactionJson }")}a(Ob,"signedTxJsonOf");function ai(e,t){let n;try{n=JSON.parse(t)}catch(i){throw new re(`signed transaction does not parse: ${i.message}`)}const r=JSON.parse(e.txJson);if(n.id!==e.txid)throw new re(`signed transaction id ${String(n.id)} is not the requested ${e.txid}`);if(!Array.isArray(n.inputs)||n.inputs.length!==r.inputs.length)throw new re("signed transaction has another input count");const o=new Set(e.signInputs.map(i=>i.index));r.inputs.forEach((i,s)=>{const c=n.inputs[s];if(c.transactionId!==i.transactionId||Number(c.index)!==Number(i.index))throw new re(`signed input ${s} spends another outpoint`);if(!o.has(s)&&(c.signatureScript??"")!==(i.signatureScript??""))throw new re(`the wallet changed the sigscript of input ${s}, which it was not asked to sign`);if(o.has(s)&&(c.signatureScript??"")==="")throw new re(`the wallet did not sign input ${s}`)})}a(ai,"assertAnswerMatchesRequest");var Bo=class extends Error{static{a(this,"KaspireError")}code;method;constructor(t,n,r){super(`kaspire ${t}${n===void 0?"":` (${n})`}: ${r}`);this.name="KaspireError";this.code=n;this.method=t}get rejectedByUser(){return this.code===4001}};var ar=class extends Error{static{a(this,"WalletUnavailable")}constructor(t){super(`wallet "${t}" is not available in this browser`);this.name="WalletUnavailable"}};var qe=class extends Error{static{a(this,"WalletNotConnected")}constructor(){super("wallet is not connected");this.name="WalletNotConnected"}};var ir=class extends Error{static{a(this,"WalletNetworkMismatch")}expected;actual;constructor(t,n){super(`wallet is on network ${JSON.stringify(n)}, expected ${t}`);this.name="WalletNetworkMismatch";this.expected=t;this.actual=n}};var Se=class extends Error{static{a(this,"WalletAccountMismatch")}constructor(t){super(t);this.name="WalletAccountMismatch"}};var Uk=["accountsChanged","networkChanged"];function Nk(){const e=globalThis.kaspire;return e!==null&&typeof e==="object"&&typeof e.request==="function"?e:void 0}a(Nk,"defaultProvider");var bf=class{static{a(this,"KaspireAdapter")}id="kaspire";label="Kaspire";network;signing;#e;#t=null;#n;#r=new Set;constructor(t={}){const n=t.provider;this.#e=typeof n==="function"?n:n!==void 0?()=>n:Nk;this.network=t.network??"testnet-10";this.signing=t.signing??"b1";Lt(this.network)}isAvailable(){return this.#e()!==void 0}getAccount(){return this.#t}onChange(t){this.#r.add(t);return()=>this.#r.delete(t)}async connect(){const t=this.#c();const n=await this.#s(t,"requestAccounts");if(!Array.isArray(n)||n.length===0||typeof n[0]!=="string")throw new Bo("requestAccounts",void 0,"no account returned");return this.#o(t,n[0])}async restore(){const t=this.#e();if(t===void 0)return null;const n=await this.#s(t,"getAccounts");if(!Array.isArray(n)||n.length===0||typeof n[0]!=="string")return null;return this.#o(t,n[0],false)}async switchNetwork(){const t=this.#c();await this.#s(t,"switchNetwork",{network:this.network})}async#o(t,n,r=true){this.#d(t);await this.#i(t);let o;try{o=It(n)}catch(s){throw new Se(`wallet account ${n} is not a valid address: ${s.message}`)}if(o.prefix!==Lt(this.network))throw new Se(`wallet account ${n} is not a ${this.network} address`);let i;try{i=h(Xa(n))}catch(s){throw new Se(`wallet account ${n}: ${s.message}`)}if(r){const s=await this.#s(t,"getPublicKey");if(typeof s!=="string"||!/^[0-9a-fA-F]{64}$/.test(s))throw new Se(`getPublicKey returned ${JSON.stringify(s)}, expected a 32-byte x-only key`);if(s.toLowerCase()!==i)throw new Se(`getPublicKey ${s} is not the key of ${n}`)}this.#t={address:n,publicKey:i,network:this.network};return this.#t}async disconnect(){this.#a();this.#t=null;const t=this.#e();if(t===void 0)return;try{await t.request({method:"disconnect"})}catch{}}async signPskt(t,n){const{signed:r}=await this.signRequest(t,n);return r}async signRequest(t,n){const r=this.#t;if(r===null)throw new qe;const o=this.#c();await this.#i(o);if(this.#t!==r)throw new qe;const i=oi(t,n,{networkId:this.network});const s=this.signing==="b2"&&i.prebuilt.length>0?{sender:r.address,psktTransactionJson:i.txJson,submitTransaction:false,signInputs:i.signInputs,scripts:i.prebuilt}:{sender:r.address,txJsonString:i.txJson,options:{signInputs:i.signInputs}};const c=await this.#s(o,"signPskt",s);const d=Ob(c);ai(i,d);return{request:i,signed:d}}async signMessage(t){const n=this.#t;if(n===null)throw new qe;const r=this.#c();await this.#i(r);if(this.#t!==n)throw new qe;const o=await this.#s(r,"signMessage",{message:t,address:n.address});if(o===null||typeof o!=="object")throw new or("kaspire","expected { publicKey, signedMessage }");const i=o;if(i.address!==void 0&&i.address!==n.address)throw new Se(`signMessage answered for ${String(i.address)}, not ${n.address}`);if(i.publicKey!==void 0&&(typeof i.publicKey!=="string"||i.publicKey.toLowerCase()!==n.publicKey)){throw new Se(`signMessage signed with ${String(i.publicKey)}, not the key of ${n.address}`)}return _d("kaspire",i.signedMessage??i.signature)}#c(){const t=this.#e();if(t===void 0)throw new ar(this.id);return t}async#i(t){const n=await this.#s(t,"getNetwork");if(n!==this.network){this.#t=null;throw new ir(this.network,n)}}async#s(t,n,r){try{return await t.request(r===void 0?{method:n}:{method:n,params:r})}catch(o){const i=o;throw new Bo(n,typeof i?.code==="number"?i.code:void 0,typeof i?.message==="string"?i.message:String(o))}}#d(t){if(this.#n?.provider===t)return;this.#a();if(typeof t.on!=="function")return;const n=new Map;for(const r of Uk){const o=a((...i)=>this.#p(r==="accountsChanged"?{kind:"accounts-changed",payload:i[0]}:{kind:"network-changed",payload:i[0]}),"listener");t.on(r,o);n.set(r,o)}this.#n={provider:t,listeners:n}}#a(){const t=this.#n;this.#n=void 0;if(!t||typeof t.provider.removeListener!=="function")return;for(const[n,r]of t.listeners)t.provider.removeListener(n,r)}#p(t){this.#t=null;for(const n of[...this.#r]){try{n(t)}catch{}}}};function L5(e={}){return new bf(e)}a(L5,"createKaspireAdapter");async function $5(e,t){const n=e.getAccount?.()?.publicKey;const r=await e.signPskt(t.txJson,t.inputsToSign);return Wc(t,r,n===void 0?{}:{signer:n})}a($5,"signBuilt");var In=class extends Error{static{a(this,"KasWareError")}code;method;constructor(t,n,r){super(`kasware ${t}${n===void 0?"":` (${n})`}: ${r}`);this.name="KasWareError";this.code=n;this.method=t}get rejectedByUser(){return this.code===4001}};var Id={kaspa_mainnet:"mainnet",kaspa_testnet_10:"testnet-10",kaspa_testnet_11:"testnet-11",kaspa_testnet_12:"testnet-12",kaspa_devnet:"devnet"};function Kk(e){if(typeof e!=="string")return void 0;return Id[e]??(Object.values(Id).includes(e)?e:void 0)}a(Kk,"networkOfKasWare");function _b(e){const t=Object.keys(Id).find(n=>Id[n]===e);if(t===void 0)throw new Ee(`KasWare has no network for ${JSON.stringify(e)}`);return t}a(_b,"kasWareNetworkOf");function gf(e){if(typeof e!=="string")return void 0;const t=e.toLowerCase().replace(/^0x/,"");if(/^[0-9a-f]{64}$/.test(t))return t;if(/^0[23][0-9a-f]{64}$/.test(t))return t.slice(2);return void 0}a(gf,"xOnlyOfReportedKey");function Bk(e){if(typeof e==="string")return e;if(e!==null&&typeof e==="object"){const t=e;for(const n of["txJsonString","psktTransactionJson","signedTxJson","tx"]){const r=t[n];if(typeof r==="string")return r;if(r!==null&&typeof r==="object"&&Array.isArray(r.inputs))return JSON.stringify(r)}if(Array.isArray(t.inputs))return JSON.stringify(t)}throw new re("KasWare returned no signed transaction JSON")}a(Bk,"kasWareSignedJsonOf");function Mk(e){try{const t=JSON.parse(e);return(t.inputs??[]).map((n,r)=>{const o=n.signatureScript??"";return{input:r,bytes:o.length/2,head:o.slice(0,2),tail:o.slice(-2)}})}catch{return"unparseable"}}a(Mk,"sigScriptSummary");var Fk=["accountsChanged","networkChanged"];function jk(){const e=globalThis.kasware;return e!==null&&typeof e==="object"&&typeof e.requestAccounts==="function"?e:void 0}a(jk,"defaultProvider");var mf=class{static{a(this,"KasWareAdapter")}id="kasware";label="KasWare";network;#e;#t;#n=null;#r;#o=new Set;constructor(t={}){const n=t.provider;this.#e=typeof n==="function"?n:n!==void 0?()=>n:jk;this.network=t.network??"testnet-10";this.#t=t.log===void 0?(...r)=>console.info(...r):t.log;Lt(this.network);_b(this.network)}isAvailable(){return this.#e()!==void 0}getAccount(){return this.#n}onChange(t){this.#o.add(t);return()=>this.#o.delete(t)}async connect(){const t=this.#i();const n=await this.#d("requestAccounts",()=>t.requestAccounts());if(!Array.isArray(n)||n.length===0||typeof n[0]!=="string")throw new In("requestAccounts",void 0,"no account returned");return this.#c(t,n[0])}async restore(){const t=this.#e();if(t===void 0||typeof t.getAccounts!=="function")return null;const n=await this.#d("getAccounts",()=>t.getAccounts());const r=typeof n==="string"?n===""?[]:[n]:n;if(!Array.isArray(r)||r.length===0||typeof r[0]!=="string")return null;return this.#c(t,r[0])}async switchNetwork(){const t=this.#i();if(typeof t.switchNetwork!=="function")throw new In("switchNetwork",4200,"this KasWare has no switchNetwork");await this.#d("switchNetwork",()=>t.switchNetwork(_b(this.network)))}async#c(t,n){this.#a(t);await this.#s(t);let r;try{r=It(n)}catch(c){throw new Se(`wallet account ${n} is not a valid address: ${c.message}`)}if(r.prefix!==Lt(this.network))throw new Se(`wallet account ${n} is not a ${this.network} address`);let o;try{o=h(Xa(n))}catch(c){throw new Se(`wallet account ${n}: ${c.message}`)}const i=await this.#d("getPublicKey",()=>t.getPublicKey());this.#t?.("[kasware] getPublicKey ->",i);const s=gf(i);if(s===void 0)throw new Se(`getPublicKey returned ${JSON.stringify(i)}, expected a 33-byte compressed or 32-byte x-only key`);if(s!==o)throw new Se(`getPublicKey ${String(i)} is not the key of ${n}`);this.#n={address:n,publicKey:o,network:this.network};return this.#n}async disconnect(){this.#p();this.#n=null;const t=this.#e();if(t===void 0||typeof t.disconnect!=="function")return;try{const n=globalThis.location?.origin;await t.disconnect(n)}catch{}}async signPskt(t,n){const{signed:r}=await this.signRequest(t,n);return r}async signRequest(t,n){const r=this.#n;if(r===null)throw new qe;const o=this.#i();await this.#s(o);if(this.#n!==r)throw new qe;const i=oi(t,n,{networkId:this.network});const s={txJsonString:i.txJson,options:{signInputs:i.signInputs}};this.#t?.("[kasware] signPskt request",{txid:i.txid,inputsToSign:n.map(u=>({index:u.index,kind:u.kind,signatureOffset:u.signatureOffset})),options:s.options});this.#t?.("[kasware] signPskt txJsonString",i.txJson);let c;try{c=await this.#d("signPskt",()=>o.signPskt(s))}catch(u){this.#t?.("[kasware] signPskt error",u instanceof In?{code:u.code,message:u.message}:u);throw u}this.#t?.("[kasware] signPskt raw response",typeof c==="string"?c:JSON.stringify(c));const d=Bk(c);this.#t?.("[kasware] signPskt signature scripts",Mk(d));ai(i,d);return{request:i,signed:d}}async signMessage(t){const n=this.#n;if(n===null)throw new qe;const r=this.#i();if(typeof r.signMessage!=="function")throw new ri("KasWare","this version has no signMessage");await this.#s(r);if(this.#n!==n)throw new qe;this.#t?.("[kasware] signMessage request",{message:t});let o;try{o=await this.#d("signMessage",()=>r.signMessage(t,{type:"schnorr"}))}catch(i){this.#t?.("[kasware] signMessage error",i instanceof In?{code:i.code,message:i.message}:i);throw i}this.#t?.("[kasware] signMessage raw response",o);return _d("kasware",o)}#i(){const t=this.#e();if(t===void 0)throw new ar(this.id);return t}async#s(t){const n=await this.#d("getNetwork",()=>t.getNetwork());const r=Kk(n);if(r!==this.network){this.#n=null;throw new ir(this.network,r??n)}}async#d(t,n){try{return await n()}catch(r){const o=r;throw new In(t,typeof o?.code==="number"?o.code:void 0,typeof o?.message==="string"?o.message:String(r))}}#a(t){if(this.#r?.provider===t)return;this.#p();if(typeof t.on!=="function")return;const n=new Map;for(const r of Fk){const o=a((...i)=>{this.#t?.(`[kasware] ${r}`,i[0]);this.#u(r==="accountsChanged"?{kind:"accounts-changed",payload:i[0]}:{kind:"network-changed",payload:i[0]})},"listener");t.on(r,o);n.set(r,o)}this.#r={provider:t,listeners:n}}#p(){const t=this.#r;this.#r=void 0;if(!t||typeof t.provider.removeListener!=="function")return;for(const[n,r]of t.listeners)t.provider.removeListener(n,r)}#u(t){this.#n=null;for(const n of[...this.#o]){try{n(t)}catch{}}}};function j5(e={}){return new mf(e)}a(j5,"createKasWareAdapter");var Dk=["mainnet","testnet-10"];var yf=4200;var kt=class extends Error{static{a(this,"KastleError")}code;method;constructor(t,n,r){super(`kastle ${t}${n===void 0?"":` (${n})`}: ${r}`);this.name="KastleError";this.code=n;this.method=t}get rejectedByUser(){return this.code===4001}get covenantRefused(){return this.method==="signTx"&&this.code===yf}};function Hk(e){if(typeof e==="string")return e;if(e!==null&&typeof e==="object"&&Array.isArray(e.inputs))return JSON.stringify(e);throw new re("Kastle returned no signed transaction JSON")}a(Hk,"kastleSignedJsonOf");function Vk(e){if(typeof e==="string"){const t=e.toLowerCase().replace(/^0x/,"");if(/^[0-9a-f]{128}$/.test(t))return t}throw new kt("signMessage",void 0,`expected a 64-byte hex signature, got ${JSON.stringify(e)}`)}a(Vk,"kastleMessageSignatureOf");function Gk(e){try{const t=JSON.parse(e);return(t.inputs??[]).map((n,r)=>{const o=n.signatureScript??"";return{input:r,bytes:o.length/2,head:o.slice(0,2),tail:o.slice(-2)}})}catch{return"unparseable"}}a(Gk,"sigScriptSummary");var qk=["accountsChanged","networkChanged"];function Wk(){const e=globalThis.kastle;return e!==null&&typeof e==="object"&&typeof e.signTx==="function"?e:void 0}a(Wk,"defaultProvider");var hf=class{static{a(this,"KastleAdapter")}id="kastle";label="Kastle";network;#e;#t;#n=null;#r;#o=new Set;constructor(t={}){const n=t.provider;this.#e=typeof n==="function"?n:n!==void 0?()=>n:Wk;this.network=t.network??"testnet-10";this.#t=t.log===void 0?(...r)=>console.info(...r):t.log;Lt(this.network);if(!Dk.includes(this.network))throw new Ee(`Kastle has no network ${JSON.stringify(this.network)}`)}isAvailable(){return this.#e()!==void 0}getAccount(){return this.#n}onChange(t){this.#o.add(t);return()=>this.#o.delete(t)}async connect(){const t=this.#i();const n=await this.#a("connect",()=>t.connect());if(n!==true)throw new kt("connect",void 0,`connection not approved (${JSON.stringify(n)})`);await this.#d(t);return this.#c(t)}async restore(){const t=this.#e();if(t===void 0)return null;try{await t.getAccount()}catch{return null}return this.#c(t)}async switchNetwork(){const t=this.#i();if(typeof t.switchNetwork!=="function")throw new kt("switchNetwork",yf,"this Kastle has no switchNetwork");await this.#a("switchNetwork",()=>t.switchNetwork(this.network))}async#c(t){this.#p(t);await this.#s(t);const n=await this.#a("getAccount",()=>t.getAccount());this.#t?.("[kastle] getAccount ->",n);const r=n??{};if(typeof r.address!=="string")throw new kt("getAccount",void 0,"no account returned");const o=r.address;let i;try{i=It(o)}catch(d){throw new Se(`wallet account ${o} is not a valid address: ${d.message}`)}if(i.prefix!==Lt(this.network))throw new Se(`wallet account ${o} is not a ${this.network} address`);let s;try{s=h(Xa(o))}catch(d){throw new Se(`wallet account ${o}: ${d.message}`)}const c=gf(r.publicKey);if(c===void 0)throw new Se(`getAccount returned the key ${JSON.stringify(r.publicKey)}, expected a 33-byte compressed or 32-byte x-only key`);if(c!==s)throw new Se(`getAccount key ${String(r.publicKey)} is not the key of ${o}`);this.#n={address:o,publicKey:s,network:this.network};return this.#n}async disconnect(){this.#u();this.#n=null;const t=this.#e();if(t===void 0||typeof t.disconnect!=="function")return;try{await t.disconnect()}catch{}}async signPskt(t,n){const{signed:r}=await this.signRequest(t,n);return r}async signRequest(t,n){const r=this.#n;if(r===null)throw new qe;const o=this.#i();await this.#s(o);if(this.#n!==r)throw new qe;const i=oi(t,n,{networkId:this.network});const s=i.signInputs.map(u=>({inputIndex:u.index,signType:"All"}));this.#t?.("[kastle] signTx request",{networkId:this.network,txid:i.txid,inputsToSign:n.map(u=>({index:u.index,kind:u.kind,signatureOffset:u.signatureOffset})),scripts:s});this.#t?.("[kastle] signTx txJson",i.txJson);let c;try{c=await this.#a("signTx",()=>o.signTx(this.network,i.txJson,s))}catch(u){this.#t?.("[kastle] signTx error",u instanceof kt?{code:u.code,message:u.message,covenantRefused:u.covenantRefused}:u);throw u}this.#t?.("[kastle] signTx raw response",typeof c==="string"?c:JSON.stringify(c));const d=Hk(c);this.#t?.("[kastle] signTx signature scripts",Gk(d));ai(i,d);return{request:i,signed:d}}async signMessage(t){const n=this.#n;if(n===null)throw new qe;const r=this.#i();if(typeof r.signMessage!=="function")throw new kt("signMessage",yf,"this Kastle version has no signMessage");await this.#s(r);if(this.#n!==n)throw new qe;this.#t?.("[kastle] signMessage request",t);let o;try{o=await this.#a("signMessage",()=>r.signMessage(t))}catch(i){this.#t?.("[kastle] signMessage error",i instanceof kt?{code:i.code,message:i.message}:i);throw i}this.#t?.("[kastle] signMessage raw response",o);return Vk(o)}#i(){const t=this.#e();if(t===void 0)throw new ar(this.id);return t}async#s(t){const n=await this.#a("getNetwork",()=>t.getNetwork());if(n!==this.network){this.#n=null;throw new ir(this.network,n)}}async#d(t){if(this.#t===null||typeof t.getVersion!=="function")return;try{this.#t("[kastle] getVersion ->",await t.getVersion())}catch{}}async#a(t,n){try{return await n()}catch(r){if(typeof r==="string")throw new kt(t,r==="User denied"?4001:void 0,r);const o=r;const i=typeof o?.message==="string"?o.message:String(r);const s=typeof o?.code==="number"?o.code:i==="User denied"?4001:void 0;throw new kt(t,s,i)}}#p(t){if(this.#r?.provider===t)return;this.#u();if(typeof t.on!=="function")return;const n=new Map;for(const r of qk){const o=a((...i)=>{this.#t?.(`[kastle] ${r}`,i[0]);this.#l(r==="accountsChanged"?{kind:"accounts-changed",payload:i[0]}:{kind:"network-changed",payload:i[0]})},"listener");t.on(r,o);n.set(r,o)}this.#r={provider:t,listeners:n}}#u(){const t=this.#r;this.#r=void 0;if(!t||typeof t.provider.removeListener!=="function")return;for(const[n,r]of t.listeners)t.provider.removeListener(n,r)}#l(t){this.#n=null;for(const n of[...this.#o]){try{n(t)}catch{}}}};function J5(e={}){return new hf(e)}a(J5,"createKastleAdapter");var zk=36;function Ld(e,t){if(t.length!==bt)throw new Error(`a creator slot holds ${bt} bytes`);const n=[];e:for(let r=0;r+1+t.length<=e.length;r++){if(e[r]!==zk)continue;for(let o=0;o<t.length;o++)if(e[r+1+o]!==t[o])continue e;n.push(r+1);r+=t.length}return n}a(Ld,"creatorSlots");function kf(e,t){if(!dt(t))throw new Error("creator script must be a version-0 P2PK script in the 36-byte form");const n=e.curve;const r=Ld(n.suffix,n.params.creatorSpk);if(r.length===0)throw new Error(`preset ${n.preset}: no creator slot in the compiled suffix`);const o=Uint8Array.from(n.suffix);for(const c of r)o.set(t,c);const i=n.bytecode.subarray(n.stateOffset,n.stateOffset+n.stateLength);const s={...n,suffix:o,bytecode:_(n.prefix,i,o),templateHash:tt(n.prefix,o),params:{...n.params,creatorSpk:Uint8Array.from(t)}};return{...e,curve:s}}a(kf,"instantiateCurve");function Ib(e,t){for(const n of t){const r=n.curve;if(e.length!==r.bytecode.length||!$(e.subarray(0,r.stateOffset),r.prefix))continue;const o=Ld(r.suffix,r.params.creatorSpk)[0];if(o===void 0)continue;const i=e.subarray(r.stateOffset+r.stateLength);const s=i.subarray(o,o+bt);if(!dt(s))continue;const c=kf(n,s);if($(c.curve.suffix,i))return c}return null}a(Ib,"contextForCurveProgram");var Lb=a((e,t)=>e.state.amount<t.state.amount?1:e.state.amount>t.state.amount?-1:0,"byAmountDesc");function $b(e,t,n={}){const r=n.reserved??new Set;return e.filter(o=>(t===void 0||o.covenantId===t)&&o.state.owner.schemeByte===0&&o.state.amount>0n&&!r.has(j(o.outpoint)))}a($b,"spendableCells");function o9(e,t,n=Nn){if(t<=0n)throw new Error("amount must be positive");const r=e.reduce((c,d)=>c+d.state.amount,0n);if(r<t)return{kind:"insufficient",available:r};const o=e.find(c=>c.state.amount===t);if(o)return{kind:"exact",cell:o};const i=e.filter(c=>c.state.amount>t).sort(Lb);if(i.length>0)return{kind:"needs-split",cell:i[i.length-1],available:r};const s=[...e].sort(Lb);for(let c=2;c<=Math.min(n,s.length);c++){const d=Jk(s,c,t);if(d)return{kind:"needs-consolidation",cells:d}}return{kind:"needs-plan",available:r}}a(o9,"selectTokenCells");function Jk(e,t,n){const r=[];const o=a((i,s)=>{if(r.length===t)return s===0n;for(let c=i;c<e.length;c++){const d=e[c];if(d.state.amount>s)continue;r.push(d);if(o(c+1,s-d.state.amount))return true;r.pop()}return false},"rec");return o(0,n)?r:void 0}a(Jk,"subsetOfSize");function Rb(e,t,n){const r=new Set;for(const s of t)for(const c of s.built.plan.inputs)if(c.covenantId===void 0)r.add(j(c.outpoint));const o=e.filter(s=>!r.has(j(s.outpoint)));const i=Q(n.address);for(const s of t){const c=s.optimistic.funding.change;if(c)o.push({outpoint:c.outpoint,amount:c.amount,spk:i,daaScore:0n,address:n.address})}return o}a(Rb,"remainingFunding");var Ub=a(e=>({...e.feeMargin===void 0?{}:{feeMargin:e.feeMargin},...e.feerate===void 0?{}:{feerate:e.feerate}}),"feeOf");function Nb(e){const{ctx:t,pool:n,inventory:r,reserve:o,owner:i,shares:s}=e;ys(n,r,Ue(t));const c=hs(n,s,Ue(t));const d=Ub(e);const u=ps({ctx:t,cells:e.cells,owner:i,funding:e.funding,target:c.dTok,...e.fundingOptions===void 0?{}:{fundingOptions:e.fundingOptions},...d});const l=Rb(e.funding,u.transactions,i);const f=e.lpCellValue??ms;const b=f>u.cell.value?f-u.cell.value:0n;const g=kr(l,c.dKasScaled*he+b,e.fundingOptions);const m=hd({ctx:t,pool:n,inventory:r,reserve:o,userCell:u.cell,funding:g,changeAddress:i.address,shares:s,lpSafe:e.lpSafe,...e.lpCellValue===void 0?{}:{lpCellValue:e.lpCellValue},...d,...e.tokenId===void 0?{}:{tokenId:e.tokenId},...e.maxAllIn===void 0?{}:{maxAllIn:e.maxAllIn}});const y=[...u.transactions,m];return{plan:u.plan,transactions:y,totalFee:y.reduce((v,x)=>v+x.built.fee,0n),final:m}}a(Nb,"buildDepositChain");function Kb(e){const{ctx:t,pool:n,inventory:r,reserve:o,owner:i,shares:s}=e;const c=ys(n,r,Ue(t));const d=ks(n,s,e.minKasOut,e.minTokOut,Ue(t));for(const y of e.lpCells)if(y.covenantId!==c)throw new Error(`cell ${j(y.outpoint)} is not of the pool's L ${c}`);const u=Ub(e);const l=ps({ctx:t,cells:e.lpCells,owner:i,funding:e.funding,target:s,...e.fundingOptions===void 0?{}:{fundingOptions:e.fundingOptions},...u});const f=e.tokCellValue??vs(l.cell.value);const b={ctx:t,pool:n,inventory:r,reserve:o,userLpCell:l.cell,changeAddress:i.address,shares:s,tokCellValue:f,...e.minKasOut===void 0?{}:{minKasOut:e.minKasOut},...e.minTokOut===void 0?{}:{minTokOut:e.minTokOut},...u,...e.tokenId===void 0?{}:{tokenId:e.tokenId},...e.minNetOut===void 0?{}:{minNetOut:e.minNetOut}};let g;if(!kd(l.cell.value,f,d.dKasScaled)){try{g=Ja(b)}catch(y){if(!(y instanceof Tt))throw y}}if(g===void 0){const y=Rb(e.funding,l.transactions,i);g=Ja({...b,funding:kr(y,0n,e.fundingOptions)})}const m=[...l.transactions,g];return{plan:l.plan,transactions:m,totalFee:m.reduce((y,v)=>y+v.built.fee,0n),final:g}}a(Kb,"buildWithdrawalChain");function it(e){const t=e.params;if(t.gradReserve%t.lot!==0n)throw new Error(`gradReserve ${t.gradReserve} is not a whole number of lots`);return{name:e.preset,curve:{p0:t.p0,k:t.k,feeBps:t.feeBps,curveLots:t.curveLots},lotSize:t.lot,totalSupply:t.curveLots*t.lot+t.gradReserve,gradLots:t.gradReserve/t.lot,treasurySharePct:Kc[Br(e.version)],sweepMinSompi:10n*we,tokenCellSompi:t.tokenCellKas}}a(it,"launchPresetOf");var vf=class extends Error{static{a(this,"ReservedTickerError")}word;field;constructor(t,n){super(`buildCreate: the ${n} reads as ${t}, which is reserved`);this.name="ReservedTickerError";this.word=t;this.field=n}};var xf=5n*we;var wf=5n*we;function Bb(e){const{ctx:t,creatorAddress:n,metadata:r,funding:o}=e;const i=e.prepValue??xf;const s=e.curveValue??wf;const c=ke(e);const d=t.curve;He(t);xb(t);ni(t);Sb(t,e.kasPrice,e.nowMs??Date.now());let u;if(e.factoryGate?.skip){if(!e.factoryGate.reason)throw new Error("factoryGate.skip needs a reason");u=e.factoryGate.reason;At(it(d))}else{q0(it(d))}if(o.length===0)throw new Error("buildCreate: no funding");for(const ae of["name","symbol"]){const ce=r[ae];if(typeof ce!=="string"||ce.trim()==="")throw new Error(`buildCreate: the declaration needs a non-empty ${ae==="symbol"?"ticker (`symbol`)":"name (`name`)"}`)}const l=Wp(t.networkId,{name:r.name,ticker:r.symbol},n);if(l!==null)throw new vf(l.word,l.field);const f=Q(n);const b=f0(r);const g={tokenCovId:Ve,lotsSold:0n,feeAccrued:0n,phase:Kr};const m=Ca(d,g);if(h(m)!==h(d.bytecode))throw new Error("curve genesis program differs from the compiled artifact");const y={name:"tx01 prep + curve genesis",inputs:o.map((ae,ce)=>de(ae,ce===0?"creator KAS (prep + genesis funding)":`creator KAS ${ce}`)),outputs:[er("prep outpoint P2PK(creator)",i,f),An(t,"CURVE genesis {phase 0}",g,s,void 0,void 0)],residual:Ne(f,"change (creator)"),genesisGroups:[{authorizingInput:0,outputs:[1]}],payload:b,...c};const v=ve(y,["prep","curve"],"change",{reserveOutputs:[0]});const x=v.built;const w=x.genesis[0].covenantId;if(x.residualValue===0n&&e.funding2===void 0)throw new Error("tx01 has no change output to fund tx2; pass funding2");const A=x.outputs.findIndex(ae=>ae.label==="change (creator)");const T=e.funding2??[{outpoint:{txid:x.txid,index:A},amount:x.residualValue,spk:f,daaScore:0n,address:n}];const I=Xk({ctx:t,creatorAddress:n,prepTxid:x.txid,C:w,prepValue:i,curveValue:s,funding2:T,...c});const{T:R,initCurveState:K,supplyState:M,reserveState:N}=I;const D=I.shaped;const ue=D.built;const oe=Yk(t,w,R,b,[M,N]);return{tx01:x,tx2:ue,prepAndCurveGenesis:v,tokenGenesisInit:D,registration:oe,C:w,T:R,payload:b,genesisCurveState:g,initCurveState:K,factoryGateSkipped:u}}a(Bb,"buildCreate");function Xk(e){const{ctx:t,creatorAddress:n,prepTxid:r,C:o,prepValue:i,curveValue:s,funding2:c}=e;const d=t.curve;const u=d.params;const l=Q(n);const f={tokenCovId:Ve,lotsSold:0n,feeAccrued:0n,phase:Kr};const b=Ca(d,f);const g=u.curveLots*u.lot;const m=Ce(g,o);const y=Ce(u.gradReserve,o);const v=le(t,"KCC20 supply cell {CURVE_SUPPLY, owner C}",m,u.tokenCellKas,void 0,void 0);const x=le(t,"KCC20 reserve cell {GRAD_RESERVE, owner C}",y,u.tokenCellKas,void 0,void 0);const w={txid:r,index:0};const A=We(w.txid,w.index,[{index:0,value:v.value,scriptVersion:0,script:v.spk},{index:1,value:x.value,scriptVersion:0,script:x.spk}]);if(A===o)throw new Error("token lineage id collides with the curve id");const T={tokenCovId:L(A),lotsSold:0n,feeAccrued:0n,phase:Bt};const I={outpoint:w,amount:i,spk:l,daaScore:0n,address:n};const R={kind:"curve",outpoint:{txid:r,index:1},value:s,covenantId:o,program:b,state:f,daaScore:0n};const K={name:"tx2 token genesis + curve init",inputs:[de(I,"tx01:0 prep outpoint (authorizing input of the T group)"),on(R,"tx01:1 CURVE init(prefix, suffix)",pt(t).curveInit,A0(d,b,t.token.prefix,t.token.suffix)),...c.map((N,D)=>de(N,D===0?"creator KAS (cell funding + fee)":`creator KAS ${D}`))],outputs:[{...v,cell:v.cell?{...v.cell,covenantId:A}:void 0},{...x,cell:x.cell?{...x.cell,covenantId:A}:void 0},An(t,"CURVE' {T, 0, 0, active}",T,s,o,1)],residual:Ne(l,"change (creator)"),genesisGroups:[{authorizingInput:0,outputs:[0,1]}],payload:new Uint8Array(0),...ke(e)};const M=ve(K,["token-rest","token-reserve","curve"],"change");if(M.built.genesis[0].covenantId!==A)throw new Error(`tx2 genesis id ${M.built.genesis[0].covenantId} != client-side T ${A}`);return{shaped:M,T:A,initCurveState:T,supplyState:m,reserveState:y}}a(Xk,"buildTokenGenesisInit");function Yk(e,t,n,r,o){const i=e.curve;const s=i.params;return{expectedCurveId:t,curveTemplate:{prefix:h(i.prefix),suffix:h(i.suffix)},params:{preset:i.preset,templateHash:i.templateHash,p0:s.p0.toString(),k:s.k.toString(),lot:s.lot.toString(),curveLots:s.curveLots.toString(),gradReserve:s.gradReserve.toString(),feeBps:s.feeBps.toString(),tokenCellKas:s.tokenCellKas.toString(),openWindowLots:s.openWindowLots.toString(),openWindowMaxLots:s.openWindowMaxLots.toString(),tokenH:s.tokenH,poolH:s.poolH},...s.treasurySpk===void 0?{}:{treasurySpk:h(s.treasurySpk)},contractSet:i.version,creatorSpk:h(s.creatorSpk),declaration:h(r),expectedTokenId:n,genesisStates:o.map(Pa)}}a(Yk,"registrationOf");function Sf(e,t,n,r){const o=e.curve.params;if(n<=0n)throw new Error("n must be positive");if(t.state.lotsSold+n>o.curveLots)throw new Error(`only ${o.curveLots-t.state.lotsSold} lots remain`);if(t.state.lotsSold<o.openWindowLots&&n>o.openWindowMaxLots)throw new Error(`opening window: at most ${o.openWindowMaxLots} lots per buy while lotsSold < ${o.openWindowLots}`);const i=ba(it(e.curve).curve,t.state.lotsSold,n);if(r!==void 0&&i.total>r)throw new Error(`quote ${i.total} exceeds maxKasIn ${r}`);return i}a(Sf,"buyPrecheck");function Qk(e,t){const n=t[0];if(n===void 0)return false;const r=K0(n.spk);const o=e.curve.params.creatorSpk;return r.length===o.length&&r.every((i,s)=>i===o[s])}a(Qk,"fundedByCreator");function Zk(e,t,n){if(!_l(e.curve))return{};if(t.state.lotsSold!==0n||t.state.feeAccrued!==0n)return{};return Qk(e,n)?{}:{sequence:Ol}}a(Zk,"curveBuySequence");function Mb(e){const{ctx:t,curve:n,supply:r,buyer:o,n:i,funding:s}=e;Sr(`buy(${i})`,e.proofVerdict);if(e.borrowInto!==void 0){throw new tr("borrowed receive into an existing cell: the deployed curve buy requires OpCovInputCount(T) == 1 and a user output of exactly n * lot")}Ar(t,n);Ot(`curve ${n.covenantId}`,n.state.tokenCovId,e.tokenId);const c=ud(t,n,r);const d=e.userCellValue??Ht;if(d<ot)throw new Error(`user cell value ${d} is below the ${ot} sompi minimum`);if(s.length===0)throw new Error("buy needs at least one funding input");const u=Sf(t,n,i,e.maxKasIn);const l=Wa(t,[{cell:r,name:"supply"}]);const f=i*t.curve.params.lot;const b=Ce(r.state.amount-f,n.covenantId);const g=e.borrowThreshold===void 0?Jn(f,o.xOnlyPubkey):Jn(f,o.xOnlyPubkey,{borrowScheme:Gs,borrowGuard:zf(e.borrowThreshold)});Fe(c,[r],[b,g],Pn);const m={tokenCovId:n.state.tokenCovId,lotsSold:n.state.lotsSold+i,feeAccrued:n.state.feeAccrued+u.fee,phase:Bt};const y={name:`buy(${i})`,inputs:[{...on(n,`CURVE buy(${i}, user)`,pt(t).curveBuy,ru(t.curve,n.program,i,pr(g,t.token.templateHash))),...Zk(t,n,s)},qt(r,[b,g],"KCC20 supply cell (T leader, witness 00)",Te.tokenLeaderCovenant2Out),...s.map(w=>de(w,"buyer KAS"))],outputs:[An(t,"CURVE'",m,n.value+u.total,n.covenantId,0),le(t,"rest (owner C)",b,l,c,1),le(t,"user cell",g,d,c,1)],residual:Ne(Q(o.address),"change (buyer)"),genesisGroups:[],payload:Lo(e.partnerTag),...ke(e)};Ye(y,[n.covenantId,c]);const v=ve(y,["curve","token-rest","token-user"],"change");const x=u.total+d+v.built.fee;Ga(y.name,x,v.built.fee,e.maxAllIn);return{...v,quote:u,curveNext:m,restNext:b,userNext:g,allIn:x}}a(Mb,"buildBuy");function $d(e){return{treasury:e.treasury,creator:e.creator,split:e}}a($d,"sharesOf");function Fb(e){const{ctx:t,curve:n,funding:r}=e;Ar(t,n);const o=He(t);const i=it(t.curve);if(!J0(i,n.state.lotsSold,n.state.feeAccrued))throw new Error(`sweep not allowed: lotsSold ${n.state.lotsSold}, feeAccrued ${n.state.feeAccrued}`);if(r.length===0)throw new Error("sweep needs a funding input for the fee");const s=Mc(o,n.state.feeAccrued);const c=i.treasurySharePct;const d=ls(s,t.curve.params,{treasury:`treasury (${c} %)`,creator:`creator (${100n-c} %)`});const u={...n.state,feeAccrued:0n};const l={name:"sweep",inputs:[on(n,"CURVE sweep()",pt(t).curveSweep,au(t.curve,n.program)),...r.map(f=>de(f,"KAS (fee)"))],outputs:[An(t,"CURVE' {feeAccrued 0}",u,n.value-n.state.feeAccrued,n.covenantId,0),...d.outputs],residual:Ne(Q(e.changeAddress)),genesisGroups:[],payload:new Uint8Array(0),...ke(e)};if(Su(s)+s.creator!==n.state.feeAccrued)throw new Error("sweep shares do not add up to the accrual");Ye(l,[n.covenantId]);return{...ve(l,["curve",...d.roles],"change"),curveNext:u,...$d(s)}}a(Fb,"buildSweep");function jb(e){const{ctx:t,pool:n,funding:r}=e;if(r.length===0)throw new Error("pool sweep needs a funding input for the fee");const o=He(t);Cn(t,n);const i=Ji(On(n));const s=Fc(o,i.payout);const c={...n.state,feeAccruedScaled:0n};const d=false;if(n.state.creatorSpk===void 0)throw new Error(`a ${o} pool state without a creator`);const u={treasurySpk:t.pool.treasurySpk,creatorSpk:n.state.creatorSpk??new Uint8Array(0)};const l=ls(s,u,{treasury:d?"treasury (accrual + dust)":"treasury (half of accrual + dust)",creator:"creator (half of accrual + dust)"},d);const f={name:"pool sweep",inputs:[an(n,"POOL sweep()",pt(t).poolSweep,cu(t.pool,n.program)),...r.map(g=>de(g,"KAS (fee)"))],outputs:[Et(t,"POOL' {feeAccruedScaled 0}",c,n.state.kasScaled*he,n.covenantId,0),...l.outputs],residual:Ne(Q(e.changeAddress)),genesisGroups:[],payload:new Uint8Array(0),...ke(e)};if(Su(s)+s.creator!==i.payout)throw new Error("pool sweep shares do not add up to the payout");const b=["pool",...l.roles];Ye(f,[n.covenantId]);return{...ve(f,b,"change"),poolNext:c,payout:i.payout,...$d(s)}}a(jb,"buildPoolSweep");var Db=3;function Rd(e){const{ctx:t,curve:n,reserve:r,supplyEmpty:o,funding:i}=e;const s=t.curve.params;const c=Ar(t,n);if(n.state.lotsSold!==s.curveLots)throw new Error(`graduate needs lotsSold == ${s.curveLots}, have ${n.state.lotsSold}`);for(const[N,D]of[["reserve",r],["supply",o]]){if(D.covenantId!==c)throw new Error(`${N} cell is not of lineage T`);if(!en(D.state,n.covenantId))throw new Error(`${N} cell is not curve-owned`)}if(r.state.amount!==s.gradReserve)throw new Error(`reserve cell holds ${r.state.amount}, expected ${s.gradReserve}`);if(o.state.amount!==0n)throw new Error(`supply cell holds ${o.state.amount} tokens, expected 0`);const d=Wa(t,[{cell:r,name:"reserve"},{cell:o,name:"supply"}]);const u=e.keepSupplyDeposit===true?d-s.tokenCellKas:d;if(i.length===0)throw new Error("graduate needs a KAS input as the pool genesis authorizing input");const l=He(t);const f=a1(l,it(t.curve),n.value,n.state.feeAccrued);const b=f.escrow;const g=zi(b,s.gradReserve);const m={tokenCovId:n.state.tokenCovId,kasScaled:g.kasScaled,tokenReserve:s.gradReserve,lpShares:ut,lpCovId:Uint8Array.from(Aa),feeAccruedScaled:0n,creatorSpk:Uint8Array.from(s.creatorSpk)};const y=Et(t,"POOL genesis",m,b,void 0,void 0);const v=We(i[0].outpoint.txid,i[0].outpoint.index,[{index:0,value:b,scriptVersion:0,script:y.spk}]);if(v===n.covenantId||v===c)throw new Error("pool id collides with C or T");const x=Ce(s.gradReserve,v);Fe(c,[r,o],[x],Pn);const w=it(t.curve).treasurySharePct;const A=f.split===void 0?{outputs:[],roles:[]}:ls(f.split,s,{treasury:`treasury (${w} %)`,creator:`creator (${100n-w} %)`});const T={name:"graduate",inputs:[on(n,"CURVE graduate(poolPrefix, poolSuffix)",pt(t).curveGraduate,T0(t.curve,n.program,t.pool)),qt(r,[x],"KCC20 reserve cell (T leader, witness 00)",Te.tokenLeaderCovenant1Out),Sn(o,"KCC20 empty supply cell (T delegator, empty witness)"),...i.map((N,D)=>de(N,D===0?"KAS (P genesis authorizing input, fee)":"KAS"))],outputs:[{...y,cell:y.cell?{...y.cell,covenantId:v}:void 0},le(t,"reserve' (owner P)",x,u,c,1),...A.outputs],residual:Ne(Q(e.changeAddress)),genesisGroups:[{authorizingInput:Db,outputs:[0]}],payload:new Uint8Array(0),...ke(e)};if(T.inputs.length-i.length!==Db)throw new Error("unexpected input layout");const I=["pool","token-reserve",...A.roles];Ye(T,[n.covenantId,c]);const R=ve(T,I,"change");if(R.built.genesis[0].covenantId!==v)throw new Error(`pool genesis id ${R.built.genesis[0].covenantId} != client-side P ${v}`);const K=2+A.outputs.length;if(R.built.outputs.length>K+1||R.built.outputs.some((N,D)=>D>0&&N.binding?.covenantId===v))throw new Error("graduate: output layout is not the pinned one");const M=f.split===void 0?void 0:$d(f.split);return{...R,P:v,poolNext:m,reserveNext:x,escrow:b,dust:g.dust,pooled:f.pooled,treasury:M?.treasury??0n,creator:M?.creator??0n}}a(Rd,"buildGraduate");var Mo=10n*we;var Af=0;var Tf=1;var Cf=3;var e2=1;function Ud(e){const{ctx:t,pool:n,funding:r}=e;if(!ze(Cn(t,n)))throw new Error("bindLp exists in the v1 pool only");if(pi(n.state))throw new Error(`pool ${n.covenantId} is already bound to L ${h(n.state.lpCovId)}`);if(n.state.lpShares!==ut)throw new Error(`an unbound pool is at the graduation share count ${ut}, this one says ${n.state.lpShares}`);if(r.length===0)throw new Error("bindLp needs a KAS input as the L genesis authorizing input");const o=e.inventoryValue??Mo;if(o<Mo)throw new Error(`inventory cell value ${o} is below TOKEN_CELL_KAS (${Mo} sompi)`);const i=n.covenantId;const s=h(n.state.tokenCovId);const c=Ce(vu,i,ji(t.pool,i));const d=le(t,"L inventory (genesis, owner P)",c,o,void 0,void 0);const u=r[0];const l=We(u.outpoint.txid,u.outpoint.index,[{index:Tf,value:o,scriptVersion:0,script:d.spk}]);if(l===h(Aa)||l===i||l===s)throw new Error("L collides with 0^32, P or T");const f={...n.state,lpCovId:L(l)};const b=Et(t,"POOL' {lpCovId L}",f,n.value,i,Af);const g={name:"bindLp",inputs:[an(n,"POOL bindLp(tokenPrefix, tokenSuffix)",Ha(t).poolBindLp,du(t.pool,n.program,t.token)),...r.map((y,v)=>de(y,v===0?"KAS (L genesis authorizing input, inventory funding, fee)":"KAS"))],outputs:[b,{...d,cell:d.cell?{...d.cell,covenantId:l}:void 0}],residual:Ne(Q(e.changeAddress)),genesisGroups:[{authorizingInput:e2,outputs:[Tf]}],payload:new Uint8Array(0),...ke(e)};Ye(g,[i]);const m=ve(g,["pool","token-reserve"],"change");if(m.built.genesis[0].covenantId!==l)throw new Error(`L genesis id ${m.built.genesis[0].covenantId} != client-side L ${l}`);if(m.built.outputs.length>Cf)throw new Error(`bindLp has ${m.built.outputs.length} outputs, the covenant allows ${Cf}`);if(m.built.outputs[Af].value!==n.value)throw new Error("pool value must be unchanged by the bind");return{...m,L:l,poolNext:f,inventoryNext:c,budgets:m.built.budgets,fee:m.built.fee}}a(Ud,"buildBindLp");function Hb(e){const{ctx:t,changeAddress:n}=e;const r=Rd(e);const o=r.built;const i={kind:"pool",outpoint:{txid:o.txid,index:0},value:o.outputs[0].value,covenantId:r.P,program:Fi(t.pool,r.poolNext),state:r.poolNext,daaScore:0n};if(!ze(He(t)))return{graduate:r,pool:i};const s=Q(n);const c=o.outputs.length-1;if(o.residualValue<=0n||h(o.outputs[c].spk)!==h(s)){throw new Error("graduate pays no change to fund the bind: fund it with at least the inventory value plus both fees")}const d=U1({txid:o.txid,index:c},o.outputs[c].value,s,n);const u=Ud({ctx:t,pool:i,funding:[d],changeAddress:n,...e.inventoryValue===void 0?{}:{inventoryValue:e.inventoryValue},...e.feeMargin===void 0?{}:{feeMargin:e.feeMargin},...e.feerate===void 0?{}:{feerate:e.feerate}});return{graduate:r,bind:u,pool:i}}a(Hb,"buildGraduateAndBind");function Pf(e,t,n,r){if(n<=0n||n>t.state.lotsSold)throw new Error(`cannot sell ${n} lots with ${t.state.lotsSold} sold`);const o=Ai(it(e.curve).curve,t.state.lotsSold,n);if(r!==void 0&&o.total<r)throw new Error(`quote ${o.total} is below minKasOut ${r}`);return o}a(Pf,"sellPrecheck");function Vb(e){const{ctx:t,curve:n,supply:r,userCell:o,seller:i,n:s}=e;const c=t.curve.params;Sr(`sell(${s})`,e.proofVerdict,e.allowUnboundExit===true);Ar(t,n);Ot(`curve ${n.covenantId}`,n.state.tokenCovId,e.tokenId);const d=ud(t,n,r);Tr(o,d,n.covenantId);if(e.expectedTokens!==void 0&&s*c.lot!==e.expectedTokens)throw new nr(`sell(${s})`,e.expectedTokens,s*c.lot);const u=Pf(t,n,s,e.minKasOut);if(o.state.amount!==s*c.lot)throw new Error(`user cell holds ${o.state.amount} tokens, sell(${s}) needs exactly ${s*c.lot}; consolidate or split first`);const l=Wa(t,[{cell:r,name:"supply"}]);const f=Ce(r.state.amount+s*c.lot,n.covenantId);Fe(d,[o,r],[f],_t);const b={tokenCovId:n.state.tokenCovId,lotsSold:n.state.lotsSold-s,feeAccrued:n.state.feeAccrued+u.fee,phase:Bt};const g={name:`sell(${s})`,inputs:[ht(o,[f],"KCC20 user cell (T leader, 00 || sig)",Vt(2,1)),Sn(r,"KCC20 supply cell (T delegator, empty witness)"),on(n,`CURVE sell(${s})`,pt(t).curveSell,ou(t.curve,n.program,s)),...(e.funding??[]).map(v=>de(v,"seller KAS (top-up)"))],outputs:[le(t,"merged (owner C)",f,l,d,0),An(t,"CURVE'",b,n.value-u.cost+u.fee,n.covenantId,2)],residual:wo(Q(i.address),"payout (seller)",Tn),genesisGroups:[],payload:Lo(e.partnerTag),...ke(e)};Ye(g,[n.covenantId,d]);const m=ve(g,["token-rest","curve"],"payout");const y=m.built.residualValue-$o(e.funding);qa(g.name,y,m.built.fee,e.minNetOut);return{...m,quote:u,curveNext:b,mergedNext:f,payout:m.built.residualValue,netOut:y}}a(Vb,"buildSell");var t2=100000000n;var Gb=we/20n;var n2=we/10n;var Ps=a(e=>e.partner===void 0?{}:{partnerTag:e.partner},"partnerOf");function ii(e=nt,t){try{return c0(e,eo().list(Tc(e,t)))}catch(n){if(t!==void 0)return[];throw n}}a(ii,"committedPresets");function qb(e){const{sources:t}=e;const n=e.networkId;const r=new Map;for(const p of e.contexts??[]){ni(p);r.set(p.curve.templateHash,p)}let o=false;const i=e.presets;const s=a((p,k,P)=>{const S=vr(p,n,k,P);ni(S);return S},"contextOf");const c=a((p,k,P)=>{const S=vr(p,n,k,P);return Cs(S)?S:void 0},"baseOf");const d=Il(n??gn);const u=a((p,k)=>p.pool.revision===k,"isOfRevision");const l=[];const f=a(()=>{if(o)return;for(const p of ha){const k=p===nt&&i!==void 0?i:ii(p);for(const P of k){const S=c(P,p);if(S===void 0)continue;l.push(S);if(!r.has(S.curve.templateHash))r.set(S.curve.templateHash,S)}}for(const p of Ii(n??gn)){for(const k of ii("v1",p)){const P=c(k,"v1",p);if(P===void 0)continue;l.push(P);if(!r.has(P.curve.templateHash))r.set(P.curve.templateHash,P)}}o=true},"loadPresets");const b=a((p,k=nt,P=d)=>{f();if(P!==void 0&&P!==d&&!Ii(n??gn).includes(P)){throw new Error(`revision ${P} is not a ${n??gn} build`)}for(const O of r.values())if(O.curve.preset===p&&He(O)===k&&u(O,P))return O;const S=s(p,k,P);r.set(S.curve.templateHash,S);return S},"contextFor");const g=a(p=>{f();for(const k of r.values())if(He(k)===p&&u(k,d))return k;return void 0},"anyContextOrUndefined");const m=a((p=nt)=>{const k=g(p);if(k===void 0)throw new Error(`no ${p} curve context available`);return k},"anyContext");const y=new Map;const v=a(p=>{let k=y.get(p);if(!k){k=new Bi(p.curve,p.pool,p.token);y.set(p,k)}return k},"decoderOf");const x=a(p=>{f();for(const P of r.values()){try{if(v(P).decode(p).kind==="curve")return P}catch{}}const k=Ib(p,l);if(k!==null){r.set(k.curve.templateHash,k);return k}throw new To},"contextOfCurveProgram");const w=a(p=>{for(const k of ha){const P=g(k);if(P===void 0)continue;const{stateOffset:S,stateLength:O,templateHash:E}=P.pool;if(p.length>=S+O&&Jt(p,S,O)===E)return P}for(const k of r.values()){if(u(k,d))continue;const{stateOffset:P,stateLength:S,templateHash:O}=k.pool;if(p.length>=P+S&&Jt(p,P,S)===O)return k}throw new Error("pool program matches no known pool template")},"contextOfPoolProgram");const A=a(async()=>{const p=Ui(await t.feerate(),"GET /fees");return e.feeMargin===void 0?{feerate:p}:{feerate:p,feeMargin:e.feeMargin}},"feeOptions");const T=a((p={})=>({...e.fundingOptions,...p}),"fundingOpts");function I(p,k){const P=`cell ${k.outpoint.txid}:${k.outpoint.index}`;if(!/^[0-9a-f]{64}$/.test(k.covenantId))throw new Error(`${P}: malformed covenant id`);if(k.amount<=0n)throw new Error(`${P}: non-positive value`);const S=v(p).decode(k.redeemScript);if(S.templateHash!==k.templateHash)throw new Error(`${P}: source template hash ${k.templateHash} != recomputed ${S.templateHash}`);const O={outpoint:{txid:k.outpoint.txid,index:k.outpoint.index},value:k.amount,covenantId:k.covenantId,program:k.redeemScript,daaScore:0n};const E=a((U,X)=>{if(JSON.stringify(U)!==JSON.stringify(X))throw new Error(`${P}: source state differs from the state decoded from its program`)},"differs");switch(S.kind){case"token":E(Pa(k.state),Pa(S.state));return{kind:"token",...O,state:S.state};case"curve":E(Lc(k.state),Lc(S.state));return{kind:"curve",...O,state:S.state};case"pool":E($c(k.state),$c(S.state));return{kind:"pool",...O,state:S.state}}}a(I,"verifiedCell");const R=a((p,k)=>{const P=I(p,k);if(P.kind!=="token")throw new Error(`cell ${k.outpoint.txid}:${k.outpoint.index}: program is a ${P.kind} cell, expected a token cell`);return P},"tokenCellOf");const K=a((p,k)=>{const P=I(p,k);if(P.kind!=="curve")throw new Error(`cell ${k.outpoint.txid}:${k.outpoint.index}: program is a ${P.kind} cell, expected a curve cell`);return P},"curveCellOf");const M=a((p,k)=>{const P=I(p,k);if(P.kind!=="pool")throw new Error(`cell ${k.outpoint.txid}:${k.outpoint.index}: program is a ${P.kind} cell, expected a pool cell`);return P},"poolCellOf");const N=a((p,k)=>{if(k!==void 0&&k.toLowerCase()!==p.toLowerCase())throw new Po(p,k)},"requireCurveOfProof");const D=a(async(p,k)=>{const P=await t.curveHead(p);if(P.covenantId!==p)throw new Error(`curve head of ${P.covenantId}, asked for ${p}`);const S=x(P.redeemScript);const O=K(S,P);Ot(`curve ${p}`,O.state.tokenCovId,k);return{ctx:S,curve:O}},"curveOf");async function ue(p,k,P=false){const S=h(k.state.tokenCovId);const O=k.covenantId;const[E,U]=await Promise.all([t.tokenCells(S,O).catch(()=>[]),t.covenantCells(O).then(pe=>[pe.supply,pe.reserve],()=>[])]);const X=[];for(const pe of[...U,...E]){try{X.push(R(p,pe))}catch{}}const B=p.curve.params;const V={supply:(B.curveLots-k.state.lotsSold)*B.lot,reserve:B.gradReserve};return L1(X,S,O,V,P)}a(ue,"curveCellsOf");const oe=a(async(p,k,P)=>{if(P.length!==32)throw new Error("owner must be a 32-byte x-only public key");const S=h(P);const O=(await t.tokenCells(k,S)).map(E=>R(p,E));for(const E of O){if(E.covenantId!==k)throw new Error(`token cell ${E.outpoint.txid}:${E.outpoint.index} is not of lineage ${k}`);if(h(E.state.owner.identifier)!==S)throw new Error(`token cell ${E.outpoint.txid}:${E.outpoint.index} is not owned by ${S}`)}return $b(O,k)},"userCellsOf");const ae=a(async(p,k,P)=>{if(P!==void 0&&P.toLowerCase()!==p.toLowerCase())throw new Eo(p,P);const S=await t.poolCell(p);if(S.covenantId!==p)throw new Error(`pool cell of ${S.covenantId}, asked for ${p}`);const O=w(S.redeemScript);const E=M(O,S);On(E);const U=Ot(`pool ${p}`,E.state.tokenCovId,k);const X=$1((await t.tokenCells(U,p)).map(B=>R(O,B)),U,p,E.state.tokenReserve);return{ctx:O,pool:E,poolToken:X,T:U}},"poolOf");const ce=a(async(p,k,P,S)=>{const{ctx:O,pool:E,poolToken:U,T:X}=await ae(p,P,S);const B=gs(E);if(k!==void 0)J1(k,E.state);const V=Yi({...On(E),lpShares:E.state.lpShares},Ue(O));const pe=(await t.tokenCells(B,p)).map(fe=>R(O,fe)).find(fe=>ld(fe,B,p)&&fe.state.amount===V);if(pe===void 0)throw new Error(`no pool-owned L inventory cell holds ${V} (borrowing disabled, guard 0)`);return{ctx:O,pool:E,reserve:U,inventory:pe,T:X,L:B}},"boundPoolOf");const te=a(async(p,k,P={})=>kr(await t.funding(p),k,T(P)),"fundingFor");const je=a((p,k)=>{const P=Ju(p.map(U=>({id:j(U.outpoint),amount:U.state.amount})),k);const S=new Map(p.map(U=>[j(U.outpoint),U]));const O=P.steps[0];if(P.steps.length===1&&O?.kind==="split")return new _o(S.get(O.input).outpoint,O.carve);const E=P.steps.flatMap(U=>U.kind==="merge"?U.inputs:[]).flatMap(U=>S.has(U)?[S.get(U).outpoint]:[]);return new Oo(E,P.steps.length)},"needsOf");const st={async buildCreate(p){const k=b(p.preset,p.contractSet??nt,p.revision??d);const P=await A();const S=p.prepValue??xf;const O=p.curveValue??wf;const E=await te(p.creator,S+O+2n*k.curve.params.tokenCellKas,{feeAllowance:n2});const U=Bb({ctx:k,creatorAddress:p.creator,metadata:p.metadata,funding:E,prepValue:S,curveValue:O,...P,...p.factoryGate===void 0?{}:{factoryGate:p.factoryGate},...p.kasPrice===void 0?{}:{kasPrice:p.kasPrice}});return{prepAndCurveGenesis:Pe(U.prepAndCurveGenesis),tokenGenesisInit:Pe(U.tokenGenesisInit),registration:U.registration}},async buildBuy(p){Sr(`buy(${p.lots})`,p.proofVerdict);N(p.covenantId,p.expectedCurveId);if(p.borrowInto!==void 0){throw new tr("borrowed receive into an existing cell: the deployed curve buy requires OpCovInputCount(T) == 1 and a user output of exactly n * lot")}const{ctx:k,curve:P}=await D(p.covenantId,p.tokenId);const{supply:S}=await ue(k,P);const O=Sf(k,P,p.lots,p.maxKasIn);const E=p.userCellValue??Ht;const U=await A();const X=await te(p.buyer,O.total+E);return Pe(Mb({ctx:k,curve:P,supply:S,buyer:{xOnlyPubkey:p.buyerXOnlyPubkey,address:p.buyer},n:p.lots,proofVerdict:p.proofVerdict,funding:X,userCellValue:E,...U,...p.maxKasIn===void 0?{}:{maxKasIn:p.maxKasIn},...p.tokenId===void 0?{}:{tokenId:p.tokenId},...p.maxAllIn===void 0?{}:{maxAllIn:p.maxAllIn},...Ps(p)}))},async buildSell(p){const k=p.allowUnboundExit===true;Sr(`sell(${p.lots})`,p.proofVerdict,k);N(p.covenantId,p.expectedCurveId);const{ctx:P,curve:S}=await D(p.covenantId,p.tokenId);const O=p.lots*P.curve.params.lot;if(p.expectedTokens!==void 0&&O!==p.expectedTokens)throw new nr(`sell(${p.lots})`,p.expectedTokens,O);const{supply:E}=await ue(P,S);const U=Pf(P,S,p.lots,p.minKasOut);const X=h(S.state.tokenCovId);const B=await oe(P,X,p.sellerXOnlyPubkey);const V=B.find(li=>li.state.amount===O);if(!V)throw je(B,O);const pe=await A();const fe=V.value+U.total<Tn+Gb;const Oe=fe?await te(p.seller,0n):[];return Pe(Vb({ctx:P,curve:S,supply:E,userCell:V,seller:{address:p.seller},n:p.lots,proofVerdict:p.proofVerdict,allowUnboundExit:k,funding:Oe,...pe,...p.expectedTokens===void 0?{}:{expectedTokens:p.expectedTokens},...p.minKasOut===void 0?{}:{minKasOut:p.minKasOut},...p.tokenId===void 0?{}:{tokenId:p.tokenId},...p.minNetOut===void 0?{}:{minNetOut:p.minNetOut},...Ps(p)}))},async buildSwap(p){if(p.side==="kas->tok")Sr(`swapKasForTokens(${p.amountIn})`,p.proofVerdict);const{ctx:k,pool:P,poolToken:S,T:O}=await ae(p.poolId,p.tokenId,p.expectedPoolId);const E=await A();const U=p.tokenId===void 0?{}:{tokenId:p.tokenId};if(p.side==="kas->tok"){const sr=Ht;const um=await te(p.trader,p.amountIn*he+sr+(p.deliverToScript?.scriptFunding??0n));return Pe(V1({ctx:k,pool:P,poolToken:S,buyer:{xOnlyPubkey:p.traderXOnlyPubkey,address:p.trader},kasInScaled:p.amountIn,funding:um,userCellValue:sr,...E,...U,...p.deliverToScript===void 0?{}:{deliverToScript:p.deliverToScript},...p.minOut===void 0?{}:{minTokensOut:p.minOut},...p.maxAllIn===void 0?{}:{maxAllIn:p.maxAllIn},...Ps(p)}))}const X=await oe(k,O,p.traderXOnlyPubkey);const B=p.extraCell===void 0?void 0:X.find(sr=>sr.outpoint.txid===p.extraCell.txid&&sr.outpoint.index===p.extraCell.index);if(p.extraCell!==void 0&&B===void 0)throw new Error(`cell ${p.extraCell.txid}:${p.extraCell.index} is not a spendable cell of the trader`);const V=X.find(sr=>sr.state.amount===p.amountIn&&sr!==B);if(!V)throw je(X,p.amountIn);const pe=p.amountIn+(B?.state.amount??0n);const fe=bo(On(P),pe,Ue(k),Da(k));const Oe=V.value+(B?.value??0n)+fe.kasOutScaled*he<Tn+Gb;const li=Oe?await te(p.trader,0n):[];return Pe(Xu({ctx:k,pool:P,poolToken:S,userCell:V,seller:{address:p.trader},funding:li,...E,...U,...B===void 0?{}:{extraUserCells:[B]},...p.minOut===void 0?{}:{minOutScaled:p.minOut},...p.minNetOut===void 0?{}:{minNetOut:p.minNetOut},...Ps(p)}))},async buildScriptSell(p){const{ctx:k,pool:P,poolToken:S,T:O}=await ae(p.poolId,p.tokenId,p.expectedPoolId);const E=h(mr(p.redeem));const U=(await t.tokenCells(O,`script:${E}`)).map(fe=>R(k,fe)).filter(fe=>fe.covenantId===O&&fe.state.owner.schemeByte===3&&h(fe.state.owner.identifier)===E);if(U.length===0)throw new Error(`no cell of ${O} owned by script ${E}`);const X=U.reduce((fe,Oe)=>Oe.state.amount>fe.state.amount?Oe:fe);const B=Rc(Y(p.redeem),n??gn);if(B!==p.scriptAddress)throw new En(`the script address ${p.scriptAddress} is not P2SH(redeem) (${B})`);const V=(await t.funding(p.scriptAddress))[0];if(V===void 0)throw new Error(`no UTXO at the script address ${p.scriptAddress}`);const pe=await A();return Pe(Xu({ctx:k,pool:P,poolToken:S,userCell:X,seller:{address:p.payout},funding:[],...pe,tokenId:O,scriptAuthority:{redeem:p.redeem,utxo:V,signerXOnly:h(p.signerXOnly),...p.allowAnyScript===void 0?{}:{allowAnyScript:p.allowAnyScript}},...Ps(p)}))},async buildConsolidate(p){const k=m();const P=await oe(k,p.covenantId,p.ownerXOnlyPubkey);const S=await A();const O=await t.funding(p.owner);const E=H1({ctx:k,cells:P,owner:{xOnlyPubkey:p.ownerXOnlyPubkey,address:p.owner},funding:O,fundingOptions:T(),...S,...p.target===void 0?{}:{target:p.target}});return E.transactions.map(Pe)},async buildSplit(p){const k=m();const P=await oe(k,p.covenantId,p.ownerXOnlyPubkey);const S=P.find(U=>U.outpoint.txid===p.cell.txid&&U.outpoint.index===p.cell.index);if(!S)throw new Error(`cell ${p.cell.txid}:${p.cell.index} is not a spendable cell of this owner`);const O=await A();const E=await te(p.owner,us(S.value).topUp);return Pe(pd({ctx:k,cell:S,carve:p.carve,changeAddress:p.owner,funding:E,...O}))},async buildGraduate(p){const{ctx:k,curve:P}=await D(p.covenantId);const{supply:S,reserve:O}=await ue(k,P,true);const E=await A();const U=await te(p.funder,0n);const X=p.keepSupplyDeposit===true;return Pe(Rd({ctx:k,curve:P,reserve:O,supplyEmpty:S,funding:U,changeAddress:p.funder,keepSupplyDeposit:X,...E}))},async buildGraduateAndBind(p){const{ctx:k,curve:P}=await D(p.covenantId);const{supply:S,reserve:O}=await ue(k,P,true);const E=await A();const U=p.keepSupplyDeposit===true;const X=ze(He(k))?Mo+t2:0n;const B=U?k.curve.params.tokenCellKas:0n;const V=X>B?X-B:0n;const pe=await te(p.funder,V);const fe=Hb({ctx:k,curve:P,reserve:O,supplyEmpty:S,funding:pe,changeAddress:p.funder,keepSupplyDeposit:U,...E});return{graduate:Pe(fe.graduate),...fe.bind===void 0?{}:{bind:Pe(fe.bind)}}},async buildBindLp(p){const{ctx:k,pool:P}=await ae(p.poolId);const S=await A();const O=await te(p.funder,Mo);return Pe(Ud({ctx:k,pool:P,funding:O,changeAddress:p.funder,...S}))},async buildAddLiquidity(p){if(p.lpSafe!==true)throw new xr(p.lpSafeReason);const{ctx:k,pool:P,reserve:S,inventory:O,T:E}=await ce(p.poolId,p.quoted,p.tokenId,p.expectedPoolId);const U=hs(P,p.shares,Ue(k));const X=await oe(k,E,p.depositorXOnlyPubkey);const B=X.find(Oe=>Oe.state.amount===U.dTok);if(!B)throw je(X,U.dTok);const V=await A();const pe=p.lpCellValue??ms;const fe=await te(p.depositor,U.dKasScaled*he+(pe>B.value?pe-B.value:0n));return Pe(hd({ctx:k,pool:P,inventory:O,reserve:S,userCell:B,funding:fe,changeAddress:p.depositor,shares:p.shares,lpSafe:true,lpCellValue:pe,...V,...p.tokenId===void 0?{}:{tokenId:p.tokenId},...p.maxAllIn===void 0?{}:{maxAllIn:p.maxAllIn}}))},async buildRemoveLiquidity(p){const{ctx:k,pool:P,reserve:S,inventory:O,L:E}=await ce(p.poolId,p.quoted,p.tokenId,p.expectedPoolId);const U=ks(P,p.shares,p.minKasOut,p.minTokOut,Ue(k));const X=await oe(k,E,p.withdrawerXOnlyPubkey);const B=X.find(Oe=>Oe.state.amount===p.shares);if(!B)throw je(X,p.shares);const V=await A();const pe=p.tokCellValue??vs(B.value);const fe={ctx:k,pool:P,inventory:O,reserve:S,userLpCell:B,changeAddress:p.withdrawer,shares:p.shares,tokCellValue:pe,...V,...p.minKasOut===void 0?{}:{minKasOut:p.minKasOut},...p.minTokOut===void 0?{}:{minTokOut:p.minTokOut},...p.tokenId===void 0?{}:{tokenId:p.tokenId},...p.minNetOut===void 0?{}:{minNetOut:p.minNetOut}};if(!kd(B.value,pe,U.dKasScaled)){try{return Pe(Ja({...fe,funding:[]}))}catch(Oe){if(!(Oe instanceof Tt))throw Oe}}return Pe(Ja({...fe,funding:await te(p.withdrawer,0n)}))},async planDeposit(p){if(p.lpSafe!==true)throw new xr(p.lpSafeReason);const{ctx:k,pool:P,reserve:S,inventory:O,T:E}=await ce(p.poolId,p.quoted,p.tokenId,p.expectedPoolId);const U=await oe(k,E,p.depositorXOnlyPubkey);const X=await A();const B=await t.funding(p.depositor);const V=Nb({ctx:k,pool:P,inventory:O,reserve:S,cells:U,owner:{xOnlyPubkey:p.depositorXOnlyPubkey,address:p.depositor},funding:B,fundingOptions:T(),shares:p.shares,lpSafe:true,...p.lpCellValue===void 0?{}:{lpCellValue:p.lpCellValue},...X,...p.tokenId===void 0?{}:{tokenId:p.tokenId},...p.maxAllIn===void 0?{}:{maxAllIn:p.maxAllIn}});return{transactions:V.transactions.map(Pe),totalFeeSompi:V.totalFee,shares:p.shares,dKasScaled:V.final.dKasScaled,dTok:V.final.dTok,summary:V.final.summary}},async planWithdrawal(p){const{ctx:k,pool:P,reserve:S,inventory:O,L:E}=await ce(p.poolId,p.quoted,p.tokenId,p.expectedPoolId);const U=await oe(k,E,p.withdrawerXOnlyPubkey);const X=await A();const B=await t.funding(p.withdrawer);const V=Kb({ctx:k,pool:P,inventory:O,reserve:S,lpCells:U,owner:{xOnlyPubkey:p.withdrawerXOnlyPubkey,address:p.withdrawer},funding:B,fundingOptions:T(),shares:p.shares,...X,...p.minKasOut===void 0?{}:{minKasOut:p.minKasOut},...p.minTokOut===void 0?{}:{minTokOut:p.minTokOut},...p.tokCellValue===void 0?{}:{tokCellValue:p.tokCellValue},...p.tokenId===void 0?{}:{tokenId:p.tokenId},...p.minNetOut===void 0?{}:{minNetOut:p.minNetOut}});return{transactions:V.transactions.map(Pe),totalFeeSompi:V.totalFee,shares:p.shares,dKasScaled:V.final.dKasScaled,dTok:V.final.dTok,summary:V.final.summary}},async buildSweep(p){const k=await A();if(p.venue==="curve"){const{ctx:E,curve:U}=await D(p.covenantId);const X=await te(p.funder,0n);return Pe(Fb({ctx:E,curve:U,funding:X,changeAddress:p.funder,...k}))}const{ctx:P,pool:S}=await ae(p.covenantId);const O=await te(p.funder,0n);return Pe(jb({ctx:P,pool:S,funding:O,changeAddress:p.funder,...k}))},async curveParams(p){const{ctx:k}=await D(p.covenantId,p.tokenId);return k.curve.params},async buildExactCell(p){const k=m();const P=await oe(k,p.covenantId,p.ownerXOnlyPubkey);const S=await A();const O=await t.funding(p.owner);const E=ps({ctx:k,cells:P,owner:{xOnlyPubkey:p.ownerXOnlyPubkey,address:p.owner},funding:O,fundingOptions:T(),target:p.amount,...p.mustSpend===void 0?{}:{mustSpend:p.mustSpend},...S});return{transactions:E.transactions.map(Pe),totalFeeSompi:E.totalFee,cell:E.cell.outpoint,plan:E.plan}},finalize:Wc,estimate:v1};return st}a(qb,"createTxBuilder");var r2=Object.freeze(["mainnet","testnet-10"]);var Wb=Object.freeze({mainnet:"v1-kasseal-mainnet-3","testnet-10":"v1-kasseal-mainnet-3-tn10"});var si=Object.freeze({mainnet:Object.freeze(["v1-kasseal-mainnet-3","v1-kasseal-mainnet-2"]),"testnet-10":Object.freeze(["v1-kasseal-mainnet-3-tn10","v1-kasseal-mainnet-2-tn10"])});var o2=Object.freeze([...si.mainnet,...si["testnet-10"]]);var a2=Object.freeze({mainnet:"https://app.kasseal.com/v1","testnet-10":"https://testnet.kasseal.com/v1"});var Fo=class extends Error{static{a(this,"UnsupportedNetwork")}networkId;constructor(t){super(`network ${JSON.stringify(t)} is not supported: use 'mainnet' or 'testnet-10'`);this.name="UnsupportedNetwork";this.networkId=t}};var jo=class extends Error{static{a(this,"UnsupportedBuild")}build;networkId;constructor(t,n){super(`contract build ${JSON.stringify(t)} is not a ${n} build (${(si[n]??[]).join(", ")||"none"})`);this.name="UnsupportedBuild";this.build=t;this.networkId=n}};function zb(e){return e==="mainnet"||e==="testnet-10"}a(zb,"isKassealNetwork");function $t(e){if(!zb(e))throw new Fo(String(e))}a($t,"assertNetwork");function Jb(e){$t(e);return Wb[e]}a(Jb,"buildOf");function i2(e,t,n="v1",r=Jb(t)){$t(t);if(!si[t].includes(r))throw new jo(r,t);return vr(e,t,n,r)}a(i2,"createContext");var s2=Object.freeze(["buildBuy","buildSell","buildSwap","buildScriptSell","buildConsolidate","buildSplit","buildSweep","buildBindLp","buildAddLiquidity","buildRemoveLiquidity","planDeposit","planWithdrawal","buildExactCell","curveParams","finalize","estimate"]);function c2(e){$t(e.networkId);for(const i of e.contexts??[]){if(i.networkId!==e.networkId)throw new Fo(i.networkId);if(!si[e.networkId].includes(String(i.pool.revision)))throw new jo(String(i.pool.revision),e.networkId)}const{presets:t,...n}=e;const r=qb({...n,networkId:e.networkId});const o={};for(const i of s2){const s=r[i];if(typeof s!=="function")throw new Error(`builder method ${i} is missing`);o[i]=s.bind(r)}return Object.freeze(o)}a(c2,"createTxBuilder");var di=class extends Error{static{a(this,"ApiError")}path;status;problem;constructor(t,n,r){super(`${t}: HTTP ${n}`);this.name="ApiError";this.path=t;this.status=n;this.problem=r}};var _r=class extends Error{static{a(this,"HeadMoving")}constructor(){super("the curve or pool head is changing hands; read again");this.name="HeadMoving"}};var d2=a(e=>new Promise(t=>setTimeout(t,e)),"sleep");var Xb=a(e=>`${e.txid}:${e.index}`,"keyOf");var ci=a((e,t,n=e.confirmed)=>({outpoint:{txid:e.outpoint.txid,index:e.outpoint.index},amount:BigInt(e.amount),covenantId:e.covenantId,redeemScript:L(e.redeemScript),templateHash:e.templateHash,state:t,confirmed:n}),"cellOf");async function Yb(e,t,n,r){for(let o=0;;o++){const i=await e(`${t}${n}`,{headers:{accept:"application/json"}});if(i.ok)return await i.json();const s=await i.json().catch(()=>null);if((i.status===429||i.status===503)&&o+1<r){const c=typeof s?.retryAfterMs==="number"&&s.retryAfterMs>=0?Math.min(s.retryAfterMs,3e4):1e3;await d2(c+Math.floor(Math.random()*250));continue}throw new di(n,i.status,s)}}a(Yb,"getJson");var Ef=50;async function l2(e,t){if(typeof e.baseUrl!=="string"||!/^https?:\/\/[^/]/.test(e.baseUrl))throw new TypeError("baseUrl must be an http(s) URL");const n=[...new Set(t.map(c=>c.toLowerCase()))];if(n.some(c=>!/^[0-9a-f]{64}$/.test(c)))throw new TypeError("ids must be 64-character hex token ids");const r=e.baseUrl.replace(/\/+$/,"");const o=e.fetch??((...c)=>fetch(...c));const i=`${e.cells===true?"&cells=1":""}${e.pool===false?"":"&pool=state"}`;const s=[];for(let c=0;c<n.length;c+=Ef){const d=n.slice(c,c+Ef);const u=await Yb(o,r,`/tokens/heads?ids=${d.join(",")}${i}`,e.attempts??5);s.push(...u.items)}return s}a(l2,"fetchCurveHeads");function u2(e){$t(e.network);if(typeof e.baseUrl!=="string"||!/^https?:\/\/[^/]/.test(e.baseUrl))throw new TypeError("baseUrl must be an http(s) URL");const t=e.baseUrl.replace(/\/+$/,"");const n=Lt(e.network);const r=e.attempts??5;const o=e.fetch??((...b)=>fetch(...b));const i=e.useTip??true;const s=e.ownKey.toLowerCase();let c;let d;let u=[];const l=a(b=>Yb(o,t,b,r),"get");const f=a(b=>{if(b.startsWith("script:"))return b;return b.toLowerCase()===s?`pk:${b}`:`covenant:${b}`},"ownerParam");return{lastFunding:a(()=>u,"lastFunding"),async funding(b){if(It(b).prefix!==n)throw new Ee(`${b} is not a ${e.network} address`);const g=await l(`/address/${encodeURIComponent(b)}/utxos`);u=g.utxos.filter(m=>!m.isCoinbase&&m.scriptPublicKey.version===0).map(m=>({outpoint:{txid:m.outpoint.txid,index:m.outpoint.index},amount:BigInt(m.amount),spk:L(m.scriptPublicKey.script),daaScore:BigInt(m.blockDaaScore),address:b}));return u},async tokenCells(b,g){const m=f(g);const y=(await l(`/tokens/${b}/cells?owner=${encodeURIComponent(m)}`)).cells.map(v=>ci(v,Ea(v.state)));if(c!==void 0&&m===`covenant:${c.poolId}`&&c.cell.covenantId===b){const v=ci(c.cell,Ea(c.cell.state),false);return[v,...y.filter(x=>Xb(x.outpoint)!==Xb(v.outpoint))]}return y},async covenantCells(){const b=await l(`/tokens/${e.tokenId}/covenant-cells`);const g=d??b.supply;if(g===void 0||b.reserve===void 0)throw new _r;return{supply:ci(g,Ea(g.state)),reserve:ci(b.reserve,Ea(b.reserve.state))}},async curveHead(){const b=await l(`/tokens/${e.tokenId}/curve-head`);if(b.headSpent===true)throw new _r;const g=i?b.tip:void 0;d=g?.supply;const m=g?.curve??b;return ci(m,zl(m.state),g===void 0?b.confirmed:false)},async poolCell(b){const g=await l(`/pools/${b}/cell`);if(g.headSpent===true)throw new _r;const m=i?g.tip:void 0;c=m===void 0?void 0:{poolId:b,cell:m.reserve};const y=m?.pool??g;return ci(y,Jl(y.state),m===void 0?g.confirmed:false)},async feerate(){return BigInt((await l("/fees")).feerateSompiPerGram)}}}a(u2,"createApiSources");var Qb={"format":1,"builds":{"v1-kasseal-mainnet-3":{"network":"mainnet","poolTemplateHash":"92acd761504e4fa05acf70675ef1aea0c66efa2126ec5c726e4779b8aef054e0","treasurySpk":"000020d6f09e0da20f689e3b11900593fecdecdc88ed81f013031c749bde92d928e574ac","compiler":"silverc v1.0.0 3ed973335b59269293564805cc2c58a14595ec03","presets":{"standard":"2be93557b8ec945037c412dc9d4454ab0f4db2c009d3377f869c86de71511116","standard-k103":"449ac11f51e003c98dfbcfad96a330720096ef001a613b3ed7e1b58680fa7a40","standard-k113":"0643d3c5d2d7bf6e71e001891ba9dc9a24e5298da978ddee02454c958d8639a2","standard-k124":"9238c2d040337c7eb37e60e4fbba2e3013fe7da33a636df07fad2d87a46046f0","standard-k136":"63374fa4722ff12f1e6eda572de47cdbda85f874737d9f5f6991165821fd913d","standard-k164":"e33565f853b6623850723dca69eab64f318136b5d4cc757e583222363f61f75b","standard-k180":"02341861ed155887afc2bdad3993f4761e10f32e538c1ef4d4f363b661d53ab6","standard-k198":"f018d7f633a328da5edfaae2d10c0a5fc2c1898911480ea1ff3725f5b253e417","standard-k218":"511888557051e038e7bf29086adf5bb0620ec6ac45a5aae2bd2ec6732904d846","standard-k240":"69217edab57016aa96e0330e5c8c018a67b38efe3ae118e44486cd09b07219dd","standard-k264":"9da1fab5b917f9786c887fb7f0d167a11a363bb31147be12800c8196b677f258","standard-k291":"ec4ede74304a64e76f356711f1d81f3468295692bcdc26d0d58bc9c03123af12","standard-k320":"0a69a027d9952ba9ffd038248be914cb59efb4e7be7bc1dfffa2dfe42826c7fd","standard-k352":"59ce5b2b58a40f73bbd1d8bd13659be1cefe3baff3f1e6775036e1e28ef9a021","standard-k388":"f2bee7226e3947dd4043368b4d2d5319d0988b0a43b93e3087755b46f7fb02d4","standard-k427":"00a7bd0b392014fc54f1a21ca1e470be89e3b62845d963fca24aaf4fe1ec38dc","standard-k470":"b1d1764e81fd897ebcc935a5bfdcc1633ed049e78d9a80c116f44d86504da657","standard-k518":"79c5bed4cf639f8ef2990da1b3e0179f1ae2a0be94b37f5bb817ef8a914698f9","standard-k571":"05abd1c295e49ff754f94dbc4eaed8e2cbaf3b8355a25e200ef865920aec8df2","standard-k629":"ac19b0bbf7030dd1f8cd659abf4cee124bff5c15efa1c098c4bc3f6efe2ecd1f","standard-lot10k-k1097":"57a0c8b8528bf76afb9094d5a32822fd990b91f411705b3fc0f9d2712beac409","standard-lot10k-k1209":"541dc79c18f976e3b810077a02682582a36a93527956639b88c2a69a2f8f3219","standard-lot10k-k122":"e76697c298e5fe14801a5a0161f2967dcc311e83ff081c8409bcf49c84232188","standard-lot10k-k1332":"10a35013e46aba7725ef9e41fe0ef1bb6a3d5ba7faa4096806e5b53caf2e0736","standard-lot10k-k134":"1db8819f73f9d4970e0e6a05082bd02a6b57346942798c7c0e4fcb6f0b42b280","standard-lot10k-k1468":"4d314cdfc634dc33ba7c53dc4044f84cfc6b0e6689c4f723b2efa18b230a1e0c","standard-lot10k-k147":"d1d2dfe8a46330d056b899fe1f108356e1fcbc3b1d88638b567a5adf28e99a0e","standard-lot10k-k161":"35295116523bc6aea0b3514433659c22a52c120cd04f7457766a939197e3c44c","standard-lot10k-k1618":"ebecda60cbaa50df051cdc3014efbd4ee9eb503a026ff43f844235f5be0e32d5","standard-lot10k-k177":"a2aba93696c899b4b563f82ebf633aaae6b0b8d4b938bc8eb53c37eee058c7ff","standard-lot10k-k1783":"990aab2b660822405bbea2625f170367d0766a259f69545209c1f3aa1a29794e","standard-lot10k-k195":"4531febedddbaa47ad6c8874483bcaea6420e72fc3b240a5118422658575e7c3","standard-lot10k-k1965":"2444e804d177f137928e8f18c33f6ee0beb26ce0daae03f35b90a80cd8fee86d","standard-lot10k-k214":"5b3a3ddce662df39b3232a00c4fade6e250ae1c06e689c0764c7507bc0918bd3","standard-lot10k-k2166":"f162e8407ce1c302a2ddeae92b69b6262093ca73337b064ea0a7da80603d9cab","standard-lot10k-k235":"9ddda64bd3960d321c79aff84940df14ac79ac26e347cb9da579aa960c94fb2f","standard-lot10k-k2387":"1d1b874000a265bcc232c39ffcbbc353034b9ffea85ca1e7d947fb4f9e23581a","standard-lot10k-k258":"6db568e7c43705b0a57fb4e83cd141b18c637d4130eabc250f7b3dc04aa27265","standard-lot10k-k2631":"7c8eaab58a41824d749002dbf7cfde403b9f2b9867c9ee9307a67a9a5b1d128c","standard-lot10k-k284":"fca0c35de88ec3f492deebfd87ab6a7109143e27d25b0c6876dc647aae6f75d9","standard-lot10k-k2900":"9418e575d52e20e12bb134748a84ebcfde4f84485a0b9c8688e737fdd4fd878b","standard-lot10k-k313":"ec788b764c605b7849a8e7d091b4af0dc1dd266fc38ad5e0ba4bb963486f34ea","standard-lot10k-k3197":"9c809dce72058d98c35597bd85b88f928b607c838cf82f2122d70642ed6cbc37","standard-lot10k-k344":"d4cf2ece5c3b789e6ec0ed5dee422b968b2448c19dfa2ec69c6923ccacfd2771","standard-lot10k-k3524":"e354ad8c966ae2ca90f601e46c79e3f93f6897290b375ec69f839e52bdc5c4bb","standard-lot10k-k379":"f3e33305ef584a75440c44016d88981476674a07b7d43704168aea5a84045323","standard-lot10k-k3885":"1f94dc5a1ab1998f11bf77c367e968bd9b7c129da5fbd2caa872f34651f5beea","standard-lot10k-k417":"8c38b8e7cdb4134bc71dbd8c9bc57a53cf6890b910ec6013beeac12f4860c071","standard-lot10k-k4283":"eb57ec8454d7597b4b12f9ef784a1baef9aee0bcb0142e65e1a92b43bf8e7ec7","standard-lot10k-k459":"437dfc2519fd8b07acd9e2a64b15b69c41f96ef4d5c9a4416b34dbf1b8d1a5b6","standard-lot10k-k4722":"d2adbce0b05be9d70392982fa1c0bdf62c2b5b43f4ca0d45d763f80a5437aebe","standard-lot10k-k506":"9356f8f892537c6a0e601ac4a56a658bfa3cc5ec02f25dc1c3389a7e95184390","standard-lot10k-k5205":"f1c1baa7606131f5a720a8b84939e12d970c77da7cd64e76a0de58a49c50e2b4","standard-lot10k-k557":"cb8e5d4b8b4911100c6173fb02ee97da77d684d6e092265dcbcf668d51cf0123","standard-lot10k-k5738":"abedb4c6cf3064c5985ffc75c8baa8e4be8c79cd5db5a7bff8dc0b78903d6dca","standard-lot10k-k613":"973f3f23fd6b268064aa472405e5f90bf6db2c5dca41c41851b59d77e145351d","standard-lot10k-k6326":"77bdd97c27bd80c899417d1767c2721bde145755bebd99fc28eced44de98bbd2","standard-lot10k-k675":"ee55a4efa1851016ad4647eec05aaa7a1c5838053fef879dfd971e1dcc999109","standard-lot10k-k6974":"768ece871c1f0b93a822326f9d75d94a5f5f85a7079a383bdf72ac3c87d15721","standard-lot10k-k744":"2c436f64c9cc63c8074a15ac63cbbe5c898162f0d304a2d3593a9482c3e09f32","standard-lot10k-k7688":"882164264b83672924cff04c4a73878cd97b74a64b762dccdd9a7aa042ad4344","standard-lot10k-k820":"3b83bf5e8e27fbd9e529a63a20f58dd321945c38c99afb2d0cedd1cdd8acc7c3","standard-lot10k-k8475":"985daecf86052c5e60ded375aa3edbdc9e21bfd92a00e61c2f1801a039ba180c","standard-lot10k-k904":"24937f1661efde2567fd0ef2ab4d8b75e37de15bc7ddb112ff365702ee1adc2a","standard-lot10k-k9343":"6b7ace8aa9ed57367184d1960020323c28c0eb56f36305324ce72c250b55a00c","standard-lot10k-k996":"ffc446f2899002ec1e927fb9f8900bc12dd3a8181a1b87e427172cf306891644"}},"v1-kasseal-mainnet-2":{"network":"mainnet","poolTemplateHash":"92acd761504e4fa05acf70675ef1aea0c66efa2126ec5c726e4779b8aef054e0","treasurySpk":"000020d6f09e0da20f689e3b11900593fecdecdc88ed81f013031c749bde92d928e574ac","compiler":"silverc v1.0.0 3ed973335b59269293564805cc2c58a14595ec03","presets":{"standard":"63f032f087bbc2b66e0f2561b1f40a6319c80f9792743c7e77e5761d41f51f5f","standard-k103":"99f4b03048adae1281c959cc3e08799c4a8926be67fe0e783d3eb9f0f22b04d5","standard-k113":"78a2aa6f280ce9b6329d8a8c172f0dbff83fb32e72f4ff3b427ec759cfa1bb9a","standard-k124":"eb0b9ccb9a7f365425548ace55c3eecd85dc2ead732134e73f72c84c379cc89e","standard-k136":"9fe3087ca102d0944abde60b8f43d929c94963b91c2eed4060dbc3c950c2bd7a","standard-k164":"b561b9576250c2aad24c513845a7626804de24d3bcecaf811509374daba4d3d1","standard-k180":"0f7202636a8a2e2dd4b220b40efbd68d3382ec45fa541c6d63e5f3a2e98f424d","standard-k198":"450dcf4f6595835685246ddf9d4a21e3c98fc20e31e7d3a8bbd2901d71e52c3c","standard-k218":"3254b43422f6553964709a95f4b0b7299e26ccf0d7713ce3b2e0fd270532e235","standard-k240":"79fad128a4cd1199c1a0cfa6e9555c6128329fd664f3e7eb04335be1bfbef017","standard-k264":"cf74df28cce3c19922b59a278289f1430d9ef3393686d7bfeb54cb69e84a2f47","standard-k291":"3b2c887ce4b8bc53f33ee082ad0d6fb3443c0c7b2bb7d6fed3398d63baf1ceb0","standard-k320":"6493c27471d12663104230f69276305e1a5c16285a94941b8b4772457ab7e517","standard-k352":"e2d1796b8274e7a7f59813ec4a57efe5a8b54efd82ff8bfa4578f78f72d2c773","standard-k388":"6b0dc5c9d6a58be64f426cea85f4beb86bfe6876b744762ed7e1683277baf21c","standard-k427":"0d76faae8b462a9388abae8540264127c3c31cb7d31f75259e93238fe6e316bf","standard-k470":"4fc34a29b17a7ee83777345c262213522938faff558d202847096220e2f6ab10","standard-k518":"630c865af745bb6d8e2fa28ed098e7221ea09b1b92653d98eeba7c85e7a52fd4","standard-k571":"72356a7e111e5e0c5f8f61aa491ee635900deb4237e63d9f27c7db3d0e7ed389","standard-k629":"25335ce66ac3e6f2cc54b4dfe746810e0bb9c88157a4385d2334b37f4875b275","standard-lot10k-k1097":"f57d8808578b4c32aa9cbf0c58b29c0a06014a1a7bd7ef763098a14307382b46","standard-lot10k-k1209":"416f1fc7559f2b2d50ece009af191fd483990815e03e9198b6152e5ae8210657","standard-lot10k-k122":"81776a87bd0d070c6d61b8efc56ff890e118c0a92fb069eee83a8eaa26f65096","standard-lot10k-k1332":"9b9b09bf5999e86a68490728be7b8543be575043be78d2d3055011e0589a6038","standard-lot10k-k134":"1c8c397f54b586ed1d0c7c8adfad74b9aae0ccbb54ad38630723a16598e07802","standard-lot10k-k1468":"f042dd4d19ec70c94ec34d440fc4f80c0870b57cea948e73d2e4e605cf56881d","standard-lot10k-k147":"5d55d50bf35fae5def76500490a41482f392de204ecc29081297d05b76279aab","standard-lot10k-k161":"3532d348f4dec1da35a955c7c6be792a482105f0dd4135be0143cad9a881866e","standard-lot10k-k1618":"8a78f3adb37965041347a3dd637a7fc772ec224c9e9b9b30a86683f4068497af","standard-lot10k-k177":"8c90fa1940510f78f01666ee940a56575f50734a24c625f316972ef4944b9029","standard-lot10k-k1783":"5102485705c9cee3043362cb1745c9cc6ff72bb15602879cc2a6e1986a9db8ad","standard-lot10k-k195":"07ed5ea760ba1f4960418039adcce53505a8194fcd1872e2de9cf7abb214c33b","standard-lot10k-k1965":"ec63b54f0902a647358bb6c50af14e5fd9b366f2d75d75fc33ad5362e488e7b9","standard-lot10k-k214":"3dd3836b1179206f8ca214d51c23710216c0849adb95c480bb70374ad6428dbc","standard-lot10k-k2166":"d4bc4e1ae34815c47b9618b9ee936f51ad38eef4a43658154d27a51f44d0c781","standard-lot10k-k235":"231c2159de46492146adcff5e1e38df8bb010dece5743be00d695e57ffeccc56","standard-lot10k-k2387":"8e447589cf917dd7758aa48eb2970a6a8ae898a58ae39f446e77dac128bfd581","standard-lot10k-k258":"3b9e3c5b88c60a059182498be5bdae65485e636a2d18ef5b11393ad54a35819a","standard-lot10k-k2631":"aa5b39e2a2509430a501881479cdf8224905ef8462d555a9f6dc75511980aae7","standard-lot10k-k284":"8cf87a41a3e0dfbb117971eb17cea01d4ca93c2db8510973ade25e33309e6e82","standard-lot10k-k2900":"a3e82290d97d22fd0094c19c20f3e393988d4d3090e2c8558a65611153b2ca9c","standard-lot10k-k313":"4096fd3ff11071e6c17a36a8956d8bbfc5700b2f0623ebec99dc82609231cbdc","standard-lot10k-k3197":"e435c425d0fceb2b631575b10099043019166edd9f05c7884adc22c08b57aee5","standard-lot10k-k344":"135750ffc03972405b7dfefc67a755305e96b4c915e9708b64668e04134e8eda","standard-lot10k-k3524":"e6764b6fed7e72685ef654efb836b6222423d8caccf2f8cf89442dbdbbcde9a8","standard-lot10k-k379":"a1dd4eebf6cc99d7dd84520c5b2bc460a491c51237a794bd9beb363dde92d29f","standard-lot10k-k3885":"9fe40f7b3a38ef0ea1683a436b920ff04b1b0103c89bb833a0ae05ed68177685","standard-lot10k-k417":"cfd48c1c756b5f992f127a42ccc6e3e50d19181bbdaf4cf0fd1198f2523463b7","standard-lot10k-k4283":"f4877bd7b933ca74379cf478d4a13d000319be8ea3d35f72d45900e8c1d9ae67","standard-lot10k-k459":"d87362e57417e706f48d045cbe7c89e957e2b61831c4edcc9adc0f1717490aa3","standard-lot10k-k4722":"733e4627604d5e63de49b12b41390a9f46eae76c603f617e246eadf693b10418","standard-lot10k-k506":"11ef0ba994a43bf67bfb922f0497c82ec51bdff2d58b8debb8447c7c0305c672","standard-lot10k-k5205":"fcf8c7e1209eee04f0e6b87570452826fdd15d6101c84d01f31ea96454fb177b","standard-lot10k-k557":"0fdda861a1731e3d59e3b54c9c1b024e1c48edf4f883677a8d632ff6233bcc92","standard-lot10k-k5738":"7887d57fa7dc77508b1fdfd4defca3ea1b9c8981ea88606b6c25e8b1994d2b34","standard-lot10k-k613":"fa3862e2467ecc49607595cb6b19b8dee89300f051fc415874c728a6d3c4ebd9","standard-lot10k-k6326":"051fb5b6c1a64910e21ef1530bdcf56ca496c544ab629a8e9b5f84b39b3dcfd9","standard-lot10k-k675":"a57afb1b0e0b8ca6a761ff155df15fca14eddd68a06239e521b294d8d5ef5cd3","standard-lot10k-k6974":"046579e2f751f215aec7f89209afb789f61647235932dfd0db3e6b5aafd7f458","standard-lot10k-k744":"472169d09d362ac955e2dd95590edbfb8e36d28172346789ce3a415c69084e50","standard-lot10k-k7688":"e02e6fe80b6c1c1d9336ed5e8b3fe2a99e52a467302036ae39e2cfb875224b29","standard-lot10k-k820":"f55cd57f7b3c99d923c5954ac32544228920800d0fef97c10564d69fb80864b5","standard-lot10k-k8475":"3958a7e5b4c45933861ae19f10b74e1041a30e80799951026bd8102427a4594e","standard-lot10k-k904":"00c63dadf3d39f402d9ba2404beac113447aaeaa47069bbff324d0e93e57685c","standard-lot10k-k9343":"51b76eeae6e031cceb3f70682cebad4f23d74da4f30219f88d0a76f648f62336","standard-lot10k-k996":"f67a808cd2a10a00d2e28c82583675bcfceb7279eb6366d4bd98bbb5bba05c95"}},"v1-kasseal-mainnet-3-tn10":{"network":"testnet-10","poolTemplateHash":"28170395ca9350966c0d732ffce8b13c5a94201e74552b7add67143a35dea56a","treasurySpk":"0000204e105b097b8ff8eed92c73c3ea68260ef39a955d3d5e9e57e9753e6a263ad335ac","compiler":"silverc v1.0.0 3ed973335b59269293564805cc2c58a14595ec03","presets":{"standard":"6a99c683259e6c6fd3e622e55c28f47631b159f96154927ecfd3d041fed1845a","standard-k103":"bf32014ecc7d4609c6843806be633d29b6394d912cf7ea1dcc591ce966e9d14e","standard-k113":"5c44f0c19ccb0e603b81a424d73572816728173deee46b511fd61f04f072025f","standard-k124":"2d0b5000c173ff217e79c68e9cff25ac0b7a0e635d22272495fa34243e139e8d","standard-k136":"64c7d5873448d5caca892329dbdba6b9f5ecb2741152ba9b7d38ba39fc0cd00e","standard-k164":"e808ffe275c322a89319bfcc92609e04b76e0cbae98b1320445c7bf9c6a4d3a0","standard-k180":"27e132d96a5f7c94553cd3292996721e499566a25a3acaf9555cfcc7f51f7642","standard-k198":"0d57d3420c46caffe2d08658d194a6b7bb9da4f8ae5f986b0f25fc0d200340de","standard-k218":"67da246319bedf67d0e53d12d83f8e1c499f86620e2924658f3eed339df381f9","standard-k240":"93a71f58f66962e0767db04dd66f1705d8408c01fa69a9fb573e7fc410208e7c","standard-k264":"20677869a064a4f1022aa8158b01724197b13637048b726973dd08ab0348f945","standard-k291":"be5822f2f56358216dcc57752700c88761f989112ee5e46fc9a653b0bee3d082","standard-k320":"a2e1f0ec345837df1d490e929b587a6a136a595fa8733654c2d7cb24cce79755","standard-k352":"83b69d6e3de9b3e25a98ee1aee7c3b838b07837938e621208bbaf648c41327bd","standard-k388":"1220964669e4b140020f5c727ffcda68cf3ecf59b93259e727eabbd5a547fb17","standard-k427":"1752cd20c8dc1624cfb65d2a670d9996cb204227782723372534a45edc8b4bf5","standard-k470":"bdb183900a56d77e94e4f01eeeddff2425e048546eb3dc04622eb6b83f03cc8b","standard-k518":"a437e2d153d4e483190ad206559f86f03bced636f4082d64de6dbd128f4ffbed","standard-k571":"c40aa64625d5ec90b561270b4ec3355387e179aae9ee257d81a1eb1bffcaa06e","standard-k629":"40231bf442cc72a690ffbebe11113ed6e46b0945eb2358e65b193ad2c2515d40","standard-lot10k-k1097":"034bae29e9fb3dbf67a87cf080bb0de9e0a389c0950d99b7a58f08d81eda6847","standard-lot10k-k1209":"d2cce30802710178d1f7c1aff16361d634f4b94661af7e4a372ced2b2d69e781","standard-lot10k-k122":"baa71520b3b5065666b7988c4564d7abf076c97694ad8ab6be6812c5992e2e2c","standard-lot10k-k1332":"db1a8cfff0b5788b38d1242c6f1c54d616a8eb8f52ac205f5838753eea7bff89","standard-lot10k-k134":"655079b0fdc5e914585402142f0dd338252b43aa642a38a034052b98f9f2972b","standard-lot10k-k1468":"7c3fcab8f72f4eb377f70e6584d1ebecfbf3933d60cd109e1308188bf4bf0ebc","standard-lot10k-k147":"adb6351ac5783c136a0beb9ead4db0becf381a89dca415367ee0554f7bc6e115","standard-lot10k-k161":"c4b0fd7e3bce1908c04665eaa03aabb0864a5297c2f74317a36bc9615e9883d3","standard-lot10k-k1618":"4b21f6918d0424026b8ec8dfafbdfe57e0665599d8564511957cd1304de26e17","standard-lot10k-k177":"09242f58061834c64363975572314e252d0968e67ddeeb4d24e35089290e006c","standard-lot10k-k1783":"10ac90fcbb155726c7d371bce050dcb403021520b7f076a0aab1feb328e9f1e6","standard-lot10k-k195":"eb623b6a191da22ac8a47b56ebb57bafee68bd0cdfa36bccc4ed773591dae4a4","standard-lot10k-k1965":"e39700ea997d199a83e2029c6a0ff0774f0591ca5a53c20d948e075a509cd9c8","standard-lot10k-k214":"4d47d9d03962d978925193eb59b9f23c6eb38d2d82c0676b54e016a43bac167f","standard-lot10k-k2166":"520a1007f9bd83b45cbb7e7c44492b589e4af3d7340ae94eddf9405a0520ee6d","standard-lot10k-k235":"0d4994a893620f9c4b45d8b0eb59555e17724fa88a2084442c3c50356b0edb03","standard-lot10k-k2387":"1a9cae76d54fa93b3ef497274dc85673ebc8a22115e9eee11296e88fc485a884","standard-lot10k-k258":"085afaf932018d472314557e7b04c19d13a1365353733b310eed8a5444ce7833","standard-lot10k-k2631":"9d28f7c188c59143a17a33b9e89ac47fb526ff5fb16afb28e169718c12b91930","standard-lot10k-k284":"4181d7beebe7003f561882d201b8f25eac39157071f8c66844a449a6ad50160c","standard-lot10k-k2900":"5720f60e98f091275f9b7f588492475ddb2f726963a83ef836e12f7c4c3a1134","standard-lot10k-k313":"b8dfc565f77a13e39b8d6593884368a681e77c1346c7c8d02260044fe5bc893d","standard-lot10k-k3197":"6dd478a7f29215430baa7bb79b8c1da390ad1140d9ce1f1dfc91068fe14fa817","standard-lot10k-k344":"aaae3ec76b57033e3e4ca0323d90b98e2246adca76ceef0570588611e5e55de1","standard-lot10k-k3524":"0a6eb60d8c689cedb6c8320832d78b6d9b5f597d7a5b56082b6c745da5316b50","standard-lot10k-k379":"145544cd1514c31025ae8dcec41c75e7242f53bf84fe24d5a17de6adcddedd7c","standard-lot10k-k3885":"3ca85c47832edbed2d8ee8c26720e2832294264db4dc043a7ff3736f6450d3bd","standard-lot10k-k417":"5f7f43aa0f9c25a9ef35063adbac3c1aa8fd63c52fdde606a8a9fe3714f28d15","standard-lot10k-k4283":"b4af08c0f11246d783cd9e8cfa27073737c6a70dd6e3dd670f7c56f4e0b817da","standard-lot10k-k459":"8ea183bb6ef2da5bce42a575028535cc32b94fbf8c3870dc2ce266e7d0f57c78","standard-lot10k-k4722":"ffbd1b4c8494fe85486ddcc71b46590b5444a0117a4f1349dd53477244f9738f","standard-lot10k-k506":"f7cc71ad47717b41d0e4453e807903ab31cc5b2a31b44ca10bbe9d42fbf52ef6","standard-lot10k-k5205":"9a142355c718cf4a80df211b7e8afa440092b6b03fc4c6b1c28c273018671e47","standard-lot10k-k557":"3fe7b22324d756f9bc2f2b088c7aa5596993a2d4ae0013b567325fd433bcb477","standard-lot10k-k5738":"a172693963bd64b8acf5b80c16082bf12689e5b585394ebb7423add571335633","standard-lot10k-k613":"811a6d542f8778aae99063e3a34ffad505c94fc0dddd4c2453814874ab20ee56","standard-lot10k-k6326":"bf2088635fa4ffdaaddf0454fb427982b14ccb90f1ecb546e2d2f5528deb6050","standard-lot10k-k675":"bea532429d922df39c775862e2bc978180da18eb2a2ab7ad6d264a733da985e1","standard-lot10k-k6974":"1508b0f57977cf209517a183bec21b95074115137e4df37d2df6b7cc50cc83aa","standard-lot10k-k744":"5adf09de039eb72e605b4d36836a6521c12b469b3715b45eac9cf0d35c1821bc","standard-lot10k-k7688":"df20d6ec142dbcd3ddbcb8393ccd87646d383e3fe18ae09e8a1b80c1bb9b4ec5","standard-lot10k-k820":"04e37262553eb1764956cf5d608bedcea6b8b262cb01001eb3eb83de1f7a4a2c","standard-lot10k-k8475":"88ed559faa4c15148cc6b45958a9965d02ebfd5277c460177dff30cd2dfe5ed3","standard-lot10k-k904":"5424336c60b277e0adcd3c0a43dc41da61275a9427cd4a14978ea0f6c53e9416","standard-lot10k-k9343":"dc8aec6fad3569c5cb87ee475fe95c18f09f3d63718416a4f51ca36e020c0412","standard-lot10k-k996":"6ea6d73d5a71396dcacf332b8bf68bfbf4022129b52ec8c4473d0ba756e5348c"}},"v1-kasseal-mainnet-2-tn10":{"network":"testnet-10","poolTemplateHash":"28170395ca9350966c0d732ffce8b13c5a94201e74552b7add67143a35dea56a","treasurySpk":"0000204e105b097b8ff8eed92c73c3ea68260ef39a955d3d5e9e57e9753e6a263ad335ac","compiler":"silverc v1.0.0 3ed973335b59269293564805cc2c58a14595ec03","presets":{"standard":"1154008bee8cb3998f2237f15f056191e98a70dfbca6692ac85c05363dafc3c3","standard-k103":"ab5495ea2d3096a0c9dc1d92c4e61323481b5ec03c09442cd0b4c2fdaf5cdd56","standard-k113":"edfab55ea14b255545edfbe4081e9a1ff9a25ce69d33a559da68cc6355d6f056","standard-k124":"bd07e70423b2e3bb41ed551ceb4b190b7629384b6e2c8becbfb45e36f10b1fcf","standard-k136":"b73f1c2540c39112dcf59893938a1d4b7d1e7d225e835de8374456916e37eb5b","standard-k164":"78c2fb5e06d486f34a3f0c1ee663430d14e3035f0e84c63855275546c799df96","standard-k180":"0d0a4bdfd87c169e0b0015baa0fd721c75d50f1ac9cb045b38f6fa61ad691681","standard-k198":"b6805e86a154ba69f648719d2b982fcf33fa16b196522f2c0b9fa477e2cbd95d","standard-k218":"43a87e6385b3726a6e41d1271b53fa58f128e9cdcc3eaa8cef9fe6a3c477a871","standard-k240":"9a582ef87181ccd389a8ab1d3be12e325e4db70ca5caa768dfbb2e4a4b13742e","standard-k264":"5b62b2f25a536629c52135d9326f4d164feeb25b058034b224d82e1ef5d19edf","standard-k291":"f710a3404746242a4aaa8080b1166746a950e657d95bd06fbe778fe46a72de0c","standard-k320":"25d6bfd717c8da07fa4324011926a448d51c74f5e490828281f6510e2c3a6584","standard-k352":"790e9ef2adad8b84a40ea03421c6df946d500470a6d3b94accbd69f35ee354f8","standard-k388":"2f0475449421481351b0a17679269bfb9efa45458cceb4ba6a43a56a15f9e6e8","standard-k427":"95be45462bef5b430a718372a148af7475bfb25cbca9bc2619dfb6ce2cfd1c7b","standard-k470":"3958f07f7d777bce117e503b0704119d7fdbec96799c4d382ba447f35125900f","standard-k518":"9e05df419950c2419c748e98e3cace2bf9bd145c988bb9162cd12d2f0a0f9684","standard-k571":"314e47f1cc87dd3c00673c2e1863f79736af90bf84dcceea513502e8d8c612f9","standard-k629":"4ce1845e5f002184cf1cb90392b7e9b739f8f54121706b91caf1e6edaa519fe8","standard-lot10k-k1097":"f38b62ad0a30937f73ef3e94bf8821a68d58449636d23e3ae8c998223d04f336","standard-lot10k-k1209":"7137ccef67a390e94b67a5e0b88726f3c37ffdc8b0a105835c6a4bdfa1b9e268","standard-lot10k-k122":"68b9d1c1a9d33f895ad6c4c4a1e32d68026f584c56be219c250454b3d62657f9","standard-lot10k-k1332":"eaac5ca0f06db88b9d3b20a9dfcae580c7dca4bb973a5255a523544701b13e9a","standard-lot10k-k134":"20bd5c0b786968566faef140689a32de578decf817a86ec302061a32dce79770","standard-lot10k-k1468":"b9a678ef7f10ab646f81d9ac8edb471b06901749f2ab1c7e408a41c567a2f266","standard-lot10k-k147":"25bda840ca412da297aa3ee393e94b0c76dc00015cb80819ae1e24bcf5b593d6","standard-lot10k-k161":"2c44966cf8c85ed01b18ca82bc8fbae21de16d06ce29accff01dd8ecbc3ad590","standard-lot10k-k1618":"0c30d5ce97d7588c4706a1344ce7d8a7d52ef693877e68f9ef0fb22b3fed3b91","standard-lot10k-k177":"49c58452fa959cab48de77439e65e56efb7dd3d37624fa35860813c005805b9e","standard-lot10k-k1783":"a5c3452cca0b03c46d2188e57314b01c2aa1e39a78c8f1a81158c4d266a10266","standard-lot10k-k195":"b3ba2a18986d0f10793d23a258c1aaf27fa01e3fd93d5d41003920b00986a291","standard-lot10k-k1965":"d2fe5cd688c0353646f01ef01d49ef14e91db36803b56fa55b4a93ea62315a7f","standard-lot10k-k214":"862052071634a76f313e098141bf22c07b0724ae26adefb58038dab5eb4a12ba","standard-lot10k-k2166":"966b85bbfafe3936375b05fb9f48d62162208e1cfa34b3bd5c10f7bfac0f21cd","standard-lot10k-k235":"9804c10d4277c26a9534afbbf1f7d5a605be4165cc706ed13e59181ee51fda4e","standard-lot10k-k2387":"27c221186e1a3df6a33d2aa04b024237e75f0cb1c8039d19f0d20a76856c5540","standard-lot10k-k258":"3d5a5a512a24ec276a29f3cba0d465d0e446e00b7258697ef908226c609b6788","standard-lot10k-k2631":"609fb20053602c16e1cb72656dad9b3134af0b005971b076b661fd2c3529255a","standard-lot10k-k284":"8d72c7acf82dcd765b529e757281109a0937b6ab7437fb1de0adbc6d222223a2","standard-lot10k-k2900":"5f7a101f5f7258cbf68020aba679362dc625a53a9027a13c98cf6deac3d7ff70","standard-lot10k-k313":"158ece2a2fef64561830ae618c371e15d6143a1e6c92f58370c45c3c0e1f77a7","standard-lot10k-k3197":"f4faa19d2e2f6d44b08d9e90fdc011f33300889e49fdfdeb5271ee251e149737","standard-lot10k-k344":"6250ee594ad41efc847191f0df0c9c18f7fe0dcfa6cbdfedb38ec5fbf84e95c8","standard-lot10k-k3524":"addde6968c6bea309989f5a7baf1a0da560af41ab9bde5389177e3d4b4e10beb","standard-lot10k-k379":"1e3c1fd85b6523602afd344a1b6c2ed875c5a865c4d0bc984c4ffc47ea1ba487","standard-lot10k-k3885":"ce02dca1151f132f7bdd1879543b67e95be7d9cb9c2574e277c518da296ef074","standard-lot10k-k417":"782481190ff73f236278248b79a1861614a1614ccaaadea511e9d54e08cdb74f","standard-lot10k-k4283":"1c70f564f0ee3e409f2af731003d51ac1bc8c6b6ffce8dd3ee27e28b8090fc75","standard-lot10k-k459":"c1e079622e99d2f11b74a26d17ca2491509376e98032d047f82f2ff10b19a3d5","standard-lot10k-k4722":"1d94e0cbb85b5d65361eca1b7e40530fa531a73aec7fd406f861b49fbd763039","standard-lot10k-k506":"b7e91f7145f2fac8094bef68b6ef38f5903945a04072c6f35dd86d4c8f49bc02","standard-lot10k-k5205":"eeece3a17ba0d2ee131c614062b194174f4b04e5e4a221401e7b0fe7b8114a69","standard-lot10k-k557":"dd6cab0892a6a12951e7ed92bc7209ec82f21c4f0a0f0eff027da792552773f3","standard-lot10k-k5738":"f01597c28da32ee133ef2e9f8705795db7f79a2acd494a9e12f21a80564c078e","standard-lot10k-k613":"f01035cce8f4198dd0bff50ce261a5439ac3fad2b8bea8826e22222edca80414","standard-lot10k-k6326":"89de882b6554f981c82edc319f8fdd88ab550ff601a1210c86ab08c3f1965f8f","standard-lot10k-k675":"0eaa78a9df698c134c1f85d776214896cceaa75097328cad7802f51ec141865b","standard-lot10k-k6974":"41d90a3b1217e5b299322a3d0c0801da7861afe0df8ed0f93f8718df733831f6","standard-lot10k-k744":"6026a4f3aadc7fbac6e79de9e0b9c72bf33b87dc26c857f0f4f6a7181b24b91a","standard-lot10k-k7688":"4a794f29a8c92a0da178d46a37fd218ff21f9b91e6e313e3b5bad3403138bbe8","standard-lot10k-k820":"dc5a8b815fe521a7d66777dadd8cbf450d96c983ce724494542c29fca30ce915","standard-lot10k-k8475":"ab1d5d0db82c127538c5d94ef7da6c47b4dd5df2df6cd5dff9e2d61fe236303f","standard-lot10k-k904":"9326d4bc136807d8b333c71a6a439b919ec7e8b99683f483a471a444d52e21e2","standard-lot10k-k9343":"b58f3d20e61e461e329e48c5a2dc396b014aded9f8663b262cb2076b10303b69","standard-lot10k-k996":"4c02890e058cc828ed253f73bf7533a495ab7d0a553539227f70c922a0abc189"}}},"tokenReference":{"path":"codec/fixtures/argent-kcc20-reference-c8a0871.json","templateHash":"9703112ee6e3555107cd168858992b77d3b74f655205b2b463b1f9ec2ec73cf7","source":"argent-lang/kcc20-reference@c8a0871 fixtures/public-mint/artifact.json"},"lock":{"path":"contracts/lock/v1/artifacts","set":"kasseal-token-lock","version":"1","networks":["mainnet","testnet-10"],"lockTemplateHash":"9f4eb229cfea334fafd15c05901ce20a8db0a59ba0932cbc7a3a1de079a70ac9","factoryTemplateHash":"481065e01ee2f15fe06e7ce2b865857b073e18a6298e30a22551426c4c328f6b","compiler":"silverc v1.0.0 3ed973335b59269293564805cc2c58a14595ec03"},"files":{"codec/fixtures/argent-kcc20-reference-c8a0871.json":"462a937240ff3dc6f297a06c2eeb48c5150e4a2a4995eedc71c724f3a34eedee","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k103.json":"149a1894b318fb2785d96afc8fd5bd480facdd1c62759097143e8eb2ce0f24f3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k113.json":"703d54bb1b1339c02beaa2ad2fc953abb11dac8b79235ce70395fb3559024a67","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k124.json":"71f5af7a991b4e34c1051ca55b0b81536f66cb5d1db30b39d92a16b596f4a57a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k136.json":"3fc842258d8157b8d49c040c1b0ddb9824b112be2d5c6106b2578a6b2fb45d1a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k164.json":"847a1a5cf74114ed58613338e2edab1d0f17141cb064071d7091626001ec454d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k180.json":"1c07a60ddbf6bd07577d6641382a042f61960deb78975fe0b0f5efb60f3bcdfb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k198.json":"e2db8760fa1363fbfbe15a7c1f28a7bcc9927eebd67f4b6e9b5b4802f53dfbcc","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k218.json":"f6de071a3deec2cbb6c2b198ae16861e638045cd1c0c52546250afeb06fb8c65","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k240.json":"960b2df1b506aca2188cab8dca3379781b0b7646dbdab29b5fff8c8c5c8a9755","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k264.json":"d7cb2e370de6438968be933070a2466e4407b1485ed7dfacbfc72afc138cac27","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k291.json":"953ef4f6578e3b93a77d64bc318d82aaf8969e2bbad193a99b27fc552f18b2e5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k320.json":"1c5e31e6d07de64f705a64a762f27acf5bd6eddeb09e66496950ea491dbe42b8","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k352.json":"a4ae40ad108824de2a99111ce0b186faa77a8e4e0f677ef7b9f78122c3c65a70","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k388.json":"6dcd796975eb1e7714fb9a1edbeb2522e12ae4f7fead17bb5a0324b6cd4412ec","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k427.json":"22494b94e25bed9239c666ba1dbe692b3a9b90ad9bf07548ddce49281b70d89a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k470.json":"0595909142bc78b40f3354923e9483c07ff2a60c1de4e7531059787bdcd3967f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k518.json":"cdd09e97c709f7b8b2a5187b8d551f28a243b177608ff10e578d697f13a232fd","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k571.json":"f31d68ebc34be7583702ee8b42618ecfa7578cc837e8b6a876f0bfd1bd7d4fd8","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-k629.json":"91b855ec43b7e22a567bc7661ad8d99c72a71fb266ecb89502cc1384a4d35942","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k1097.json":"47158fae30b2c4d4aeebce25e25a8aec192e5a06d6437f332fd52bff4cf27be0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k1209.json":"009c0ba5ee508640262fb05d4e38d204487c3fa2235ea45ef0a5f071b327e79e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k122.json":"5be1a0fd39f22470ce97e355fc18459b5b06902fc2279c6cdc22ceb6f8203abc","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k1332.json":"bb72f724d89321afb2fbcb63bffa8d867eeb1894d053e8ee43ce4a57f0d59c9b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k134.json":"878f79122a3c471c5cdea0c428251a7e3bac4a77b8e5b1233dfa11973e1802e3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k1468.json":"0bf2d6eebe06d4aaa99577e04245f5507e6f18e51f7c61fdeb55c93a2911e95a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k147.json":"417840ca08c3de333b1a1bebec76833bb39d8da1eacfbe70adcd2c6c98d88e97","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k161.json":"e4aff10b4156bcea76689502434b29a28f46a5385116f62d823b617431709482","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k1618.json":"5f78ffc3ec7d2b93c82913fb2f235e2cc9e4c031eff1329720ad45a7beaea2c4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k177.json":"c184072d1433b1271842769abfd8ad5975283b0e80e9222a4a98d88ce6685825","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k1783.json":"6504b24c23782c4cd4a1838cb04b968c639e4189a9c8865c677a9cebd497bc6a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k195.json":"879e9c65f6c7e59a62848f8d9ea95311f5d0dd82f8f1d7ae628e00bba16cf42e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k1965.json":"5d13273339a0adbeb1cb7686caf102a1296682a4f7ddafd62f0c9c5adc7c87d9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k214.json":"5d510b64b3987ef7eed77d7aa0556692db001d2fe8157611e6dec5fae48bfa8c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k2166.json":"c1ab0ae199f1d256c725b57d621ad0558eb64b32bfa547f99d413ad9a5f347d9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k235.json":"53c575571c990b70b84c3aa8dc29c6bda8a2205ebd0c5ea8074a66de7bae321f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k2387.json":"6bd32115321a945942e46d1b6929047e0b2ccdc035813f4fcd6d0ed9f024d3e6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k258.json":"de1fe87e42c03f9f4c93e7ecd41eb7d450fe0834c8ee904807c9d08735bc26ba","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k2631.json":"54939dc757fad92f0fda141268491886afcd39c3d8f8e662c15caae64ec20ff6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k284.json":"c1770971d6d6099f9e2518a5b36b0d98a5be3b09792cd88e5df485501ac65fbb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k2900.json":"8a17d832780f93c6050e780ea8582a35e984d8ce30148d354794a5470699bc6d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k313.json":"cb66c6255bede3978eacb1356d6f318c852d1bc44828bf23e0b8cb02ec4e7242","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k3197.json":"8d067f718fd2dbfaefb9c4286506865b07414c59fbde0e537ea255fc4ac5f11b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k344.json":"68cfcbe7c9ec404ff31c6b2d0bfcafbfcabf425343140ff8151ab0a6ab16ab75","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k3524.json":"b5f5a94748b702a88f50d1c35937f875424e4bec99ecf6b82140cfd6c55ff27b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k379.json":"59cc0a9d9f5ac6667f6ff3efa3f88efc5ad2f4678b2965033a92ba566407f1d9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k3885.json":"170f5c7d36521f000df9bd462305efaf95ca94a8b3874f0b85630f206d2ae31f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k417.json":"37b8c954c82f5541e5a2cdd7b5789447e8e09a73d5f61c9b9d1b461d83888408","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k4283.json":"ba5560f6109ae37fef484e6c81a65c83640608016525af816d448bd88dcd395a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k459.json":"0180caa133a00b32c9d9e606891cdb2cf922719efa4173881ba21540818b27b5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k4722.json":"e4998ab4de31bc6a7e132788b4d60a3b8e0731935a4fcbcb5211d9aceddbf6dd","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k506.json":"94acd24dcc2cd41e671b0a49861531fb8122522782c1d7f21985e58e21fd7028","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k5205.json":"806ea1906628d12ea78e88f5c2747ffc587ade61d0eab6d816b77e6baf7c5770","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k557.json":"da32c7ea0a908b2728eff5f9c4ffd7ba7fde6a3b7402cd7af9ee9411f41449fa","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k5738.json":"58b947869a6629173fdfb31498d8682d6d239a6d68d7afc767d72ff942232b8f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k613.json":"a5fa0e673b5e472a41fae60af6c36657fe70ffb0b3192b70e84bacfb41b21197","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k6326.json":"b993cded5c5b48e8c2540d627baef9190e5bbd707255bbcefcb127642bda15ca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k675.json":"b5a5e5da0d4230fcbbc2c901255b507b416965decf2018fe91b0ab7b4d79ce9b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k6974.json":"0afc7418e7b9fa0be8f9e741e6db00dc810ecba830d6f28c5e8f55e8e502868c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k744.json":"53a9b9c18c0b70e4e4b6852c4ce6b963539765889821718209ad0c144e46c755","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k7688.json":"7d43c38333c29f55d8dcc5e08249c6892a299a97e6e951c6caf63bc61dcd36cf","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k820.json":"2af066430bd54f906bb522b2d8af0c60afb73aebbc468c2e1094fbcf76e7d55a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k8475.json":"86d1cbdcd44d9e8249e829d83b4f85031b843f32f46bd18880866102c7269845","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k904.json":"b2db8320379c2b4a840fdaa3b6f973bd75530216c1ad45095aad8468605b02fd","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k9343.json":"891cc2ebfdc09918101586424d9c8bb70823b5ea8bde11bf84f1b46164e822f1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard-lot10k-k996.json":"64b2dd74ea9f06eabf59c555862b6ebe3506a95679d47f22055331cae83caadf","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.ctor.standard.json":"ca2cec3d3c201907439b79d69b5f2a27f1e493254dda39085e2d10f510a66b22","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k103.artifact.json":"0f5b1bc4b7af170eec8f7a7f28738b06255ed9d04a37cd26ecefdcccc8506575","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k113.artifact.json":"b58776f03e4738a817bbdfaea7065822bec6755779bc10e745a3426a7161d864","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k124.artifact.json":"b881a55d50343d941b7e6d5e0c22c122f2d969904c1311797fd946175d4a6eb6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k136.artifact.json":"7ed46208814df9cca9fca5e82ae18e3e848386abf0985c844bc1a806c9b92421","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k164.artifact.json":"e7f2b294faa3bed7fb16d5410da4f574d2d9238cc03a1d7e39645b7626aa799e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k180.artifact.json":"8d5b384cf93bee3c5b4589705424928593cc8cc8eab873e5ea3fa3423b39b4f4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k198.artifact.json":"9dca12762b5a0c8fd402197696aa640ab87dde87d24dd943fa167c11d2f4d9bb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k218.artifact.json":"0012d242a9d911ad3ee9b8979578363efd176979374ec7acf1d0ffc4db2a21c9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k240.artifact.json":"ab667e90189cfaf46032b4f3fe433525bfbc3847a9eb54e5b338f0f77c95dfb5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k264.artifact.json":"46f6c272a99f56384ef6127a6ac951937ad27065ed0266619774c851a62991fe","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k291.artifact.json":"a838909a0a4fcc595759868c1479836cf9d101eaf62e411feeed8e93ae246a5b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k320.artifact.json":"1496816386db74802365a39b7518bb162e7ddcca1e0abd0ae1af6bb4ba863349","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k352.artifact.json":"944fce3967a63c591d96c88abbab5337da080e7f0eedb1ec64f5b112306bc8f9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k388.artifact.json":"b3be6a0ad9a47b77d80b49b27f73110996042214af252c97b9b3448229f0e4c9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k427.artifact.json":"7992effc6fe92c84c1db84c65e9e9ed2804daa1fe3e558a0525079fa89ffd335","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k470.artifact.json":"cc6074465738efc9e9ccc7290e6d4b7a57b7f67f00f946d7adbad562944266c1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k518.artifact.json":"5b517c00b64fa800059a80b79512b3ea922884b82c40b70ba5fa140d2e6296e9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k571.artifact.json":"3c82b2a51c5cdae470a641aa294a49ba9ab04a94cc439a32b9c7528a6ed69a41","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-k629.artifact.json":"912faec7de3f2e28a6307ec8faebe47c9b1cbeb6e4d9967afc33deafafa9f52a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k1097.artifact.json":"defac73b3ff07792eadd86b921d6cd159537dd2e5618f02dd5f455bd01f5861e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k1209.artifact.json":"4df20e1eb4a41fa924c61a42f05e3a61c4795bae8cd75bfb27e42c7245a580c7","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k122.artifact.json":"4a3a0a8a98a3d903d2184f83efb9875d22cdbd95c641fe81ca7e5bc184c00fa0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k1332.artifact.json":"c5594e268af856399d8c7b072d1b1bdfa692536df387e2a1c811b1472855f357","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k134.artifact.json":"39568d19f44c2b2501049419d192e632c21082f9f0bd8a1f9f31de6867de2840","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k1468.artifact.json":"bdbc1e6a6efb8ccd8f7aff0009b10e3cfe805d257d733bd8a63383d42dafdb7b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k147.artifact.json":"9d0a3d82d73bdc541b9cf5b5361d76defd12c810c177a84d5ca03fb8bcfc8d72","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k161.artifact.json":"71edd70b9519564ab37edb4ae28b94945d5ffc471092cdfd2c7690947c3fb758","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k1618.artifact.json":"46fe893570fb78ad10b240700c36f7739ec53eb845cbabdf1c48a050ab8bb9f3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k177.artifact.json":"268868218f9506c55b9eb878b6be1ef2a8bfef563b22f0897ac636a73dfe344d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k1783.artifact.json":"b8949d646e5b6dd80f21547d1f8a9887f79a265fa338b1035631c7ca0d9f7404","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k195.artifact.json":"eda993819acc5204b5ee16a3baa1b97d62acfae33c00001cf9001ec35678dd1d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k1965.artifact.json":"21fdc542932ab478c573b58198eb2bc3ef5134ccdbff9d3726744e42c5ab9f83","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k214.artifact.json":"2c459cc39f3cd9feebca6ce334fef019b85703b00bb1c299a5534ad5c26de0c8","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k2166.artifact.json":"05b08572d298082d8bc00e010a2fe5fc5f818e036d17c2b99f34147873f74dfb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k235.artifact.json":"e1cf7a94517a226d9529fa30ae74ca0f86e1b45d7e9e62f90bba6dd793f7aad3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k2387.artifact.json":"aa9c498eebf79de38fe476db2610cd689f4a7fce0da0d81e3472dbf1e2356e78","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k258.artifact.json":"856e07ed614d205e13ca32d58c963b096c1987adc41e871b97fe97bdfcba1a62","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k2631.artifact.json":"4c59b9a0bc2c9af4a8ddc85cd343935950e65fbd47eaa83c79a6bace7280ad71","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k284.artifact.json":"63feab3e3986a98901af601bbfe1a0334e8954f15b956f55438518ead616d4d6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k2900.artifact.json":"8748aeb7d0b9eea3ceee6281fa3eb50ba13aebb2781bfcac8e283c5d9ade176d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k313.artifact.json":"7189537b54e1e4cb4005c934a53606103a9e780d00aa64403f33641a4d26e483","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k3197.artifact.json":"f8ee889aa44d65f5b84e4d1c76733c24e9409a7bc353e528ed1ed5ad7a2deb30","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k344.artifact.json":"65fe69bbf8586c5401d177d33cd7fb909a7065dca28a2de86bf1c35ce63a5937","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k3524.artifact.json":"83324c2a717e1826bc64e4f439a83863169df220aded9c73d967f227d282b3aa","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k379.artifact.json":"de2b2c6f1bdb1804f713310c10b7e13a5b1743aa34dd1068266c47b591dcfd5a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k3885.artifact.json":"3f4ef8157621baaa18c04da84e6903cf50f708ae8d48a84324f6542be789a199","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k417.artifact.json":"de1972a0b31051cd99baa7697ab95c2669460237aca0274aad95b40bf2244624","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k4283.artifact.json":"d0744bf36f04cf454af93385451408668d16158904b1649f021c8dc00fe27a90","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k459.artifact.json":"e075ab36ada38db424cecc9762b4a60c83257006e4cfdab7a03f34bda1449851","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k4722.artifact.json":"98afa518fb4cf95494c989687288417cf1241346c36cd4216d03dce476bd3a3a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k506.artifact.json":"6b4b94b9a2a4e81ec9a1f0ada2617b889ba904529748579cb31c597334adb858","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k5205.artifact.json":"de030723fda20cdaea730080b71479f8f1d1068ad0cb664005ee6530ead80fc2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k557.artifact.json":"4fdda0b84c903a0383e82bd1f8b445a5859eb035ec72fa5ff738c657659b3a9f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k5738.artifact.json":"509a65d42527eb5c2fe8def9b3b74fa5d648e344f038c3580689e0d941fe2c16","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k613.artifact.json":"a5428d5ffde48d05caece0384f62c50b96af148978e9ddf9244ac5bbe5e18e44","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k6326.artifact.json":"9ae493be696ee703c5cfc696a585d96d946dae9cfbbc918b52d82225c84e0c99","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k675.artifact.json":"e0584313e280fb3afb9b36980e5ba4bbb8aa3a8b63992bc3d990da4f025bb031","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k6974.artifact.json":"9b6dbf783855543cccf236f42dd97d5ca8442261a0bfd2d3d709d42fcdc2fb6d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k744.artifact.json":"821d05997eb63cc391f0a887f629fef873968490fe13dec390e5e80630ee119c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k7688.artifact.json":"d51a8b2e7b378761f9604e3e23c2129a53922f3af53890eceb0baefd926a5463","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k820.artifact.json":"cfc0c8cb9534c1ff6b80bfa2449b2821c667fff7d7590597bbbfa26f8e3d37d7","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k8475.artifact.json":"486c5d4e9bfdaeb6f8602b249a915b4c4155b44c0a7070b1a0b00050d4385e02","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k904.artifact.json":"8509e9431d0dd87daf076b7bc6e901aa2eb66ab458c55a7aa71da0484ca0c514","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k9343.artifact.json":"188c08e6819e8d9365160822872520f2b47a7deb84e4681ce47b27421635254f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard-lot10k-k996.artifact.json":"a338299cd21cb76b9755d7b9841d8156353918adc479c6e17cf818ec70228311","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2-tn10/curve.standard.artifact.json":"2b8a27d80e3bdd9968df6b50c0e5f2d462185d701f861837a1fcb4ee190946ba","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k103.json":"c1306a512ff9bb87be9721c33c0619f1b50efceacb2191e6dbb611fd120e3461","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k113.json":"af39fe159fa96a90fbabe1654bdb3c18b3ae5ac0203d585dd36bcde27e672445","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k124.json":"1a8143d0b0cd3696b0a72a9cc8f894ee3db5a5cabfd1e9bbc19d3306561babda","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k136.json":"08f6137d7dc7205ca147f875c34d13d4fcc275c1b3b150d1d34121d307d56211","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k164.json":"1cd10a124168acf6355bb8f74c03e7363c1ea9c02cbde420a1bd4b8e8d420d86","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k180.json":"d8fae65b49d2cce4ce604fc77372d125e1290e5f3dbad74b6a1db0e52a6824a9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k198.json":"244e27adf4032cf36a1fd7e9b2ba4acba4d26722c531c81c56a9cdeedd0431a9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k218.json":"d47047942b8d1ba305f558e44a117be24aeec1e70c34336d4d4f884577b22126","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k240.json":"a64ccadc42cc991c095c4e4dae39e2a0eacbf0cbc5f7bdbb71a855d89c2a970a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k264.json":"ea9ce4b91755148a3b8b27b19a4780b15da3d936e36f8035f7b864a381811ba1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k291.json":"aeb0dbc47cf31bc215fe185503d46b5a673e9f9015060dcc61640768d8796c33","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k320.json":"b26a6c676f85c2731d9b39b0f37b0ed056014f401098d116191444f3ee3b4e8f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k352.json":"5594417c78dc1da8a104ef1f7ef9892736bc3d63dbe0ebc1630ad2f08d09580d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k388.json":"10dfae31b394024ff38601fb0995d72270f021ba0f8c1f9a9a667d4b35b5209e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k427.json":"258f6c528e1218dbc157afe4e8a7bfbd663bf21bde416b2f59a94d4466a9193e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k470.json":"05224fc259313290c8503ede1d334abc685537c84750ca40fbe0074978fb1ba1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k518.json":"672c43c5bd50886e7e342215c4de6401615a4bcf2162e5f05ecea66e2bdb1d8c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k571.json":"b672221e2020e120b26285faf17f61c682c53a710c2d0109dfe4072eb58ae1e5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-k629.json":"a99185b2dbb29ba276c531bfbd7cf18fb56d72b02788570b7a700c4a1de51540","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k1097.json":"c25cd1ac9370314d3d0e587c61c96fa3e4b6a008f6f093e4134723f0b54c9116","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k1209.json":"aed9d0fe4894d3769cf7d19acc48a9321ad3a7143c224ff0a2d1944cd10c7533","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k122.json":"d4c010129dc15c3fd0209b9ff040b91c152139691ab2a1e2c4e231b1badd7ae3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k1332.json":"4c983ff6856d84ef58c9cd4eb95f5bbc38df6c9df65ee9be2d8ebc73bd810e7f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k134.json":"e9ade7157c9c87daafeb3d92d8b1ad350a75a44f497944e9ab02e71b1f1845e6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k1468.json":"62459138f994543ec583b01aff314533c59e4d5459527d904f4e96d7d264454d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k147.json":"5d9ab0459e3b3466f003998ff606e011548ef56685948950d6fb0e3ce5ad1b8f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k161.json":"80aaf71a4f36aa0ea35533ec45882060a381c879fdc6ceb9b4b6584825b931c2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k1618.json":"98e974e72969f76f6eaa022c89defa4b09628ae6bcd0d2819d69e9f33e832f81","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k177.json":"b9b437de546704d8661ecfebfc17f005a9e8ba1cc8f66669d52322440cfaba76","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k1783.json":"63ddceedb7eb456587c04f3b0427442d46f69001615b7d2a374c797a45327964","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k195.json":"95550adff6139bdc174eaa93a6a520b2614224060ea3a16bdadf1f3e2a04c1f4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k1965.json":"3b0d50df0164f3ebd307d531df703eccb8ec086406a3bce896303b6d8d548591","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k214.json":"2b88700e3cdb4f96c07b86a46b927ef16aeafd5017b01931d8bc9e48ef7b8985","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k2166.json":"49cdd3a0bb11daf0d3694b34872f01f3e1c8dd3e10a282708da027b0d5f22a3a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k235.json":"c86fbd53115c00f1a199eae700a91d7b465a3c86d038e291b1fbfb5ff1e74149","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k2387.json":"a73e0d1aa8e8518490ace076f76a2dfbe7c98d426e7083612f63915e7300856b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k258.json":"286650871a187f6fb15c6f27bfe77110f1937ff26ecd514b53ad3e478fa2776a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k2631.json":"ef3174792ae95f79dc2c41d2a2ff8909a362e505ffef4aa043ec0efd3953bfb9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k284.json":"d9961d86d07fd27657ce660c43f14e63b3a2a9a9a3613f6a26ee198e25b06b64","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k2900.json":"9d9bbcdad29b33dc463846f4a259832a3053a6bd1d9846b47e52f2a5ac881b61","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k313.json":"e80e71473634383e44c64988983a4a2da98fc82229ebaeb70f251203cba0673c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k3197.json":"4479e440157d63deb6c240db456baf8d04361817e95907a6a17ef2dfc73760ff","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k344.json":"40311f9fe095d4cad31879166ed5eac9c65a86a53442637f0fba8bb56ce3ae7f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k3524.json":"7a6bbf7eefa38b418a31bd5eeab46b5e1593d6fe0d6931c4912957f55c162fb7","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k379.json":"edc014e27af1c483e4bbfc6128063b4d101b7005ecbdc76744a7e172c9d7e4f7","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k3885.json":"f9be7e675beefe9235464ad52e1b48534f23589fed56fb0cb9573861fcc7b2b1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k417.json":"b5fee3bde08f4c878fb677cdaae7299d364d761defe75f629e5e64ff6cdd8ef3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k4283.json":"0af69184ec56826cd4d65f7e9498a8bd976fa6e001252833dcc951c7236683a9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k459.json":"6dcef71b733b9d295cf8aac6ba5044854763df892573353be4e5231b2a2986d1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k4722.json":"bd76af4ccf6fc1d8fee4a0bb1f10a8001a741ee79a12291d35ab046b8343873d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k506.json":"b9c5b640d984484b0cefc15b8d8d2b7955b0bec91230a0f6e79b782d6bbe24ba","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k5205.json":"88f67b19497ab1d9879e7aec5e9f8904881df0f374677229aa999a79e7886906","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k557.json":"2deeb18df19e1fe829e9bf27ddd250e22467d51c4e96b07171cd23fe2df4fe63","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k5738.json":"3314072db71add192863f51f03b9f6780d32b62bf8c67fa58ce58161b7d659d0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k613.json":"1ea9a698d1cea92d3fbdbc6b5867a9354bddfa9b2a418e275b356ac1ba9d5bf6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k6326.json":"8dde5361f2decd052dcd2a068532627a0ededf0f4f8d00e48cc64872e0e66715","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k675.json":"323ca86abca5192c45160b71639e20e52fdec0eb3af0c8f0131847a86741bc90","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k6974.json":"bab043a8929830083b9471410c44d743fe1f125f1756231e55f752ae609a38ca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k744.json":"bf4dfe818d57d8f12218c48e797a275cb7e3167d09fded28cd936e6e3ece2159","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k7688.json":"e1b8a60d205821b4669ecea9571b7ba26486e56ca130bbb6b95cad56ad1455bc","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k820.json":"8bebe0cfb7e8c57bd9a38c0d63adf083591fac56c4e85a37e084e89e629bc51a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k8475.json":"e35108e7963be7d9f1a81667bbedadd8697e1490a29e8f36fe7e445812906719","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k904.json":"3c2071b2b0de679c2bf1ec84af2ed0e3ec97290180867a57c5fdbae9c2273c4b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k9343.json":"2b9a76cb4cf60bad2ed000cc7f1fc0c18eaef75cd4bffa16ca338aec5b8a279a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard-lot10k-k996.json":"eef5d229e94cda8c4b152b2df57dfd82aa313c7c8e1c4f2c0c5fcd4527fae416","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.ctor.standard.json":"2fa9fd5cb1643358925947df6a9562db29a861f3469c6ba4060e96e7fe6bb2ca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k103.artifact.json":"6e762224e388b076e3296b94f9942e27cc1d69347f4fa73b12721dbb9905405a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k113.artifact.json":"80f4c981e3e2499a7a3d2f824df9891bc8cd20c984883cd368a2d964886b3107","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k124.artifact.json":"34e7e489899dea622cd01e21322f2dffd94649fe061753034387fccf67c7fca2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k136.artifact.json":"87f9fe8166999039fc21d096a570600bb2f461ef1c5cb7d83d9988aa700b37b9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k164.artifact.json":"694ce0a92c22b5f6dc277d6d2cca70b91c5b493cc48218775880d44f58f02c94","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k180.artifact.json":"26dabf7849841caec623c6d58cd5d715233717e53fd2c164ace3ca7825ffb61d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k198.artifact.json":"17280e7b1e098589be1f58de3ee72616bd46a4514bd5893a0dfbe0f5083fba9d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k218.artifact.json":"b7f34ff9d1adf4bcf92e5aa80139be195e0e9d00807e688e00ef6f098ac98c3c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k240.artifact.json":"79061e32cb53a620f75fb7a0ba9f7bbe7ee9af46d8e097dfb551b01e01eede73","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k264.artifact.json":"d3cd8ce8ac3acebe20fe4fe13658f0264234361e40b0b629f684499f2af4b3cb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k291.artifact.json":"9bcc4c8d00f0bace2550fb818d1236f90d7c6ab24f90fddc8ca8b5965a436aff","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k320.artifact.json":"683c14d8880c5ef6f177f891ef3d647ab3e551919d06c7737cd909afad7b754e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k352.artifact.json":"36d3a82dbed5b9dbc0edc80d3ccb479950cf4155dd3151d438e8157fc9628a18","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k388.artifact.json":"afb1589fe4bc742176e480d088db42156d6e13f36b6cad13278ddcc5c6d202c8","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k427.artifact.json":"b7fadd8d3864f51d09b20f7599a559914f11c6996d52195c1fae08493bfa7fe2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k470.artifact.json":"79ad6eea6573fb526ca9cd386f00d217315b31a915deb4417ea8ffb6ba7fd151","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k518.artifact.json":"8cd2de8c54f0bc409640bde408cd7420c3fc37804ce6009348ee0aa3f70b4e81","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k571.artifact.json":"dd398e18c84a365343c67c491bd05ae17e446e05c362219333b79b8f462e0a0e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-k629.artifact.json":"73b7c146c5840d99d4425672378f2a6d75d7dfb0290da2a146454358a5179d78","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k1097.artifact.json":"f23dd00d737864bbeda04b6266db8cab3572493803513f49f19d655445de5d3d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k1209.artifact.json":"e211077125b1fe1bcc0a5c8215cf4452c15fa1accd9f744eef719a55d822b6b9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k122.artifact.json":"f06c1f299152e24349d6edbf3570d7e264fa47c1923b15927210b1ffb7a11910","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k1332.artifact.json":"b89b3106b4cf3b59b0a0723c153fcb9614b7d835a5e781f25d6c752ea8fd8264","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k134.artifact.json":"8178652bf1cca87c00da5d8e619f68251bf958286181e0ab6bd547b16c437e88","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k1468.artifact.json":"e36a32574afb55b530c6bf2819de996caf94743ad4376fc5aec3b3906454c169","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k147.artifact.json":"582c3f7bdd3ff1fdde7b3d71f1273aa0c3a756c088b48b7765350a2f7a4061c6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k161.artifact.json":"af3950ec0c936b08b91ca085428637c2d8c0f8bdccc2d23fa29ad279a674921d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k1618.artifact.json":"29dc88dceadd563707c69ab45cf53fd8a7ea1a12193fd895576f5d73b1579529","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k177.artifact.json":"979eeffa63d56da95dedfa5e93c8e30f7b39c5463ed7c0de59cf82c10e262171","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k1783.artifact.json":"0168e6817c00908fb66cfc545bd0050810575e925f046171c3f54c46cee473f4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k195.artifact.json":"c6c816a031ce12b2787dba07c40ebbdca2d394f11656c4ed40715bdaf2dc4324","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k1965.artifact.json":"aea52472de9b488bd40350022276239278171a726e01677157260b13a1c67dca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k214.artifact.json":"43d2e33ec5cb5d8373c74dc1d801844ccf4215f30660af751ce8a45d14b06a5e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k2166.artifact.json":"474022d6adf5ca87828200dfc48664a835a69155542f96a0c3ae55e476467832","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k235.artifact.json":"2791b69a44c49f72b7bb3a92cee3e0ce9238d5caa3ae9f06a0764987ab936552","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k2387.artifact.json":"1f28268ee4c11fae1895cfdfd25d1aa4c0bdb5b583292bea647db6e795176599","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k258.artifact.json":"3b6b2be2ccef32b60815c09cb03a00a2ad5417174823d4f8f6963269638441ad","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k2631.artifact.json":"6d8dfa730cd22ae6a116db9c5388f33e54a3d3009c28fdfb2d8148552ca059d4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k284.artifact.json":"e9309de8e8d6b664fb78ae393aa9fb81fab474b420d2fb3bd5ef09ea38a33b1d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k2900.artifact.json":"95deb72fef1d9c2a1957c45127a647012764057f013006820d99ca4bde72443f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k313.artifact.json":"ca8b0a51ad1cb261066de42b76c7080930ca00d00936c3c0681dea4a58f48dff","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k3197.artifact.json":"ffbfbb89c77f4cac9ad008207d7392be5a749946095cd04c154518c6ad52a946","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k344.artifact.json":"42d7b03c69dd5171cb1785f65b2bc6f51abc92c9f549212ee0843c368e96f468","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k3524.artifact.json":"739784f5ae7b1e38fd05e7f78e4b196a82fd905ea2646ae22a3a9c37a3510a81","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k379.artifact.json":"9440624836103d58cf9b18117a747aa401b163bd9638228ada72cdd845bd2a38","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k3885.artifact.json":"885ef84be3be25b4ccf4d2a75afaca5d085e09a850726591939ff026e2805521","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k417.artifact.json":"c425b742a58805383041e740d9371377bd5c6136f2d6ea9b902614f445021a11","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k4283.artifact.json":"7e648766d310d2661b5a12c18ad4c3985eee89fe42c705b9d27743d4947ac44d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k459.artifact.json":"25363f20048bc6d1118b3d33cf1a5018e97cdd3ad6e233ccdbf4a878f05a3b98","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k4722.artifact.json":"e1c9e8e6e003046cb7f7fa30ff2f91efc489bbaaddf1eed6932975f0f9d7070b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k506.artifact.json":"965d77bf20e073fa32057abc2d4c1a3016943b056947fc18098b91f02db6cb76","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k5205.artifact.json":"6af60b73f8552ab179d9ad68efd171c981cf97f55743007a85dd05dcab0137ab","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k557.artifact.json":"8da6174c1d0bc38438fdf3cee16cbb4ae6794376067255c4ca111d3b44b0528a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k5738.artifact.json":"238816199146901beb7c23d97de555f89fd0fbcf5b5fb4f49ce639f6bcc0dac0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k613.artifact.json":"ac7d1e345a9b9e524e9e3fee1ba6b48eb66c10c45c2f5ecbaf8cdd2c85c3c8ee","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k6326.artifact.json":"f9a4e45d1c6b522b916f098708d104e838dbafa6116396b12603ba7e1cc4603d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k675.artifact.json":"cb0c712e8bfcb0269de0a0995fa7f3a6ccd940b9c2f1b40588676f45bf844ef1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k6974.artifact.json":"f077963959d355ae64eb55d52ea9c53581e31da5c713edaf3a0c61c67b2b68ea","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k744.artifact.json":"f8da4a863013ac5535cb4eabbe5bc2482758467da536d05d1d6201dbf2bea4c3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k7688.artifact.json":"0d9591afa4b59d16cf28676e02ec26893389811a6dbf3ce15abc67b3cf3825b7","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k820.artifact.json":"3ff812ea58a3f49c6d87b52e8643b36b7a03b1f542e7912de09f9d9cd1f31db5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k8475.artifact.json":"b2843a22228f3546e3e2b7ee53d052e0cd4bdd6d14a1a723a0b228f7edc2b937","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k904.artifact.json":"c62a76325bd49da9afd92ae8452a6413800b05df7737bb00be26745a2cbe4bc0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k9343.artifact.json":"ccdab5fb87978e60a4f68268b34b142edbeef0cd408ac5e73587becd0b535e3d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard-lot10k-k996.artifact.json":"213f5e20de75f11f4cd4ef0a78608103ffc96ddced0eb2a99f3dab7d60ed8e4b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-2/curve.standard.artifact.json":"9fb8b9aed0d30ffed8296ca01112f13b1cf6bca227138a7f92e3270ab53b4c3b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k103.json":"149a1894b318fb2785d96afc8fd5bd480facdd1c62759097143e8eb2ce0f24f3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k113.json":"703d54bb1b1339c02beaa2ad2fc953abb11dac8b79235ce70395fb3559024a67","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k124.json":"71f5af7a991b4e34c1051ca55b0b81536f66cb5d1db30b39d92a16b596f4a57a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k136.json":"3fc842258d8157b8d49c040c1b0ddb9824b112be2d5c6106b2578a6b2fb45d1a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k164.json":"847a1a5cf74114ed58613338e2edab1d0f17141cb064071d7091626001ec454d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k180.json":"1c07a60ddbf6bd07577d6641382a042f61960deb78975fe0b0f5efb60f3bcdfb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k198.json":"e2db8760fa1363fbfbe15a7c1f28a7bcc9927eebd67f4b6e9b5b4802f53dfbcc","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k218.json":"f6de071a3deec2cbb6c2b198ae16861e638045cd1c0c52546250afeb06fb8c65","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k240.json":"960b2df1b506aca2188cab8dca3379781b0b7646dbdab29b5fff8c8c5c8a9755","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k264.json":"d7cb2e370de6438968be933070a2466e4407b1485ed7dfacbfc72afc138cac27","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k291.json":"953ef4f6578e3b93a77d64bc318d82aaf8969e2bbad193a99b27fc552f18b2e5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k320.json":"1c5e31e6d07de64f705a64a762f27acf5bd6eddeb09e66496950ea491dbe42b8","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k352.json":"a4ae40ad108824de2a99111ce0b186faa77a8e4e0f677ef7b9f78122c3c65a70","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k388.json":"6dcd796975eb1e7714fb9a1edbeb2522e12ae4f7fead17bb5a0324b6cd4412ec","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k427.json":"22494b94e25bed9239c666ba1dbe692b3a9b90ad9bf07548ddce49281b70d89a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k470.json":"0595909142bc78b40f3354923e9483c07ff2a60c1de4e7531059787bdcd3967f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k518.json":"cdd09e97c709f7b8b2a5187b8d551f28a243b177608ff10e578d697f13a232fd","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k571.json":"f31d68ebc34be7583702ee8b42618ecfa7578cc837e8b6a876f0bfd1bd7d4fd8","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-k629.json":"91b855ec43b7e22a567bc7661ad8d99c72a71fb266ecb89502cc1384a4d35942","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k1097.json":"47158fae30b2c4d4aeebce25e25a8aec192e5a06d6437f332fd52bff4cf27be0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k1209.json":"009c0ba5ee508640262fb05d4e38d204487c3fa2235ea45ef0a5f071b327e79e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k122.json":"5be1a0fd39f22470ce97e355fc18459b5b06902fc2279c6cdc22ceb6f8203abc","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k1332.json":"bb72f724d89321afb2fbcb63bffa8d867eeb1894d053e8ee43ce4a57f0d59c9b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k134.json":"878f79122a3c471c5cdea0c428251a7e3bac4a77b8e5b1233dfa11973e1802e3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k1468.json":"0bf2d6eebe06d4aaa99577e04245f5507e6f18e51f7c61fdeb55c93a2911e95a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k147.json":"417840ca08c3de333b1a1bebec76833bb39d8da1eacfbe70adcd2c6c98d88e97","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k161.json":"e4aff10b4156bcea76689502434b29a28f46a5385116f62d823b617431709482","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k1618.json":"5f78ffc3ec7d2b93c82913fb2f235e2cc9e4c031eff1329720ad45a7beaea2c4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k177.json":"c184072d1433b1271842769abfd8ad5975283b0e80e9222a4a98d88ce6685825","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k1783.json":"6504b24c23782c4cd4a1838cb04b968c639e4189a9c8865c677a9cebd497bc6a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k195.json":"879e9c65f6c7e59a62848f8d9ea95311f5d0dd82f8f1d7ae628e00bba16cf42e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k1965.json":"5d13273339a0adbeb1cb7686caf102a1296682a4f7ddafd62f0c9c5adc7c87d9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k214.json":"5d510b64b3987ef7eed77d7aa0556692db001d2fe8157611e6dec5fae48bfa8c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k2166.json":"c1ab0ae199f1d256c725b57d621ad0558eb64b32bfa547f99d413ad9a5f347d9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k235.json":"53c575571c990b70b84c3aa8dc29c6bda8a2205ebd0c5ea8074a66de7bae321f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k2387.json":"6bd32115321a945942e46d1b6929047e0b2ccdc035813f4fcd6d0ed9f024d3e6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k258.json":"de1fe87e42c03f9f4c93e7ecd41eb7d450fe0834c8ee904807c9d08735bc26ba","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k2631.json":"54939dc757fad92f0fda141268491886afcd39c3d8f8e662c15caae64ec20ff6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k284.json":"c1770971d6d6099f9e2518a5b36b0d98a5be3b09792cd88e5df485501ac65fbb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k2900.json":"8a17d832780f93c6050e780ea8582a35e984d8ce30148d354794a5470699bc6d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k313.json":"cb66c6255bede3978eacb1356d6f318c852d1bc44828bf23e0b8cb02ec4e7242","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k3197.json":"8d067f718fd2dbfaefb9c4286506865b07414c59fbde0e537ea255fc4ac5f11b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k344.json":"68cfcbe7c9ec404ff31c6b2d0bfcafbfcabf425343140ff8151ab0a6ab16ab75","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k3524.json":"b5f5a94748b702a88f50d1c35937f875424e4bec99ecf6b82140cfd6c55ff27b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k379.json":"59cc0a9d9f5ac6667f6ff3efa3f88efc5ad2f4678b2965033a92ba566407f1d9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k3885.json":"170f5c7d36521f000df9bd462305efaf95ca94a8b3874f0b85630f206d2ae31f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k417.json":"37b8c954c82f5541e5a2cdd7b5789447e8e09a73d5f61c9b9d1b461d83888408","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k4283.json":"ba5560f6109ae37fef484e6c81a65c83640608016525af816d448bd88dcd395a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k459.json":"0180caa133a00b32c9d9e606891cdb2cf922719efa4173881ba21540818b27b5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k4722.json":"e4998ab4de31bc6a7e132788b4d60a3b8e0731935a4fcbcb5211d9aceddbf6dd","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k506.json":"94acd24dcc2cd41e671b0a49861531fb8122522782c1d7f21985e58e21fd7028","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k5205.json":"806ea1906628d12ea78e88f5c2747ffc587ade61d0eab6d816b77e6baf7c5770","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k557.json":"da32c7ea0a908b2728eff5f9c4ffd7ba7fde6a3b7402cd7af9ee9411f41449fa","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k5738.json":"58b947869a6629173fdfb31498d8682d6d239a6d68d7afc767d72ff942232b8f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k613.json":"a5fa0e673b5e472a41fae60af6c36657fe70ffb0b3192b70e84bacfb41b21197","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k6326.json":"b993cded5c5b48e8c2540d627baef9190e5bbd707255bbcefcb127642bda15ca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k675.json":"b5a5e5da0d4230fcbbc2c901255b507b416965decf2018fe91b0ab7b4d79ce9b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k6974.json":"0afc7418e7b9fa0be8f9e741e6db00dc810ecba830d6f28c5e8f55e8e502868c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k744.json":"53a9b9c18c0b70e4e4b6852c4ce6b963539765889821718209ad0c144e46c755","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k7688.json":"7d43c38333c29f55d8dcc5e08249c6892a299a97e6e951c6caf63bc61dcd36cf","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k820.json":"2af066430bd54f906bb522b2d8af0c60afb73aebbc468c2e1094fbcf76e7d55a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k8475.json":"86d1cbdcd44d9e8249e829d83b4f85031b843f32f46bd18880866102c7269845","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k904.json":"b2db8320379c2b4a840fdaa3b6f973bd75530216c1ad45095aad8468605b02fd","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k9343.json":"891cc2ebfdc09918101586424d9c8bb70823b5ea8bde11bf84f1b46164e822f1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard-lot10k-k996.json":"64b2dd74ea9f06eabf59c555862b6ebe3506a95679d47f22055331cae83caadf","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.ctor.standard.json":"ca2cec3d3c201907439b79d69b5f2a27f1e493254dda39085e2d10f510a66b22","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k103.artifact.json":"123acb40a9ae622be1712efacd698ad9016ec2c85dc915239d6d13aac72dc79b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k113.artifact.json":"15b97c2dd1006886b505681e85cd51510638d5944ffed085e60e4cc28599aeb0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k124.artifact.json":"e361e50038ae87d1d8a92625fd3b08814cc9eceb6741433d85597c1f51ca6d3d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k136.artifact.json":"08ab3e974e9c1e1d502817c6b2eba4a8e4d86fdda1ece456112ceb5bd66344ae","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k164.artifact.json":"6966ce11b521760c766d9f0af02ab30d698f658a0710f2bcfe9fd2a9b30a6440","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k180.artifact.json":"a5714f189e9201691080678b5e9bcb8961ba1a3f1101721d743f79dc8956571c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k198.artifact.json":"b73905a2a1cbf1cf742f4ca1404dfc0689dd7a87d52012f641cd1d825baa0f95","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k218.artifact.json":"432c3bd29c94868fb64bdddfcaa8224defe297c688273204e99b924aecb8c883","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k240.artifact.json":"035a5b56bd88cbd03ba9b24fd3157d7aa2f227213cb729b50d181ef38c2245f5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k264.artifact.json":"f7b1c49c1da083e760686ead230e3fabdb21c7462790cd80208eae358268b16b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k291.artifact.json":"f78b8f7158520dadaf9bff8a1fc30ae92990d5ecaf4c6c7e6ec408e5a938b390","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k320.artifact.json":"883bfc16c02e6bd453fe7f044ea5e67817693937d57e23be27cfb30d6e9a20ac","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k352.artifact.json":"312fdc652034379d11b5b202433662202160850c274651d271884bf5e1da7bf4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k388.artifact.json":"e7f65f0d372cb7eab287d7d7e9661deda46bc7bbdf84325b8076cf3f16419708","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k427.artifact.json":"e0e1f39bb10ac430fe162bf3083f56ecd1384c926ef08f6829d499e2d26f6b1e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k470.artifact.json":"4332d1a4f16f920fce8a30d2c9aa71c6deb672fe5536f6b0e85e38c2c45bed44","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k518.artifact.json":"964f92098c0f2a11600018876387391a167fa35af1eca243e1d9038e8312cdd3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k571.artifact.json":"ae37abb74a2ec6cd3f5b6492b39e0173523bf4f24e32492c99a487ea83f6edca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-k629.artifact.json":"7f0b2c4c670712873429a347217cfa6d6843ef106318256a9dcfabc118c0a4a0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k1097.artifact.json":"697dbbca6b3a554c3f2e31bb858658d0b85d2be5a72e12c66ad175e73118fa4e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k1209.artifact.json":"2c9a33df3b1cc534678e9a0658732fc5b1d6b02c9aef352c072d1467251d076c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k122.artifact.json":"b932af2a9706c7c4325a081aa1f27e8c70fa4620f0d00f0693f1bb4c387e12ca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k1332.artifact.json":"8df888316de9ca71b51e39f49e493b7f501f563637d6dbffdc3887c0f68545b0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k134.artifact.json":"52fa77fe72ba940928352b9abc06f9187e7ba6650335def432245654afe215ca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k1468.artifact.json":"969aeae9b5eead9283ad039a18504b316a0b2e04dc861ef44a432c204ae0da92","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k147.artifact.json":"57e124dc2c064ac61329f77383bd686ed3c41954b6cee601712994f4894b6b8a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k161.artifact.json":"fc898f7821fd78e851fa59f8e702f27c335bdc3c8cac414e25eac0298f4319b2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k1618.artifact.json":"70261d9fd128a619ea244b8169a8a612eef84b64be05fdeb3e66e3f1d5a8ca10","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k177.artifact.json":"4d0db21069d9bbed50ec177efd85d256a3cc004454e6a53e720b7a2d2880c7ec","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k1783.artifact.json":"71c9b43d0ea72400c3a3454df614edf19bf6ebc5c8285997fdd640eb73c895df","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k195.artifact.json":"928a3f62b65179c344929ba6cf54184352f181d3d5430a390163a566cd3f6170","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k1965.artifact.json":"69a329ed09a3401c77eb075e11b28768187dd46903c353f2ad976506d6bc8fd9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k214.artifact.json":"9ce8940dd0d2913c31b9052d44b38c8cca8860e09c17bc0014254d6fa8cc627a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k2166.artifact.json":"862231f5df08fb648931903011d61b75008df80a5b48688f17c47c872eeb33f6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k235.artifact.json":"0bf3caf4382bbd98b9fb89b902f744b5d1981f1fd2c92316e2deec0b142332c0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k2387.artifact.json":"9bf8891280bfec8f0c5bbb46a847d6010dd1c047da4028ebafe28c20800b82d2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k258.artifact.json":"04b0c9333a2dc89280c6ad8a9d1da4f1ea1b15e01bb9a31a3b7e371d3c9fb4f9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k2631.artifact.json":"ad6e2b9e462a4d82c2a9507d8a7ebe32b5ef2565ed70c0e8fc2a7bbd1cca74e9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k284.artifact.json":"cfefb7c94891ab2e5a09c9be5c8b3da0dc89944df3d168b805f2c8c85c0abcb8","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k2900.artifact.json":"3dd1ba3946c40ef0d97e92f44bdea58c317baf1707122c72b1a5acc3581e3a14","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k313.artifact.json":"5b7d7f537752c7a37d40deb8dbaec7eae57a0d5d256b5775c4f6cca8cf7d8250","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k3197.artifact.json":"18e97134f41c563fdb6e8812316ce01ac1f2beb034e0a8704dbad9c4c60f9eb9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k344.artifact.json":"ce42f6272bcdf0b1626521e2ae948823ca750562cce261b0f384011bb951308a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k3524.artifact.json":"22ad679a5816e95e4ec57d5684267a81f14c73bd0c3eef68ad217c9edf6f01c9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k379.artifact.json":"5c575eaccbd2fce5c8d8117eb46c8f221c7590d64f700d27b1cf81a19a0006f2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k3885.artifact.json":"b9d2f753ac7f26804a25e85a7c90497adddabe97e92e82e561bdcdce4ae6a67b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k417.artifact.json":"cf5a24376a9ec7d9ebbec0e2e58ad03645ec7434be3fec5e3a4284276dba2823","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k4283.artifact.json":"763589e9574f409bcf54f8af8692fb74cd155c553af983b6fbb721b9905e031a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k459.artifact.json":"5e8cb83cb4ac81e7c315982bcfed5ce6b22b39859d134b94db4e5fa95f041704","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k4722.artifact.json":"b321e9eb5351a8d771b0733313f93c46c23441d3a3623fbbfb55991830d62a8c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k506.artifact.json":"4dae272b2ee6af11cfdf91f98b5d64ad9ce47623e35661a4f4c8f34c99a80040","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k5205.artifact.json":"1f725b1a0b23d75fe04c6a0f6848b5b40a38983cb3dd32aaecca98aeca289ab1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k557.artifact.json":"eb3d97553dedecb33207f8f7b9801be939f3acdcf8f3351fbca6a14723e4a5fc","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k5738.artifact.json":"5c093dd4d287c2208f25df267185ad7199a82b8e82bf932f8d94a4f2dd34d103","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k613.artifact.json":"cf60b761d5e3a66e61fcaf09d7986059c8c88211ec5040b64b04916e5ba8b418","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k6326.artifact.json":"92aea745e41dcd491bccaaedbd2f777464a858afe2cfc438d402d68d321742a0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k675.artifact.json":"b1bf956ee9479d1c4a9735370a46ba3aac900ee44805b02821cd01adc3ef6a68","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k6974.artifact.json":"412e36c96da486ca4ae29e00b9c5cc87eadba01dd7e485624920b826d3735853","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k744.artifact.json":"1ccb32416216fc738822b37af19c0b2ebd7e2c612cf116b78e6311e502368212","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k7688.artifact.json":"b6eb041e8e2264532529101a259b86b8aa190ccdb8b76e80be82fda2b66f29dd","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k820.artifact.json":"a02d2ec83f6a919790381ab8e02156ff53e1bc5c628aaa4db9ce15d28b53fc5c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k8475.artifact.json":"ed8f00c6edc3febd1db156f375ba631b0b318f26df98b0b6c4f2e9fb797a8ec6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k904.artifact.json":"11a7ccf62fe3b1364bcdf9dd9b99fc04d64b7c870d1131c64bd3dcae1584aa3d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k9343.artifact.json":"8e20cef5cdaef28329fc2bd797c5944fb50919ce6ed866031f0ddf9a1fcde867","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard-lot10k-k996.artifact.json":"aff55f300771f52d26514b2d41fbace6f4ce311924f2cfecc9c7891d2016f505","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3-tn10/curve.standard.artifact.json":"e259a7aff7384c6974f26fd4db92fd66cfeec03bd2df2e86472cc93c4e97db43","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k103.json":"c1306a512ff9bb87be9721c33c0619f1b50efceacb2191e6dbb611fd120e3461","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k113.json":"af39fe159fa96a90fbabe1654bdb3c18b3ae5ac0203d585dd36bcde27e672445","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k124.json":"1a8143d0b0cd3696b0a72a9cc8f894ee3db5a5cabfd1e9bbc19d3306561babda","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k136.json":"08f6137d7dc7205ca147f875c34d13d4fcc275c1b3b150d1d34121d307d56211","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k164.json":"1cd10a124168acf6355bb8f74c03e7363c1ea9c02cbde420a1bd4b8e8d420d86","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k180.json":"d8fae65b49d2cce4ce604fc77372d125e1290e5f3dbad74b6a1db0e52a6824a9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k198.json":"244e27adf4032cf36a1fd7e9b2ba4acba4d26722c531c81c56a9cdeedd0431a9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k218.json":"d47047942b8d1ba305f558e44a117be24aeec1e70c34336d4d4f884577b22126","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k240.json":"a64ccadc42cc991c095c4e4dae39e2a0eacbf0cbc5f7bdbb71a855d89c2a970a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k264.json":"ea9ce4b91755148a3b8b27b19a4780b15da3d936e36f8035f7b864a381811ba1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k291.json":"aeb0dbc47cf31bc215fe185503d46b5a673e9f9015060dcc61640768d8796c33","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k320.json":"b26a6c676f85c2731d9b39b0f37b0ed056014f401098d116191444f3ee3b4e8f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k352.json":"5594417c78dc1da8a104ef1f7ef9892736bc3d63dbe0ebc1630ad2f08d09580d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k388.json":"10dfae31b394024ff38601fb0995d72270f021ba0f8c1f9a9a667d4b35b5209e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k427.json":"258f6c528e1218dbc157afe4e8a7bfbd663bf21bde416b2f59a94d4466a9193e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k470.json":"05224fc259313290c8503ede1d334abc685537c84750ca40fbe0074978fb1ba1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k518.json":"672c43c5bd50886e7e342215c4de6401615a4bcf2162e5f05ecea66e2bdb1d8c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k571.json":"b672221e2020e120b26285faf17f61c682c53a710c2d0109dfe4072eb58ae1e5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-k629.json":"a99185b2dbb29ba276c531bfbd7cf18fb56d72b02788570b7a700c4a1de51540","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k1097.json":"c25cd1ac9370314d3d0e587c61c96fa3e4b6a008f6f093e4134723f0b54c9116","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k1209.json":"aed9d0fe4894d3769cf7d19acc48a9321ad3a7143c224ff0a2d1944cd10c7533","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k122.json":"d4c010129dc15c3fd0209b9ff040b91c152139691ab2a1e2c4e231b1badd7ae3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k1332.json":"4c983ff6856d84ef58c9cd4eb95f5bbc38df6c9df65ee9be2d8ebc73bd810e7f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k134.json":"e9ade7157c9c87daafeb3d92d8b1ad350a75a44f497944e9ab02e71b1f1845e6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k1468.json":"62459138f994543ec583b01aff314533c59e4d5459527d904f4e96d7d264454d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k147.json":"5d9ab0459e3b3466f003998ff606e011548ef56685948950d6fb0e3ce5ad1b8f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k161.json":"80aaf71a4f36aa0ea35533ec45882060a381c879fdc6ceb9b4b6584825b931c2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k1618.json":"98e974e72969f76f6eaa022c89defa4b09628ae6bcd0d2819d69e9f33e832f81","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k177.json":"b9b437de546704d8661ecfebfc17f005a9e8ba1cc8f66669d52322440cfaba76","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k1783.json":"63ddceedb7eb456587c04f3b0427442d46f69001615b7d2a374c797a45327964","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k195.json":"95550adff6139bdc174eaa93a6a520b2614224060ea3a16bdadf1f3e2a04c1f4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k1965.json":"3b0d50df0164f3ebd307d531df703eccb8ec086406a3bce896303b6d8d548591","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k214.json":"2b88700e3cdb4f96c07b86a46b927ef16aeafd5017b01931d8bc9e48ef7b8985","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k2166.json":"49cdd3a0bb11daf0d3694b34872f01f3e1c8dd3e10a282708da027b0d5f22a3a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k235.json":"c86fbd53115c00f1a199eae700a91d7b465a3c86d038e291b1fbfb5ff1e74149","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k2387.json":"a73e0d1aa8e8518490ace076f76a2dfbe7c98d426e7083612f63915e7300856b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k258.json":"286650871a187f6fb15c6f27bfe77110f1937ff26ecd514b53ad3e478fa2776a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k2631.json":"ef3174792ae95f79dc2c41d2a2ff8909a362e505ffef4aa043ec0efd3953bfb9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k284.json":"d9961d86d07fd27657ce660c43f14e63b3a2a9a9a3613f6a26ee198e25b06b64","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k2900.json":"9d9bbcdad29b33dc463846f4a259832a3053a6bd1d9846b47e52f2a5ac881b61","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k313.json":"e80e71473634383e44c64988983a4a2da98fc82229ebaeb70f251203cba0673c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k3197.json":"4479e440157d63deb6c240db456baf8d04361817e95907a6a17ef2dfc73760ff","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k344.json":"40311f9fe095d4cad31879166ed5eac9c65a86a53442637f0fba8bb56ce3ae7f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k3524.json":"7a6bbf7eefa38b418a31bd5eeab46b5e1593d6fe0d6931c4912957f55c162fb7","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k379.json":"edc014e27af1c483e4bbfc6128063b4d101b7005ecbdc76744a7e172c9d7e4f7","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k3885.json":"f9be7e675beefe9235464ad52e1b48534f23589fed56fb0cb9573861fcc7b2b1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k417.json":"b5fee3bde08f4c878fb677cdaae7299d364d761defe75f629e5e64ff6cdd8ef3","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k4283.json":"0af69184ec56826cd4d65f7e9498a8bd976fa6e001252833dcc951c7236683a9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k459.json":"6dcef71b733b9d295cf8aac6ba5044854763df892573353be4e5231b2a2986d1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k4722.json":"bd76af4ccf6fc1d8fee4a0bb1f10a8001a741ee79a12291d35ab046b8343873d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k506.json":"b9c5b640d984484b0cefc15b8d8d2b7955b0bec91230a0f6e79b782d6bbe24ba","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k5205.json":"88f67b19497ab1d9879e7aec5e9f8904881df0f374677229aa999a79e7886906","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k557.json":"2deeb18df19e1fe829e9bf27ddd250e22467d51c4e96b07171cd23fe2df4fe63","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k5738.json":"3314072db71add192863f51f03b9f6780d32b62bf8c67fa58ce58161b7d659d0","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k613.json":"1ea9a698d1cea92d3fbdbc6b5867a9354bddfa9b2a418e275b356ac1ba9d5bf6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k6326.json":"8dde5361f2decd052dcd2a068532627a0ededf0f4f8d00e48cc64872e0e66715","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k675.json":"323ca86abca5192c45160b71639e20e52fdec0eb3af0c8f0131847a86741bc90","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k6974.json":"bab043a8929830083b9471410c44d743fe1f125f1756231e55f752ae609a38ca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k744.json":"bf4dfe818d57d8f12218c48e797a275cb7e3167d09fded28cd936e6e3ece2159","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k7688.json":"e1b8a60d205821b4669ecea9571b7ba26486e56ca130bbb6b95cad56ad1455bc","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k820.json":"8bebe0cfb7e8c57bd9a38c0d63adf083591fac56c4e85a37e084e89e629bc51a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k8475.json":"e35108e7963be7d9f1a81667bbedadd8697e1490a29e8f36fe7e445812906719","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k904.json":"3c2071b2b0de679c2bf1ec84af2ed0e3ec97290180867a57c5fdbae9c2273c4b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k9343.json":"2b9a76cb4cf60bad2ed000cc7f1fc0c18eaef75cd4bffa16ca338aec5b8a279a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard-lot10k-k996.json":"eef5d229e94cda8c4b152b2df57dfd82aa313c7c8e1c4f2c0c5fcd4527fae416","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.ctor.standard.json":"2fa9fd5cb1643358925947df6a9562db29a861f3469c6ba4060e96e7fe6bb2ca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k103.artifact.json":"0b1c924a2a0af92f9c7f6cb00c3ba17fde3c9f7b193ac941d4d5415127a349c1","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k113.artifact.json":"45eaa3506fd57e51762b2dc9426bcc5310b71051181976f57542ed9461ea007e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k124.artifact.json":"c3aaa48e3f47dfb299f0ab29f0df0ca34921798e4dd41f5a39c70e93eb390ed5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k136.artifact.json":"1bccbc2ffbcf9df58a5e4c2dc911237125dda48a22be01a73b5083da56606121","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k164.artifact.json":"8580ba826fad48b7268fffd0b4a6be775ef349e895546f688d9c4eca23c3dc79","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k180.artifact.json":"0e7438d3f5ea15bd5183476fe7bfcf40505b28244bd740546a82e79844c01138","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k198.artifact.json":"31d0d2ce5b0c69549c98f713aa8ffaf3d3e82e2d6a8fc2159c16af061d76dd6b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k218.artifact.json":"a1939e6d55aab56cfec22dfad9b146fbdbbe5f46c0f2cde506037e8af6a18263","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k240.artifact.json":"ad2f7b1dcec780414806ac9fc2ee8dd189a1ff80436ec57e3f9c0b13b5625ecb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k264.artifact.json":"8204b253fa6d7cd004a48ab1d549fe16516cf9a179899d8412a0f43d86ad8f50","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k291.artifact.json":"4444561087da61a2039accd57a5fe7428daa39e5c020c358ff626a758cfef0ec","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k320.artifact.json":"3af37b9c7dd946a1dde3a9ec96ac8747f1c5d518605a5d625d8dda3abb72aa9f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k352.artifact.json":"70abc3c59e5718766449f3ee8899adad4d93f4107882439f6726774206740ab6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k388.artifact.json":"b0d25f33b361dad8bb88699a48033bf44e327cc9516c205de43574fd28c10f00","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k427.artifact.json":"7719766fe84e2e827923fc06fdb0239b113d0b1a0cc6db4bf770cdee27f61250","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k470.artifact.json":"4816d57729e3cce4e45b34c8983c5170fb6ecb9cb5173c975095746730f83d79","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k518.artifact.json":"d8cb1be79737cb0236e74055a4ea1c11c53a916fc4699f683c06ea24275f1ff5","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k571.artifact.json":"30e1cfdfba317848513159721cc9c8d6334e4bb372d6a182a6f226a773a6f4b4","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-k629.artifact.json":"7168a80c028f339daaf64b3cb499fcba1843743e0d66332cd0163f5d6e79935c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k1097.artifact.json":"2992df25742f91af63ec785c39f6f23a513809539d8adf85097bf5a5c4fda5ed","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k1209.artifact.json":"4200dbcf5338ef0baf760f2974bd3b13813c0b239d740f52b8f96739ea549550","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k122.artifact.json":"73864488a5c6edc654119bec2f470a6ab51cd0f6e3ae134068a6b303c374307c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k1332.artifact.json":"0c7718dc5c26147bc86fd326f9dc322dfd84a31bff35723cd7109c38565dff27","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k134.artifact.json":"5ace14edaec82c2562b1df94aaeee0ebee3a0efd36510d83e506c338e4c964df","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k1468.artifact.json":"673ff8015dd1748f0448a5dbec47e3697f5c0d50f5ca604d849e8758750ce24e","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k147.artifact.json":"23aa132e6b1a533b062e42bddd48c138d4ba275d50bf80de4fefb363d2ab9f84","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k161.artifact.json":"4efa79f696ef126fae24425e8d5297e2d3ca80656a6f5ba34b39df2fa260b82b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k1618.artifact.json":"f262b0b576ba17d46d2cf2f8679f6af4f81e9d943feb1be9bdf3fb7c0b20f11f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k177.artifact.json":"0af17edb6c65d8b385126153320714db88b8b8ca80f8c7c6a76b9677d22bc8c8","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k1783.artifact.json":"9fb5992852343942dd546bdb1ff407886a7cb6b2aa93c73bc42a1b36a83d5233","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k195.artifact.json":"603c1d57b78e8f82da260cbd3a657d5aa47d71197c42dedeadd26573c1f5c3f9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k1965.artifact.json":"38946df56ffc1c36085f9af3fb551f370b4dfb5d31ca54d3d47146d887232aca","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k214.artifact.json":"b347c90c8b7836e21606c62f3c86ddb64320acf9732c155d3dcdc0d28909735f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k2166.artifact.json":"27aaefdd426172a2bcf196dd217c124c186ec6d3c6a4b6c00d979fff0b6c2d0a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k235.artifact.json":"240af169fc2f052076d10bbf4e44825226fdc241e09db9eac71e2da2b2c248aa","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k2387.artifact.json":"064a37dea7a3b229a75eba8b39f22710daf5a187d96ac7b1730a04911514bc21","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k258.artifact.json":"399cba6c9202e0a66cc2af2873f7a9ebc1c6dc667921cb10feb214db53581c75","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k2631.artifact.json":"262a2b9bea3b42d0c45b625bf6846b159394b4ceb92762b15bf0510480684e60","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k284.artifact.json":"182facee4d2cb5e85c9bdb08dcfa8103524298fafdd96e0fc6c68b20af3ef2aa","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k2900.artifact.json":"010a34c77cd1b65eee535b6c6d31e8cb2854380bf0fcc59f51ee1dc3ec316695","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k313.artifact.json":"90bb11acdc12da1f75d95044a14b3ca432258d1946f58c01155bd104cb6f3c58","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k3197.artifact.json":"3699f5f11c1c3c7c5bc70524a6ca708f78ba884be6e56ee0c54c2404c7962fae","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k344.artifact.json":"696654c7fe0b75d4e2030abfd444e2783be6e7ef512241fa94214bce28b737c2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k3524.artifact.json":"6ff48ee67234b6628feb0d34e546a72f20c45d2045f9351ed5f3b5d5bd3198e6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k379.artifact.json":"c52975de72dd9960f95ef153dd520d97f9b207760398b1a96496abced379d9b6","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k3885.artifact.json":"7a0cfd51af577f7ab90abbfaf3275431c64bd754f8712181b3f48954f8197f1c","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k417.artifact.json":"fbd7261dc072af5eafc52535edd49fb469621e37843f2e82b1e34bc8fbf0054a","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k4283.artifact.json":"1adbcbe92ed7a63945bd430c42c76c49f66da9fce6d93dde6270c8232092097f","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k459.artifact.json":"22d68b198ee17b9107ab0197b7134da17bbf135716c02c6c81691abad5fed953","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k4722.artifact.json":"2aca22fca7a53822870447fdd59484b5a2e15102873951481e9800f7dd8a04cf","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k506.artifact.json":"34e24233196039808194c7ba0ae176e63ae3a6ae26788ad9a6b6503c6ce0cd29","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k5205.artifact.json":"a14a9759d5ccf934fbdd2d0ac37e13d4ab18670ce1552fc3cf71a3e28dfbb136","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k557.artifact.json":"91988303a33c7b38ec2b9f9271abd4a63b11a4bb5b1fd77bcd14bf0cc1056068","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k5738.artifact.json":"2f433473e08ec49812dca1bc2436b7af1b06d6c54e7b583535f70c02ad47a8bb","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k613.artifact.json":"c85e26a6f3aa3f4682fff8171874fe32b84b9a6a52675d3e5e8a4535caed6be9","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k6326.artifact.json":"9356e61e059b465c716e954631bcbba1c6322fd05aec0fda74eb87798d21ea43","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k675.artifact.json":"8dab39a6dd2f4f493465b8c2c12cf437ab248da8a50d6dc2d4a004f908347383","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k6974.artifact.json":"c881830143949eb0ae753a89b7dde9bb37c1b0a495a28f0d753d676d288cd09d","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k744.artifact.json":"270b6389f21e71b1e36b5af09153332ba8bc142c7db85f509cda8049c6b607dd","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k7688.artifact.json":"a667be8d0fc62f0d93718d21bf089380a64f1507d691e6de399effe84cddaee7","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k820.artifact.json":"5ebd30bf02807283c517c9e39bef71cfcce290a7757feead3ff8d34b7532dd48","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k8475.artifact.json":"ee035280dcc956e3aad939f4746fe5e358604cc15f0e83633a2eb5dd79634f47","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k904.artifact.json":"3971d9eebcc96ddbaa297d33b2bdb940decd9f02334a17d187c321205c7decf2","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k9343.artifact.json":"1f24368d3179b7ffb7a402f284c3b06bab943c61ea4ac38483d020ad465af33b","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard-lot10k-k996.artifact.json":"6683b34230c5260235d9ee5e95a7c4f96fd80f49d35bce53744379933cfb68fc","contracts/curve/v1/artifacts/v1-kasseal-mainnet-3/curve.standard.artifact.json":"96e18e94daedd3da0afe5f215c227f3eb4e341d539ac4cb4df9c5963135b1ce4","contracts/lock/v1/artifacts/build-report.txt":"84542903ff726d3ccf68c1823e0bc1664ebae6722f0303953e2d7e0a52603565","contracts/lock/v1/artifacts/factory.artifact.json":"65e4084cf4d9660001d80b4f3247142bef6804b610b3c61831b6f2674bdfdd51","contracts/lock/v1/artifacts/factory.ctor.json":"b95a39bd35930c626d2ada15a4e925b3df29f65904d9cd3e71faa8844b55ece8","contracts/lock/v1/artifacts/lock.artifact.json":"1f0de542a17abd2d08abebd369c1c41427518f7f88c415317e16a187f0e416c1","contracts/lock/v1/artifacts/lock.ctor.json":"e51a0c58e004505d0bb2ac02a55209916d4e80a51f686dd4576dcb8d30b7ddfe","contracts/lock/v1/artifacts/manifest.json":"7836ef38a4b681b25f300b21e58701179ef8afc54603e859a6841340efee583d","contracts/pool/v1/artifacts/v1-kasseal-mainnet-2-tn10/pool.artifact.json":"11bf7c41d2fb90beb07d92a0d8ce7de32accf676e182fa6882b84c123f3aad3c","contracts/pool/v1/artifacts/v1-kasseal-mainnet-2-tn10/pool.ctor.json":"0e88b336995fcd2c4a84b882239c0a4071dd921e33bd59baf0b0d2a3bf1c3f0b","contracts/pool/v1/artifacts/v1-kasseal-mainnet-2/pool.artifact.json":"7ae79b8a9a36e6b7469dc7fe1d8bd3cc227abe94632e3fe1e36cfcebcb1cccb2","contracts/pool/v1/artifacts/v1-kasseal-mainnet-2/pool.ctor.json":"d2e5abb2350d1f5e7657aca91e5af4ab05b4e42004fe26a2acee956e359afbae","contracts/pool/v1/artifacts/v1-kasseal-mainnet-3-tn10/pool.artifact.json":"11bf7c41d2fb90beb07d92a0d8ce7de32accf676e182fa6882b84c123f3aad3c","contracts/pool/v1/artifacts/v1-kasseal-mainnet-3-tn10/pool.ctor.json":"0e88b336995fcd2c4a84b882239c0a4071dd921e33bd59baf0b0d2a3bf1c3f0b","contracts/pool/v1/artifacts/v1-kasseal-mainnet-3/pool.artifact.json":"7ae79b8a9a36e6b7469dc7fe1d8bd3cc227abe94632e3fe1e36cfcebcb1cccb2","contracts/pool/v1/artifacts/v1-kasseal-mainnet-3/pool.ctor.json":"d2e5abb2350d1f5e7657aca91e5af4ab05b4e42004fe26a2acee956e359afbae"}};var Zb={"nodejs/LICENSE":"fb06b99a835c4cdade7f2f180fd87c0198d552cf1e0cd14c34716411b009a92f","nodejs/kaspa.d.ts":"0034215eb938b5649baddeda2670889ca461ab3644d01943331151bc4dc0d3dc","nodejs/kaspa.js":"6d92cb305d0cc2eb26de9e305b7f7a8c17daa130ad478f0b340b50490557dbcf","nodejs/kaspa_bg.wasm":"c9657568610ae1d305bc2e1cf85208ceba0d1a7893c4057b38caa8add2ffb0f5","nodejs/kaspa_bg.wasm.d.ts":"e7c1c9f8275c45225a315c1083c6b580b1dd509bf8b5bb3ef931a8e8361e20ef","nodejs/package.json":"8b61fefaba842c41b805291d95b2f9e81778ec590813a6c34eddcd316659b8d0","web/LICENSE":"fb06b99a835c4cdade7f2f180fd87c0198d552cf1e0cd14c34716411b009a92f","web/kaspa.d.ts":"2e95d6b2c6892df445ecbea1ead244d76707370c0828a03d7ca8c2f06d1bd6f0","web/kaspa.js":"19b888ecaae0d308f693fc6802b3af6cc772e37db63b546a04a1462f48763b3d","web/kaspa_bg.wasm":"4f86dd96862f8d1169ac9b50704f4808faebfba8fbfd1f19327202ecfcfaf578","web/kaspa_bg.wasm.d.ts":"e7c1c9f8275c45225a315c1083c6b580b1dd509bf8b5bb3ef931a8e8361e20ef","web/package.json":"8d1f0f475a590bb0b4a052564f12713ecbf5d19b1520bf3d231ae9768b90d269"};var Ir=Qb;var f2=Zb;var Lr=class extends Error{static{a(this,"ArtifactIntegrityError")}path;expected;actual;constructor(t,n,r,o){super(`contract artifact ${t}: ${n}`);this.name="ArtifactIntegrityError";this.path=t;this.expected=r;this.actual=o}};var Es=class extends Error{static{a(this,"SdkIntegrityError")}file;constructor(t,n){super(`Kaspa SDK ${t}: ${n}`);this.name="SdkIntegrityError";this.file=t}};var Os=class extends Error{static{a(this,"SdkCompatibilityError")}stage;failures;constructor(t,n){const r=n.slice(0,5).join("; ");const o=n.length>5?` (+${n.length-5} more)`:"";super(`Kaspa SDK passed to initWeb is not compatible (${t}): ${r}${o}`);this.name="SdkCompatibilityError";this.stage=t;this.failures=Object.freeze([...n])}};function p2(e){const t=Ir.files[e];if(t===void 0)throw new Lr(e,"not listed in the package manifest");return t}a(p2,"expectedArtifactDigest");function CA(e,t){const n=p2(e);if(t!==n)throw new Lr(e,`sha256 ${t} does not match the pinned ${n}`,n,t)}a(CA,"assertArtifactDigest");function b2(e){if(Ir.builds[e]===void 0)throw new Lr(e,"is not a bundled build");const t=a(n=>n.includes(`/artifacts/${e}/`),"inBuild");return Object.keys(Ir.files).filter(n=>t(n)||n===Ir.tokenReference.path).sort()}a(b2,"artifactPathsOfBuild");function m2(){const e=`${Ir.lock.path}/`;return Object.keys(Ir.files).filter(t=>t.startsWith(e)).sort()}a(m2,"lockArtifactPaths");function PA(e){const t=`${e.replace(/\/+$/,"")}/`;const n=new Set;for(const r of Object.keys(Ir.files)){if(!r.startsWith(t))continue;const o=r.slice(t.length);if(!o.includes("/"))n.add(o)}return[...n].sort()}a(PA,"listFromManifest");var em=[[Fo,"UNSUPPORTED_NETWORK"],[jo,"UNSUPPORTED_BUILD"],[Lr,"ARTIFACT_INTEGRITY"],[Es,"SDK_INTEGRITY"],[Os,"SDK_INCOMPATIBLE"],[Qt,"ARTIFACT_MISSING"],[ya,"ARTIFACT_NOT_LOADED"],[ga,"ARTIFACT_SOURCE_NOT_INSTALLED"],[Oi,"CONTRACT_SET_NOT_SUPPORTED"],[xa,"SDK_NOT_INSTALLED"],[Rt,"LAYOUT"],[Ln,"UNKNOWN_TEMPLATE"],[Do,"TEMPLATE_MISMATCH"],[Ho,"TEMPLATE_NOT_DECODABLE"],[F,"DECODE"],[q,"VALIDATION"],[vt,"SUPPLY"],[$r,"OWNERSHIP"],[ne,"TRANSFER"],[ge,"STATE_CODEC"],[ia,"DECLARATION"],[G,"SIGSCRIPT"],[Dn,"CURVE_MATH"],[ee,"ARGUMENT"],[sa,"SELL_PAYOUT_TOO_SMALL"],[J,"PARAMETER"],[ca,"OVERFLOW"],[ye,"POOL"],[Xr,"POOL_PAYOUT_TOO_SMALL"],[wt,"LP"],[jt,"LP_STATE"],[da,"LP_SHARE_COUNT"],[la,"LP_SHARES_CAP"],[Yr,"LP_RESERVE_CAP"],[Qr,"LP_FLOOR"],[Zr,"LP_PAYOUT_TOO_SMALL"],[ua,"LP_TOKEN_LEG_TOO_SMALL"],[Hn,"LP_INVARIANT"],[fa,"LP_INVENTORY"],[Ei,"STANDARD_BAND_OUT_OF_RANGE"],[So,"PROOF_NOT_BOUND"],[tr,"SHAPE_NOT_SUPPORTED"],[Ao,"LINEAGE_MISMATCH"],[nr,"TOKEN_AMOUNT_MISMATCH"],[To,"UNKNOWN_CURVE_TEMPLATE"],[Co,"COVENANT_CELL_VALUE"],[xr,"LP_UNSAFE"],[Po,"CURVE_NOT_OF_PROOF"],[Eo,"POOL_NOT_OF_PROOF"],[wr,"NET_BOUND_EXCEEDED"],[Oo,"NEEDS_CONSOLIDATION"],[_o,"NEEDS_SPLIT"],[Tt,"RESIDUAL_BELOW_MINIMUM"],[hr,"FLOOR_VIOLATION"],[vo,"INSUFFICIENT_FUNDS"],[cs,"PINNED_FUNDING_GONE"],[Pr,"INSUFFICIENT_TOKENS"],[ko,"COVENANT_CELL_NOT_FOUND"],[Io,"FOREIGN_COVENANT_INPUT"],[bs,"RATIO_DRIFT"],[En,"UNSAFE_SCRIPT"],[Wt,"SLIPPAGE_OUT_OF_RANGE"],[to,"FEE_ABOVE_CEILING"],[ka,"FEERATE_OUT_OF_RANGE"],[Ko,"TREASURY_NOT_ALLOWED_ON_NETWORK"],[yn,"STATE_JSON"],[Xe,"TOKEN_RECIPIENT_REFUSED"],[Re,"CLAIM_MISMATCH"],[se,"FINALIZE"],[Er,"LOCK_REFUSED"],[Ya,"LOCK_CLAIM_NOT_DUE"],[yt,"LOCK_RULE"],[ei,"REJECTED"],[xe,"REPLACEMENT_REFUSED"],[at,"RETRY_POLICY"],[_n,"INVALID_TRANSITION"],[rt,"OPTIMISTIC_CONFLICT"],[Ee,"ADDRESS"],[rn,"SIGHASH"],[re,"SIGN_REQUEST"],[or,"MESSAGE_SIGNATURE"],[ri,"MESSAGE_SIGNING_UNSUPPORTED"],[ar,"WALLET_UNAVAILABLE"],[qe,"WALLET_NOT_CONNECTED"],[ir,"WALLET_NETWORK_MISMATCH"],[Se,"WALLET_ACCOUNT_MISMATCH"],[Bo,"KASPIRE"],[kt,"KASTLE"],[In,"KASWARE"],[ui,"NOT_SUPPORTED"],[di,"API_ERROR"],[_r,"HEAD_MOVING"]];var g2=[Bo,kt,In];var y2=Object.freeze(em.map(([,e])=>e));function h2(){const e=new Set;for(const[t,n]of em){if(typeof t!=="function"||!(t.prototype instanceof Error))throw new Error(`error table: ${String(n)} is not an Error class`);if(e.has(n))throw new Error(`error table: duplicate code ${n}`);e.add(n);const r=t.prototype;Object.defineProperty(r,"errorCode",{value:n,enumerable:false,configurable:false,writable:false});if(!g2.includes(t))Object.defineProperty(r,"code",{value:n,enumerable:false,configurable:false,writable:false})}}a(h2,"install");h2();function tm(e){if(!(e instanceof Error))return void 0;const t=e.errorCode;return typeof t==="string"?t:void 0}a(tm,"errorCode");function k2(e,t){const n=tm(e);return n!==void 0&&(t===void 0||n===t)}a(k2,"isKassealError");function nm(e){const t={p0:e.p0.toString(),k:e.k.toString(),lot:e.lot.toString(),curveLots:e.curveLots.toString(),gradReserve:e.gradReserve.toString(),feeBps:e.feeBps.toString(),creatorSpk:h(e.creatorSpk),tokenH:e.tokenH,tokenPrefixLen:e.tokenPrefixLen,tokenSuffixLen:e.tokenSuffixLen,poolH:e.poolH,tokenCellKas:e.tokenCellKas.toString(),openWindowLots:e.openWindowLots.toString(),openWindowMaxLots:e.openWindowMaxLots.toString()};if(e.treasurySpk!==void 0)t["treasurySpk"]=h(e.treasurySpk);return t}a(nm,"curveParamsForProof");function rm(e,t,n){for(const r of n){const o=r.curve;if(!$(e,o.prefix)||t.length!==o.suffix.length)continue;const i=Ld(o.suffix,o.params.creatorSpk)[0];if(i===void 0)continue;const s=t.subarray(i,i+bt);if(!dt(s))continue;const c=kf(r,s);if($(c.curve.suffix,t))return c}return null}a(rm,"contextForCurveTemplate");function om(e){const t=[];for(const n of ha){for(const r of ii(n))t.push(vr(r,e,n))}for(const n of Ii(e??gn)){for(const r of ii("v1",n))t.push(vr(r,e,"v1",n))}return t.filter(n=>Cs(n))}a(om,"committedCurveBases");function Of(e,t){return(n,r)=>{const o=rm(n,r,e);if(o===null){t?.("the curve template is not a committed preset of this build: its parameters cannot be checked here");return{ok:true}}return{ok:true,params:nm(o.curve.params)}}}a(Of,"curveTemplateTrust");var v2=146;function am(){const e=Gn(Sc);const t=L(e.contracts.KCC20.bytecode_hex).subarray(v2);if(tt(Uint8Array.of(107),t)!==_e)throw new Error("the bundled reference program does not hash to the KCC-20 reference template");return t}a(am,"referenceTokenSuffix");function im(e){$t(e);return om(e).filter(t=>t.networkId===e)}a(im,"curveBasesOf");function x2(e,t,n=im(t)){$t(t);let r;try{r=sc(e)}catch(s){return{status:"malformed",reason:s instanceof Error?s.message:String(s)}}let o;const i=Lp(r,{referenceSuffix:am(),curveTemplate:Of(n,s=>{o=s})});return i.status==="bound"&&o!==void 0?{...i,status:"unverified",reason:o}:i}a(x2,"verifyLaunchProofJson");var sm=Object.freeze({mainnet:"https://api.kaspa.org","testnet-10":"https://api-tn10.kaspa.org"});function cm(e,t,n){const r=a(s=>typeof s==="string","str");const o=a(s=>(typeof s==="number"||typeof s==="string"&&/^\d+$/.test(s))&&Number.isSafeInteger(Number(s)),"int");if(!r(n.transaction_id)||typeof n.is_accepted!=="boolean")return"unavailable";if(n.transaction_id.toLowerCase()!==t.toLowerCase())return"mismatch";if(!n.is_accepted)return"not-found";if(!Array.isArray(n.inputs))return"unavailable";if(n.inputs.some(s=>!o(s.index)||!r(s.previous_outpoint_hash)||!o(s.previous_outpoint_index)||!r(s.signature_script)))return"unavailable";const i=[...n.inputs].sort((s,c)=>Number(s.index)-Number(c.index));if(i.length!==e.inputs.length)return"mismatch";for(const[s,c]of e.inputs.entries()){const d=i[s];if(Number(d.index)!==s)return"mismatch";if(String(d.previous_outpoint_hash).toLowerCase()!==c.transactionId.toLowerCase()||Number(d.previous_outpoint_index)!==c.index)return"mismatch";if(String(d.signature_script).toLowerCase()!==c.signatureScript.toLowerCase())return"mismatch"}return"confirmed"}a(cm,"compareGraduationWithChain");async function w2(e,t,n={}){$t(t);let r;let o;try{const u=sc(e).graduation;if(u===null||u===void 0)return"none";r=u.tx;o=gt(r).txid}catch{return"mismatch"}const i=(n.baseUrl??sm[t]).replace(/\/+$/,"");const s=n.fetch??((...u)=>fetch(...u));const c=new AbortController;const d=setTimeout(()=>c.abort(),n.timeoutMs??8e3);try{const u=await s(`${i}/transactions/${o}?inputs=true&outputs=false&resolve_previous_outpoints=no`,{signal:c.signal});if(u.status===404)return"not-found";if(!u.ok)return"unavailable";return cm(r,o,await u.json())}catch{return"unavailable"}finally{clearTimeout(d)}}a(w2,"graduationOnChain");function S2(e,t){const n=e.params;if(t<0n||t>n.curveLots)throw new Error(`lotsSold ${t} is outside [0, ${n.curveLots}]`);const r=n.curveLots-t;return t<n.openWindowLots&&n.openWindowMaxLots<r?n.openWindowMaxLots:r}a(S2,"maxBuyLots");function A2(e,t,n){if(n<=0n)return 0n;const r=S2(e,t);if(r<=0n)return 0n;const o=it(e).curve;const i=a(d=>ba(o,t,d).total<=n,"fits");if(!i(1n))return 0n;let s=1n;let c=r;while(s<c){const d=(s+c+1n)/2n;if(i(d))s=d;else c=d-1n}return s}a(A2,"lotsForKas");function qT(e,t,n){const r=A2(e,t,n);const o=r===0n?0n:ba(it(e).curve,t,r).total;return{lots:r,tokens:r*e.params.lot,total:o,leftover:n-o}}a(qT,"buyForKas");function WT(e,t){if(t<0n)throw new Error("tokens must be non-negative");return t/e.params.lot}a(WT,"lotsForTokens");function zT(e,t){if(t<=0n)return void 0;const n=it(e).curve;const r=a(s=>{try{return Ai(n,t,s).total}catch{return-1n}},"net");if(r(t)<pa)return void 0;let o=1n;let i=t;while(o<i){const s=(o+i)/2n;if(r(s)>=pa)i=s;else o=s+1n}return o}a(zT,"minSellLots");function JT(e){return e<=0n?0n:e/Ct}a(JT,"poolLegForKas");var lm="token-lock-v1";async function T2(){await Rl(lm);return Nu()}a(T2,"loadLockSet");function dm(e,t){return e.length===t.bytecode.length&&tt(e.subarray(0,t.stateOffset),e.subarray(t.stateOffset+t.stateLength))===t.templateHash}a(dm,"hasTemplate");function C2(e,t){if(dm(t,e.lock))return"lock";if(dm(t,e.factory))return"lock-factory";return void 0}a(C2,"lockProgramKind");function P2(e){$t(e);return e==="mainnet"?ed:Uu}a(P2,"lockMinDurationMsOf");export{ui as a,Rt as b,Ln as c,Do as d,Ho as e,F as f,q as g,vt as h,$r as i,ne as j,_ as k,h as l,L as m,$ as n,Go as o,Y as p,mm as q,We as r,ge as s,Uf as t,Wo as u,F2 as v,$n as w,j2 as x,Nr as y,bt as z,Ve as A,Bs as B,mt as C,Kr as D,Bt as E,Nf as F,Md as G,D2 as H,zo as I,pi as J,Br as K,dt as L,Jo as M,Xo as N,Fd as O,jd as P,Hd as Q,Zo as R,ea as S,Rn as T,Fr as U,cn as V,Tm as W,Gf as X,Gs as Y,qf as Z,Wf as _,Wd as $,Cm as aa,Pm as ba,Nn as ca,Hr as da,js as ea,Ds as fa,Gd as ga,Df as ha,ta as ia,qs as ja,lr as ka,jr as la,Dr as ma,et as na,Ae as oa,Hs as pa,Vs as qa,qd as ra,zf as sa,Em as ta,Jf as ua,Vr as va,Mt as wa,Om as xa,_m as ya,Im as za,Qf as Aa,Ws as Ba,Hm as Ca,Vm as Da,Ys as Ea,rp as Fa,Qs as Ga,op as Ha,ap as Ia,gt as Ja,mi as Ka,Zs as La,G as Ma,fr as Na,qm as Oa,Wr as Pa,Wm as Qa,ra as Ra,oa as Sa,Ke as Ta,Be as Ua,nc as Va,Kn as Wa,pr as Xa,qr as Ya,dn as Za,Zd as _a,yi as $a,hi as ab,ki as bb,xt as cb,lp as db,Bn as eb,Mn as fb,Fn as gb,el as hb,zm as ib,Xm as jb,Ft as kb,aa as lb,dp as mb,Zm as nb,rc as ob,tl as pb,bp as qb,ig as rb,dg as sb,lg as tb,nl as ub,rl as vb,ol as wb,ug as xb,tt as yb,Jt as zb,jn as Ab,Jr as Bb,vi as Cb,hp as Db,Ov as Eb,kp as Fb,_e as Gb,Rv as Hb,bg as Ib,mg as Jb,ic as Kb,vp as Lb,xp as Mb,ia as Nb,gg as Ob,hg as Pb,Ep as Qb,Op as Rb,Wv as Sb,zv as Tb,kg as Ub,il as Vb,vg as Wb,Lp as Xb,Sg as Yb,Jv as Zb,sc as _b,Dn as $b,ee as ac,sa as bc,J as cc,ca as dc,ye as ec,Xr as fc,wt as gc,jt as hc,da as ic,la as jc,Yr as kc,Qr as lc,Zr as mc,ua as nc,Hn as oc,fa as pc,Dt as qc,wi as rc,ll as sc,pl as tc,Cg as uc,$p as vc,Rp as wc,Pg as xc,ul as yc,pa as zc,fl as Ac,Up as Bc,Np as Cc,un as Dc,Eg as Ec,Kp as Fc,bl as Gc,Si as Hc,ba as Ic,Ai as Jc,Ti as Kc,lc as Lc,ml as Mc,gl as Nc,yl as Oc,hl as Pc,fn as Qc,_g as Rc,fc as Sc,At as Tc,$g as Uc,Mp as Vc,pn as Wc,Rg as Xc,kl as Yc,Ug as Zc,Ng as _c,Kg as $c,y8 as ad,h8 as bd,Ci as cd,Bg as dd,Mg as ed,vl as fd,Fg as gd,k8 as hd,jg as id,xl as jd,Xt as kd,v8 as ld,Sl as md,x8 as nd,jp as od,w8 as pd,S8 as qd,A8 as rd,pc as sd,Ei as td,T8 as ud,Gp as vd,mc as wd,gc as xd,ma as yd,qp as zd,Tl as Ad,U8 as Bd,zp as Cd,Jp as Dd,Xp as Ed,kc as Fd,ey as Gd,ty as Hd,Yp as Id,Qp as Jd,Zp as Kd,oy as Ld,D8 as Md,vc as Nd,Qt as Od,ga as Pd,ha as Qd,ze as Rd,Oi as Sd,nt as Td,n0 as Ud,dy as Vd,Ac as Wd,El as Xd,Ol as Yd,_l as Zd,Il as _d,ya as $d,v3 as ae,l0 as be,Rl as ce,x3 as de,w3 as ee,qn as fe,u0 as ge,we as he,Ht as ie,De as je,br as ke,p0 as le,Ul as me,Cc as ne,$i as oe,Nl as pe,Kl as qe,Ml as re,Ri as se,Pc as te,b0 as ue,m0 as ve,Bl as we,g0 as xe,Wn as ye,ka as ze,Ui as Ae,hy as Be,no as Ce,to as De,Fl as Ee,Te as Fe,Ni as Ge,Ec as He,jl as Ie,vy as Je,y0 as Ke,xy as Le,wy as Me,Vt as Ne,Ki as Oe,ro as Pe,Dl as Qe,xa as Re,Sy as Se,U3 as Te,Ay as Ue,N3 as Ve,zn as We,hn as Xe,he as Ye,Aa as Ze,Oc as _e,_c as $e,Ty as af,Mi as bf,Gl as cf,Ta as df,Je as ef,Ca as ff,Fi as gf,Ce as hf,ql as if,mr as jf,Jn as kf,x0 as lf,ji as mf,en as nf,Ic as of,Hl as pf,Bi as qf,yn as rf,Pa as sf,Ea as tf,Lc as uf,zl as vf,$c as wf,Jl as xf,w0 as yf,Xn as zf,Ey as Af,Le as Bf,lo as Cf,Oy as Df,Ge as Ef,kn as Ff,Xl as Gf,S0 as Hf,Hi as If,Ql as Jf,Zl as Kf,eu as Lf,tu as Mf,nu as Nf,ru as Of,ou as Pf,au as Qf,iu as Rf,su as Sf,Vi as Tf,C0 as Uf,cu as Vf,du as Wf,lu as Xf,uu as Yf,_y as Zf,Gi as _f,Oa as $f,qi as ag,j as bg,E0 as cg,Tt as dg,$0 as eg,R0 as fg,fu as gg,pu as hg,uo as ig,_0 as jg,I0 as kg,L0 as lg,U0 as mg,Iy as ng,Ly as og,ux as pg,fx as qg,N0 as rg,px as sg,bx as tg,Q as ug,K0 as vg,B0 as wg,Wi as xg,Rc as yg,M0 as zg,Ct as Ag,F0 as Bg,$y as Cg,j0 as Dg,mu as Eg,gu as Fg,Nc as Gg,vn as Hg,fo as Ig,bu as Jg,Gt as Kg,_a as Lg,Ry as Mg,yu as Ng,nn as Og,po as Pg,Uc as Qg,zi as Rg,Ji as Sg,hu as Tg,Xi as Ug,bo as Vg,Uy as Wg,V0 as Xg,G0 as Yg,ku as Zg,Kc as _g,Ex as $g,q0 as ah,Ny as bh,W0 as ch,z0 as dh,Ox as eh,J0 as fh,X0 as gh,ut as hh,Ia as ih,vu as jh,xn as kh,Ky as lh,By as mh,Y0 as nh,Q0 as oh,$e as ph,Nx as qh,My as rh,Yi as sh,Kx as th,n1 as uh,r1 as vh,Bx as wh,Mx as xh,Fx as yh,Bc as zh,jx as Ah,Dx as Bh,Hx as Ch,Fy as Dh,wu as Eh,jy as Fh,o1 as Gh,Vx as Hh,Gx as Ih,qx as Jh,Wx as Kh,Mc as Lh,Fc as Mh,Su as Nh,a1 as Oh,u1 as Ph,Ua as Qh,Wy as Rh,zy as Sh,Jy as Th,Xy as Uh,rn as Vh,Vc as Wh,Eu as Xh,m1 as Yh,se as Zh,h1 as _h,Na as $h,qc as ai,k1 as bi,Wc as ci,v1 as di,Cw as ei,Pw as fi,zc as gi,Jc as hi,nh as ii,rh as ji,oh as ki,ah as li,Mw as mi,Re as ni,ih as oi,Fw as pi,Qn as qi,gr as ri,Qc as si,ft as ti,Pt as ui,ts as vi,$u as wi,Ru as xi,yr as yi,ho as zi,S1 as Ai,Ba as Bi,rs as Ci,A1 as Di,es as Ei,ed as Fi,Uu as Gi,Zi as Hi,wn as Ii,yo as Ji,Ka as Ki,ch as Li,Iu as Mi,Nu as Ni,ns as Oi,Ku as Pi,os as Qi,P1 as Ri,td as Si,nd as Ti,Zn as Ui,Bu as Vi,Mu as Wi,Lu as Xi,as as Yi,Fu as Zi,uh as _i,rd as $i,od as aj,yt as bj,ad as cj,Ma as dj,E1 as ej,ju as fj,Du as gj,sd as hj,cd as ij,dd as jj,rt as kj,O1 as lj,Xe as mj,i4 as nj,s4 as oj,ko as pj,ld as qj,L1 as rj,$1 as sj,ot as tj,R1 as uj,Fa as vj,hr as wj,gh as xj,ja as yj,vo as zj,yh as Aj,hh as Bj,kh as Cj,vh as Dj,xh as Ej,wh as Fj,cs as Gj,kr as Hj,w4 as Ij,U1 as Jj,He as Kj,pt as Lj,Ue as Mj,Da as Nj,N1 as Oj,Ha as Pj,qt as Qj,ht as Rj,Sn as Sj,xo as Tj,on as Uj,an as Vj,de as Wj,le as Xj,An as Yj,Et as Zj,er as _j,Ne as $j,wo as ak,Hu as bk,So as ck,tr as dk,Ao as ek,nr as fk,To as gk,Co as hk,xr as ik,Po as jk,Eo as kk,wr as lk,Oo as mk,_o as nk,Tn as ok,X4 as pk,Lo as qk,Sr as rk,Ot as sk,$o as tk,Ga as uk,qa as vk,Pe as wk,ke as xk,ve as yk,ds as zk,Ar as Ak,ud as Bk,Wa as Ck,Cn as Dk,za as Ek,Tr as Fk,Fe as Gk,ls as Hk,Pn as Ik,_t as Jk,Io as Kk,Ye as Lk,Ph as Mk,Gu as Nk,fd as Ok,us as Pk,pd as Qk,qu as Rk,Pr as Sk,bd as Tk,md as Uk,Cr as Vk,M1 as Wk,zu as Xk,Ju as Yk,Eh as Zk,S6 as _k,Wu as $k,D1 as al,ps as bl,H1 as cl,On as dl,En as el,N6 as fl,gd as gl,yd as hl,V1 as il,Xu as jl,_h as kl,Ih as ll,X6 as ml,G1 as nl,Y6 as ol,Q6 as pl,Z6 as ql,eS as rl,tS as sl,Lh as tl,nS as ul,q1 as vl,$h as wl,rS as xl,oS as yl,aS as zl,iS as Al,Rh as Bl,Yu as Cl,ms as Dl,W1 as El,Qu as Fl,gs as Gl,ys as Hl,hs as Il,ks as Jl,z1 as Kl,rr as Ll,hd as Ml,Uh as Nl,vs as Ol,Nh as Pl,kd as Ql,Ja as Rl,Kh as Sl,Bh as Tl,sS as Ul,Mh as Vl,Fh as Wl,bs as Xl,J1 as Yl,wd as Zl,Dh as _l,Hh as $l,Ee as am,ef as bm,It as cm,Lt as dm,Xa as em,Sd as fm,Er as gm,Ya as hm,eb as im,Qa as jm,Za as km,rf as lm,Ss as mm,nf as nm,ob as om,As as pm,Wh as qm,zh as rm,Jh as sm,ab as tm,af as um,Xh as vm,Yh as wm,lb as xm,ub as ym,Pd as zm,Wt as Am,sf as Bm,pb as Cm,nk as Dm,rk as Em,_S as Fm,IS as Gm,ok as Hm,ei as Im,ik as Jm,KS as Km,sk as Lm,BS as Mm,MS as Nm,FS as Om,mb as Pm,cf as Qm,xe as Rm,uk as Sm,fk as Tm,pk as Um,VS as Vm,hb as Wm,at as Xm,df as Ym,JS as Zm,XS as _m,Sk as $m,kb as an,Ak as bn,_n as cn,Ek as dn,Ok as en,_k as fn,vb as gn,ti as hn,ff as in,Ko as jn,Cb as kn,Pb as ln,Eb as mn,Od as nn,pf as on,Cs as pn,ni as qn,or as rn,ri as sn,_d as tn,re as un,$k as vn,Rk as wn,oi as xn,Ob as yn,ai as zn,Bo as An,ar as Bn,qe as Cn,ir as Dn,Se as En,bf as Fn,L5 as Gn,$5 as Hn,In,Id as Jn,Kk as Kn,_b as Ln,gf as Mn,Bk as Nn,mf as On,j5 as Pn,Dk as Qn,yf as Rn,kt as Sn,Hk as Tn,Vk as Un,hf as Vn,J5 as Wn,Ld as Xn,kf as Yn,Ib as Zn,$b as _n,o9 as $n,Jk as ao,Rb as bo,Nb as co,Kb as do,it as eo,Sf as fo,Qk as go,Zk as ho,Mb as io,$d as jo,Fb as ko,jb as lo,Mo as mo,Af as no,Tf as oo,Cf as po,Ud as qo,Pf as ro,Vb as so,ii as to,r2 as uo,Wb as vo,si as wo,o2 as xo,a2 as yo,Fo as zo,jo as Ao,zb as Bo,$t as Co,Jb as Do,i2 as Eo,c2 as Fo,di as Go,_r as Ho,Ef as Io,l2 as Jo,u2 as Ko,Ir as Lo,f2 as Mo,Lr as No,Es as Oo,Os as Po,CA as Qo,b2 as Ro,m2 as So,PA as To,y2 as Uo,tm as Vo,k2 as Wo,nm as Xo,rm as Yo,Of as Zo,am as _o,im as $o,x2 as ap,sm as bp,cm as cp,w2 as dp,S2 as ep,A2 as fp,qT as gp,WT as hp,zT as ip,JT as jp,lm as kp,T2 as lp,C2 as mp,P2 as np};