PageSourceSearch

https://stellar-confidential-token-demo.billowing-moon-0c6f.worker…/static/chunks/890-9d769603fd09caee.js

js stellar-confidential-token-demo.billowing-moon-0c6f.workers.dev collected 2026-10-03 08:11:09 UTC 35,310 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[890],{1235:(e,t,r)=>{r.d(t,{U:()=>a});var n=r(8914);function a(e){return{client:new n.$h({rpcUrl:e.rpcUrl,networkPassphrase:e.networkPassphrase,contracts:e.contracts}),indexer:e.indexerUrl?new n.Pc({baseUrl:e.indexerUrl}):void 0}}},1311:(e,t,r)=>{r.d(t,{Kl:()=>s,Sh:()=>a,kp:()=>n,tf:()=>i});let n={id:"default",label:"Default Confidential Token",kind:"vanilla",rpcUrl:"https://soroban-testnet.stellar.org",networkPassphrase:r(6234).Networks.TESTNET,indexerUrl:"https://confidential-token-indexer.billowing-moon-0c6f.workers.dev",deployedAtLedger:3013364,auditorId:0,auditorSecretHex:"0x00c066da47bac8f87cd3eb9a36c37b417ca40cfa2730e7d8eb7f0bf939d11832",contracts:{token:"CBF64DEOVQAXJFBSNGFEUT2AH4H7K5JBY3ZYJ5GVEINMNSDISWRG5N3F",verifier:"CDCET36PIS44DWJM5UQSSI4ZHGRDSBIIQW4G4ALPYK3Y6FEQGY5ZWFXL",auditor:"CA4II62E35TQKPGHCPBD6EBAS732GSGS6H37UUWKEDHR4YTBVMPHVY4L",underlying:"CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC",factory:"CDX4DBNWDMD7BVZCOJPTXVTBRXU2RG7JUOZKOOUX5RVWWWWIGV2LWS6Z"}},a=n.contracts.underlying;function i(e){switch(e){case"vanilla":return"Default Confidential Token";case"compliance":return"Confidential Token with compliance (freeze only)";case"allowlist":return"Confidential Token with compliance + allowlist policy";case"blocklist":return"Confidential Token with compliance + blocklist policy"}}function s(e){return"default"!==e.id}},1435:(e,t,r)=>{function n(e,t=6,r=4){return e?`${e.slice(0,t)}…${e.slice(-r)}`:"—"}function a(e,t=10){return e?`${e.slice(0,t)}…`:"—"}function i(e){let t=e.trim();if(!/^\d+(\.\d+)?$/.test(t))throw Error(`invalid XLM amount: "${e}"`);let[r,n=""]=t.split(".");if(n.length>7)throw Error(`too many decimals — max 7 for XLM: "${e}"`);return 10000000n*BigInt(r)+BigInt(n.padEnd(7,"0"))}function s(e){let t=e<0n,r=t?-e:e,n=r/10000000n,a=r%10000000n,i=t?"-":"";if(0n===a)return`${i}${n}`;let s=a.toString().padStart(7,"0").replace(/0+$/,"");return`${i}${n}.${s}`}r.d(t,{dc:()=>s,kU:()=>n,nE:()=>i,vs:()=>a})},2407:(e,t,r)=>{r.d(t,{Z:()=>a});var n=r(8914);function a(e){let t=function(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;if(e&&"object"==typeof e){if("string"==typeof e.message)return void 0!==e.code?`${e.message} (code ${String(e.code)})`:e.message;try{return JSON.stringify(e)}catch{}}return String(e)}(e);return(0,n.kP)(t)??t}},2476:(e,t,r)=>{r.d(t,{ActiveDeploymentProvider:()=>l,F:()=>d});var n=r(7426),a=r(5162),i=r(1311);let s="ctd:advanced:deployment",o="ctd:active",c=(0,a.createContext)(null);function l({children:e}){let[t,r]=(0,a.useState)(null),[d,u]=(0,a.useState)("default");(0,a.useEffect)(()=>{let e=function(){if("u"<typeof localStorage)return null;let e=localStorage.getItem(s);if(!e)return null;try{return JSON.parse(e)}catch{return null}}();e&&r(e),"advanced"===localStorage.getItem(o)&&e&&u("advanced")},[]);let f=(0,a.useCallback)(e=>{u(e);try{localStorage.setItem(o,e)}catch{}},[]),g=(0,a.useCallback)(e=>{try{localStorage.setItem(s,JSON.stringify(e)),localStorage.setItem(o,"advanced")}catch{}r(e),u("advanced")},[]),p=(0,a.useCallback)(()=>{try{localStorage.removeItem(s),localStorage.setItem(o,"default")}catch{}r(null),u("default")},[]),h="advanced"===d&&t?t:i.kp;return(0,n.jsx)(c.Provider,{value:{active:h,advanced:t,which:d,setWhich:f,saveAdvanced:g,clearAdvanced:p},children:e})}function d(){let e=(0,a.useContext)(c);if(!e)throw Error("useActiveDeployment must be used within ActiveDeploymentProvider");return e}},6044:(e,t,r)=>{r.d(t,{g:()=>c});var n=r(7426),a=r(5162),i=r(2476),s=r(1311),o=r(6715);function c({className:e=""}){let{active:t}=(0,i.F)(),[r,l]=(0,a.useState)(!1),d=(0,a.useRef)(t.contracts.token);return(0,a.useEffect)(()=>{if(d.current===t.contracts.token)return;d.current=t.contracts.token,l(!0);let e=setTimeout(()=>l(!1),900);return()=>clearTimeout(e)},[t.contracts.token]),(0,n.jsxs)("div",{className:`inline-flex flex-wrap items-center gap-x-2 gap-y-1 rounded-md border px-3 py-2 text-xs transition-all ease-out ${r?"duration-200 scale-[1.04] border-emerald-500/70 bg-emerald-500/10 shadow-[0_0_12px_-2px_rgb(16_185_129/0.4)]":"duration-700 scale-100 border-neutral-800 bg-neutral-900/50 shadow-[0_0_12px_-2px_rgb(16_185_129/0)]"} ${e}`,children:[(0,n.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400 ring-2 ring-emerald-400/20","aria-hidden":!0}),(0,n.jsx)("span",{className:"text-neutral-500",children:"Serving"}),(0,n.jsx)(o.C,{value:t.contracts.token,className:"font-medium text-neutral-200"}),(0,n.jsx)("span",{className:"text-neutral-600",children:"—"}),(0,n.jsx)("span",{className:"text-neutral-300",children:(0,s.tf)(t.kind)})]})}},6715:(e,t,r)=>{r.d(t,{C:()=>o});var n=r(7426),a=r(5162),i=r(8764),s=r(1435);function o({value:e,full:t=!1,className:r=""}){let[c,l]=(0,a.useState)(!1),d=async t=>{if(t.stopPropagation(),e)try{await navigator.clipboard.writeText(e),l(!0),setTimeout(()=>l(!1),1200)}catch{}};return(0,n.jsxs)("span",{className:"group relative inline-block",children:[(0,n.jsx)("button",{type:"button",onClick:d,"aria-label":`Copy address ${e}`,className:`inline cursor-pointer appearance-none border-0 bg-transparent p-0 font-mono decoration-dotted underline-offset-2 hover:underline focus-visible:underline ${c?"text-emerald-400":""} ${r}`,children:c?"Copied ✓":t?e:(0,s.kU)(e)}),!c&&(0,n.jsx)(i._,{label:"Copy"})]})}},8282:(e,t,r)=>{r.d(t,{q:()=>i});var n=r(7426),a=r(6044);
1function i({title:e,subtitle:t,badge:r=!0,children:s}){return(0,n.jsxs)("main",{className:"mx-auto max-w-3xl px-5 py-10",children:[(0,n.jsxs)("header",{className:"mb-8",children:[(0,n.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:e}),t&&(0,n.jsx)("p",{className:"mt-2 text-sm leading-relaxed text-neutral-400",children:t}),r&&(0,n.jsx)(a.g,{className:"mt-4"})]}),s]})}},8764:(e,t,r)=>{r.d(t,{_:()=>a});var n=r(7426);function a({label:e}){return(0,n.jsx)("span",{role:"tooltip",className:"pointer-events-none absolute top-1/2 left-full z-10 ml-1.5 -translate-y-1/2 whitespace-nowrap rounded bg-neutral-800 px-1.5 py-0.5 font-sans text-[10px] text-neutral-200 opacity-0 shadow transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100",children:e})}},8914:(e,t,r)=>{r.d(t,{$h:()=>J,V2:()=>a,$L:()=>e4,H:()=>b,Pc:()=>eh,mV:()=>eX,ov:()=>eF,yr:()=>V,XL:()=>eP,Hy:()=>e7,Wz:()=>e9,Xk:()=>te,rn:()=>eH,JQ:()=>P,xZ:()=>H,oN:()=>O,UG:()=>C,cJ:()=>eD,ah:()=>eL,E6:()=>e$,Wi:()=>$,Cd:()=>U,p3:()=>eO,xG:()=>x,Lu:()=>i,J2:()=>eU,DB:()=>c,aD:()=>u,Xx:()=>e0,kP:()=>eM,Se:()=>eE,x0:()=>e2,FR:()=>E,hQ:()=>e8,Js:()=>e3,Yc:()=>X,A7:()=>eV,Xp:()=>e1,PR:()=>_,cp:()=>M,rf:()=>ea,zQ:()=>ei,eY:()=>en,CP:()=>eo,PA:()=>es,qo:()=>d,kV:()=>eK,uk:()=>eB,tE:()=>e5});let n=1n<<64n,a={ADDRESS:1n,VIEWING_KEY:2n,DELEGATION_VIEWING_KEY:3n,SPEND_RANDOMNESS:4n,TX_BLINDING:5n,TX_AMOUNT:6n,ENCRYPTED_BALANCE:7n,ENCRYPTED_ALLOWANCE:8n,ALLOWANCE_RANDOMNESS:9n,ESCROWED_DELEGATION_VIEWING_KEY:10n,AUDITOR_SENDER:11n,AUDITOR_RECIPIENT:12n,DISCLOSURE:13n,DISCLOSURE_BIND:14n,EPHEMERAL_KEY:15n};function i(e){let t=e%0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n;return t<0n?t+0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n:t}function s(e,t){let r=(e+t)%0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n;return r<0n?r+0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n:r}function o(e){if(e<0n||e>=1n<<256n)throw RangeError(`value out of 256-bit range: ${e}`);let t=new Uint8Array(32),r=e;for(let e=31;e>=0;e--)t[e]=Number(255n&r),r>>=8n;return t}function c(e){let t=0n;for(let r of e)t=t<<8n|BigInt(r);return t}function l(e){let t=0n;for(let r=e.length-1;r>=0;r--)t=t<<8n|BigInt(e[r]);return t}function d(e){return"0x"+i(e).toString(16).padStart(64,"0")}function u(e){return BigInt(e.startsWith("0x")||e.startsWith("0X")?e:"0x"+e)}function f(e){let t=e.startsWith("0x")||e.startsWith("0X")?e.slice(2):e;if(t.length%2!=0)throw Error("odd-length hex");let r=new Uint8Array(t.length/2);for(let e=0;e<r.length;e++)r[e]=parseInt(t.slice(2*e,2*e+2),16);return r}function g(){for(;;){let e=new Uint8Array(32);crypto.getRandomValues(e),e[0]=0;let t=c(e);if(0n!==t&&t<0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n)return t}}var p=r(3700),h=r(2129);let v=(0,h.D0)(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n),y=(0,h.D0)(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n),w=(0,p.hj)({p:0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n,n:0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n,h:1n,a:0n,b:v.create(-17n),Gx:0x83e7911d835097629f0067531fc15cafd79a89beecb39903f69572c636f4a5an,Gy:0x1a7f5efaad7f315c25a918f30cc8d7333fccab7ad7c90f14de81bcc528f9935dn},{Fp:v,Fn:y,allowInfinityPoint:!0}),m=w.BASE,b=w.fromAffine({x:0x54aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402n,y:0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126n});function _(e,t){let r=e%0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n;return(r<0n&&(r+=0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n),0n===r)?w.ZERO:t.multiply(r)}function k(e,t){return _(e,m).add(_(t,b))}function x(e,t){let r=_(e,t);if(r.is0())throw Error("ecdh produced the identity (degenerate key)");return r.toAffine().x}function E(e){return e.is0()?{x:0n,y:0n}:e.toAffine()}function A(e){if(64!==e.length)throw Error(`expected 64 bytes, got ${e.length}`);let t=!0;for(let r of e)if(0!==r){t=!1;break}if(t)return w.ZERO;let r=c(e.subarray(0,32)),n=c(e.subarray(32,64));return w.fromAffine({x:r,y:n})}w.ZERO;var S=r(7778);function T(e,t){return function(e){let t=e.length,r=[0n,0n,0n,i(BigInt(t)*n)],a=Math.floor(t/3);for(let t=0;t<a;t++)r[0]=i(r[0]+e[3*t]),r[1]=i(r[1]+e[3*t+1]),r[2]=i(r[2]+e[3*t+2]),r=(0,S.Ny)(r);let s=t-3*a;if(0!==s){for(let t=0;t<s;t++)r[t]=i(r[t]+e[3*a+t]);r=(0,S.Ny)(r)}return r[0]}([e,...t])}function I(e,t,r){let a=i(3n*n),s=(0,S.Ny)([e,t,r,a]);return[s[0],s[1]]}let N=(e,t)=>T(a.SPEND_RANDOMNESS,[e,t]),R=(e,t)=>T(a.TX_BLINDING,[e,t]),$=(e,t)=>{let r=T(a.EPHEMERAL_KEY,[e,t]);if(0n===r)throw Error("derived r_e is zero — resample sigma");return r},D=(e,t,r)=>i(e+T(a.ENCRYPTED_BALANCE,[t,r])),L=(e,t,r)=>i(e+T(a.DISCLOSURE,[t,r])),C=(e,t,r,n)=>i(e-T(t,[r,n]));function V(e){let t=new TextEncoder().encode(e);if(56!==t.length)throw Error(`address_to_field expects a 56-char strkey, got ${t.length}: ${e}`);let r=l(t.subarray(0,28)),n=l(t.subarray(28,56));return T(a.ADDRESS,[r,n])}function U(e,t){let r=T(a.VIEWING_KEY,[e,t]),n=_(e,b),i=_(r,b);return{sk:e,vk:r,Y:n,PVK:i,addrF:t}}function B(e,t){let{x:r,y:n}=E(t);return{[`${e}_x`]:d(r),[`${e}_y`]:d(n)}}function P(e){return{inputs:{sk:d(e.sk),...B("y",e.Y),...B("pvk",e.PVK),addr_f:d(e.addrF)},payload:{y:e.Y,pvk:e.PVK}}}
1function O(e){let t,r,n,{keys:s,v:o,r:c,amount:l,kAudS:u}=e;if(l<0n)throw Error("withdraw amount must be non-negative");let f=o-l;if(f<0n)throw Error("withdraw amount exceeds spendable balance");let p=e.sigma??g(),h=e.rE??g(),v=k(o,c),y=N(s.vk,p),w=k(f,y),m=D(f,s.vk,p),E=_(h,b),A=(t=f,r=x(h,u),n=p,i(t+T(a.AUDITOR_SENDER,[r,n])));return{inputs:{sk:d(s.sk),v:d(o),r:d(c),r_e:d(h),...B("c_spend",v),...B("y",s.Y),addr_f:d(s.addrF),...B("k_aud_s",u),a:d(l),...B("c_spend_new",w),sigma:d(p),b_tilde:d(m),...B("r_e",E),b_tilde_aud_s:d(A)},payload:{cSpendNew:w,bTilde:m,rE:E,sigma:p,bAudS:A},next:{v:f,r:y,cSpend:w}}}function H(e){let t,r,n,{keys:s,v:o,r:c,amount:l,pvkB:u,kAudR:f,kAudS:p}=e;if(l<0n)throw Error("transfer amount must be non-negative");let h=o-l;if(h<0n)throw Error("transfer amount exceeds spendable balance");let v=e.sigma??g(),y=e.rE??$(s.vk,v),w=k(o,c),m=N(s.vk,v),E=k(h,m),A=D(h,s.vk,v),S=_(y,b),L=x(y,u),C=R(L,v),V=k(l,C),U=(t=l,r=L,n=v,i(t+T(a.TX_AMOUNT,[r,n]))),P=x(y,f),O=I(a.AUDITOR_RECIPIENT,P,v),H=i(l+O[0]),K=i(C+O[1]),G=x(y,p),W=I(a.AUDITOR_SENDER,G,v),M=i(l+W[0]),j=i(h+W[1]);return{inputs:{sk:d(s.sk),v:d(o),r:d(c),v_tx:d(l),r_e:d(y),...B("c_spend",w),...B("y",s.Y),...B("pvk_b",u),addr_f:d(s.addrF),...B("k_aud_r",f),...B("k_aud_s",p),...B("c_spend_new",E),...B("c_tx",V),...B("r_e",S),v_tilde:d(U),b_tilde:d(A),sigma:d(v),v_tilde_aud_r:d(H),r_tilde_aud_r:d(K),v_tilde_aud_s:d(M),b_tilde_aud_s:d(j)},payload:{cSpendNew:E,cTx:V,rE:S,vTilde:U,bTilde:A,sigma:v,vAudR:H,rAudR:K,vAudS:M,bAudS:j},next:{v:h,r:m,cSpend:E},recipientView:{vTx:l,rTx:C,cTx:V},rEScalar:y}}var K=r(109);let G={keccak:!0},W=async()=>(await r.e(362).then(r.t.bind(r,8362,19))).UltraHonkBackend;function M(e){W=e}class j{#e;#t;#r;constructor(e){this.#e=new K.RK(e),this.#t=e.bytecode}async #n(){if(!this.#r){let e=await W();this.#r=new e(this.#t)}return this.#r}async prove(e){let{witness:t}=await this.#e.execute(e),r=await this.#n(),{proof:n,publicInputs:a}=await r.generateProof(t,G);return{proof:n,publicInputs:a}}async verify(e){return(await this.#n()).verifyProof(e,G)}async verificationKey(){return(await this.#n()).getVerificationKey(G)}async destroy(){await this.#r?.destroy()}}function X(e){return new j(e)}var Y=r(6234);let F="GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF";class J{constructor(e){this.cfg=e,this.server=new Y.rpc.Server(e.rpcUrl,{allowHttp:e.rpcUrl.startsWith("http://")})}async simulate(e,t,r){let n=await this.server.getAccount(F).catch(()=>new Y.Account(F,"0")),a=new Y.TransactionBuilder(n,{fee:Y.BASE_FEE,networkPassphrase:this.cfg.networkPassphrase}).addOperation(new Y.Contract(e).call(t,...r)).setTimeout(30).build(),i=await this.server.simulateTransaction(a);if(Y.rpc.Api.isSimulationError(i))throw Error(`simulate ${t} failed: ${i.error}`);if(!i.result)throw Error(`simulate ${t}: no result`);return i.result.retval}async confidentialBalance(e){try{var t=await this.simulate(this.cfg.contracts.token,"confidential_balance",[new Y.Address(e).toScVal()]);let r=t.map();if(!r)throw Error("expected ScMap for ConfidentialAccount");let n={};for(let e of r)switch(e.key().sym().toString()){case"spending_key":n.spendingKey=A(new Uint8Array(e.val().bytes()));break;case"viewing_public_key":n.viewingPublicKey=A(new Uint8Array(e.val().bytes()));break;case"spendable_balance":n.spendableBalance=A(new Uint8Array(e.val().bytes()));break;case"receiving_balance":n.receivingBalance=A(new Uint8Array(e.val().bytes()));break;case"auditor_id":n.auditorId=e.val().u32()}return n}catch{return null}}async isRegistered(e){return await this.confidentialBalance(e)!==null}async auditorKey(e){return A(new Uint8Array((await this.simulate(this.cfg.contracts.auditor,"get_key",[Y.xdr.ScVal.scvU32(e)])).bytes()))}async latestLedger(){return(await this.server.getHealth()).latestLedger}async invoke(e,t,r,n){let a=await this.server.getAccount(n.publicKey),i=new Y.TransactionBuilder(a,{fee:Y.BASE_FEE,networkPassphrase:this.cfg.networkPassphrase}).addOperation(new Y.Contract(e).call(t,...r)).setTimeout(180).build(),s=await this.server.simulateTransaction(i);if(Y.rpc.Api.isSimulationError(s))throw Error(`simulate ${t} failed: ${s.error}`);let o=Y.rpc.assembleTransaction(i,s).build(),c=await n.sign(o.toXDR()),l=Y.TransactionBuilder.fromXD
1R(c,this.cfg.networkPassphrase),d=await this.server.sendTransaction(l);if("ERROR"===d.status)throw Error(`send ${t} rejected: ${JSON.stringify(d.errorResult)}`);for(let e=0;e<60;e++){await new Promise(e=>setTimeout(e,2e3));let e=await this.server.getTransaction(d.hash);if(e.status!==Y.rpc.Api.GetTransactionStatus.NOT_FOUND){if(e.status===Y.rpc.Api.GetTransactionStatus.FAILED)throw Error(`${t} failed on-chain (tx ${d.hash})`);return{hash:d.hash,status:e.status,returnValue:e.returnValue}}}throw Error(`${t} confirmation timed out (tx ${d.hash})`)}}var Z=r(3290).hp;let z=e=>Y.xdr.ScVal.scvBytes(Z.from(e)),Q=e=>z(function(e){let t=new Uint8Array(64);if(e.is0())return t;let{x:r,y:n}=e.toAffine();return t.set(o(r),0),t.set(o(n),32),t}(e));function q(e){let t=Object.keys(e).sort().map(t=>new Y.xdr.ScMapEntry({key:Y.xdr.ScVal.scvSymbol(t),val:e[t]}));return Y.xdr.ScVal.scvMap(t)}function ee(e,t){let r=q({payload:e,proof:z(t)});return z(r.toXDR())}let et=e=>new Y.Address(e).toScVal(),er=e=>(0,Y.nativeToScVal)(e,{type:"i128"});function en(e,t,r,n,a,i){return e.invoke(e.cfg.contracts.token,"register",[et(r),Y.xdr.ScVal.scvU32(n),ee(q({y:Q(a.payload.y),pvk:Q(a.payload.pvk)}),i)],t)}function ea(e,t,r,n,a){return e.invoke(e.cfg.contracts.token,"deposit",[et(r),et(n),er(a)],t)}function ei(e,t,r){return e.invoke(e.cfg.contracts.token,"merge",[et(r)],t)}function es(e,t,r,n,a,i,s){var c,l;let d;return e.invoke(e.cfg.contracts.token,"withdraw",[et(r),et(n),er(a),(c=i,l=s,ee(q({c_spend_new:Q((d=c.payload).cSpendNew),b_tilde:z(o(d.bTilde)),r_e:Q(d.rE),sigma:z(o(d.sigma)),b_aud_s:z(o(d.bAudS))}),l))],t)}function eo(e,t,r,n,a,i){var s,c;let l;return e.invoke(e.cfg.contracts.token,"confidential_transfer",[et(r),et(n),(s=a,c=i,ee(q({c_spend_new:Q((l=s.payload).cSpendNew),c_tx:Q(l.cTx),r_e:Q(l.rE),v_tilde:z(o(l.vTilde)),b_tilde:z(o(l.bTilde)),sigma:z(o(l.sigma)),v_aud_r:z(o(l.vAudR)),r_aud_r:z(o(l.rAudR)),v_aud_s:z(o(l.vAudS)),b_aud_s:z(o(l.bAudS))}),c))],t)}let ec=new Set(["register","deposit","merge","withdraw","transfer","frozen","unfrozen","user_allowed","user_disallowed","user_blocked","user_unblocked"]);function el(e,t,r,n){switch(e){case"register":return{...t,type:"register",account:r(1),auditorId:n.u32("auditor_id")};case"deposit":return{...t,type:"deposit",from:r(1),to:r(2),amount:n.i128("amount")};case"merge":return{...t,type:"merge",account:r(1)};case"withdraw":return{...t,type:"withdraw",from:r(1),to:r(2),amount:n.i128("amount"),rE:n.point("r_e"),sigma:n.field("sigma"),bTilde:n.field("b_tilde"),bAudS:n.field("b_aud_s")};case"transfer":return{...t,type:"transfer",from:r(1),to:r(2),rE:n.point("r_e"),vTilde:n.field("v_tilde"),sigma:n.field("sigma"),bTilde:n.field("b_tilde"),vAudR:n.field("v_aud_r"),rAudR:n.field("r_aud_r"),vAudS:n.field("v_aud_s"),bAudS:n.field("b_aud_s")};case"frozen":case"unfrozen":case"user_allowed":case"user_disallowed":case"user_blocked":case"user_unblocked":return{...t,type:e,account:r(1)};default:return null}}function ed(e){return Number(BigInt(e.split("-")[0])>>32n)}function eu(e){return`${e.ledger}-${e.txHash}-${e.opIndex}-${e.eventIndex}`}async function ef(e,t){let r=t.contractId??e.cfg.contracts.token,n=t.pageLimit??100,a=[],i=t.startCursor,s=t.startCursor,o=0;if(void 0===i&&void 0===t.startLedger)throw Error("fetchEvents requires either startLedger or startCursor");for(;;){let c=[{type:"contract",contractIds:[r]}],l=i?{filters:c,cursor:i,limit:n}:{filters:c,startLedger:t.startLedger,limit:n},d=await e.server.getEvents(l);for(let e of(o=d.latestLedger,d.events)){let t=ep(e);t&&a.push(t)}let u=s;if(s=d.cursor,i=d.cursor,!d.cursor||ed(d.cursor)>=d.latestLedger||d.cursor===u)break}return{events:a,cursor:s,latestLedger:o}}async function eg(e,t){let r=(await e.server.getEvents({filters:[{type:"contract",contractIds:[e.cfg.contracts.token]}],startLedger:t.ledger,endLedger:t.ledger+1,limit:200})).events.map(ep).filter(e=>null!==e&&e.cursor===t.id);if(1!==r.length)return null;let n=r[0];return n.txHash!==t.txHash?null:n}function ep(e){let t=e.topic;if(0===t.length)return null;let r=t[0].sym().toString();if(!ec.has(r))return null;let{opIndex:n,eventIndex:a}=function(e){let[t,r]=e.split("-");return{opIndex:Number(4095n&BigInt(t)),eventIndex:Number(r??"0")}}(e.id);
1return el(r,{ledger:e.ledger,txHash:e.txHash,cursor:eu({ledger:e.ledger,txHash:e.txHash,opIndex:n,eventIndex:a})},e=>Y.Address.fromScVal(t[e]).toString(),function(e){let t=new Map;for(let r of e.map()??[])t.set(r.key().sym().toString(),r.val());let r=e=>{let r=t.get(e);if(!r)throw Error(`event data missing field "${e}"`);return r};return{field:e=>c(new Uint8Array(r(e).bytes())),point:e=>A(new Uint8Array(r(e).bytes())),i128:e=>(0,Y.scValToNative)(r(e)),u32:e=>r(e).u32()}}(e.value))}class eh{constructor(e){this.cfg=e}url(e,t){let r=new URL(e.replace(/^\//,""),this.cfg.baseUrl.replace(/\/?$/,"/"));if(t)for(let[e,n]of Object.entries(t))void 0!==n&&r.searchParams.set(e,String(n));return r.toString()}async health(){let e=await fetch(this.url("health"));return{latestSyncedLedger:Number((await e.json()).latest_synced_ledger??0)}}async fetchEvents(e){let t,r=e.pageLimit??200,n=[],a=0;for(;;){let i=await fetch(this.url(`contracts/${e.contractId}/events`,{startLedger:t?void 0:e.startLedger,endLedger:e.endLedger,cursor:t,limit:r}));if(!i.ok)throw Error(`indexer events ${i.status}: ${await ev(i)}`);let s=await i.json();for(let e of(a=s.latestLedger??a,s.events??[])){let t=ey(e);t&&n.push(t)}if(!s.cursor||0===(s.events??[]).length||s.cursor===t)break;t=s.cursor}return{events:n,cursor:void 0,latestLedger:a}}async resolveEventRef(e,t){let r=await fetch(this.url(`contracts/${e}/events`,{startLedger:t.ledger,endLedger:t.ledger,limit:200}));if(!r.ok)return null;let n=((await r.json()).events??[]).map(ey).find(e=>null!==e&&e.cursor===t.id);return n&&n.txHash===t.txHash?n:null}}async function ev(e){try{return(await e.text()).slice(0,200)}catch{return""}}function ey(e){var t;let r,n,a,i=eb(ew(e.topic));if(0===i.length)return null;let s=e_(i[0]);if(!s||!ec.has(s))return null;let o=Number(e.ledger),l=e.txHash??"";return el(s,{ledger:o,txHash:l,cursor:(t=e.id,(a=/op-(\d+)-event-(\d+)\s*$/i.exec(t))?eu({ledger:o,txHash:l,opIndex:Number(a[1]),eventIndex:Number(a[2])}):(console.warn(`[ctd] indexer row id "${t}" lacks op-N-event-M; cross-source matching disabled for it`),t))},e=>{let t=e_(i[e]);if(!t)throw Error(`indexer event "${s}" missing address topic ${e}`);return t},(r=function(e){let t=em(e);if(!t)return{};let r=eb(t.map);if(0===r.length)return t;let n={};for(let e of r){let t=em(e);if(!t)continue;let r=e_(t.key);r&&(n[r]=t.val)}return n}(ew(e.value)),n=e=>{if(!(e in r))throw Error(`indexer event data missing field "${e}"`);return r[e]},{field:e=>c(ek(n(e))),point:e=>A(function(e){if(64===e.length)return e;if(e.length>64)throw Error(`expected <= ${64} bytes, got ${e.length}`);let t=new Uint8Array(64);return t.set(e,64-e.length),t}(ek(n(e)))),i128:e=>(function(e){if("bigint"==typeof e)return e;if("number"==typeof e||"string"==typeof e)return BigInt(e);let t=em(e);if(t){for(let e of["i128","i64","u64","value"]){let r=t[e];if("string"==typeof r||"number"==typeof r)return BigInt(r)}if("hi"in t&&"lo"in t)return BigInt(t.hi)<<64n|BigInt(t.lo)&(1n<<64n)-1n}throw Error("expected an i128 ScVal")})(n(e)),u32:e=>(function(e){if("number"==typeof e)return e;if("string"==typeof e)return Number(e);let t=em(e);if(t)for(let e of["u32","u64","value"]){let r=t[e];if("number"==typeof r)return r;if("string"==typeof r)return Number(r)}throw Error("expected a u32 ScVal")})(n(e))}))}function ew(e){if("string"==typeof e)try{return JSON.parse(e)}catch{}return e}function em(e){return!e||"object"!=typeof e||Array.isArray(e)?null:e}function eb(e){if(Array.isArray(e))return e;let t=em(e);return t&&Array.isArray(t.items)?t.items:[]}function e_(e){if(null==e)return null;if("string"==typeof e)return e;if("number"==typeof e||"bigint"==typeof e)return String(e);let t=em(e);if(!t)return null;for(let e of["symbol","address","string","sym","str","value"]){let r=t[e];if("string"==typeof r)return r}return null}function ek(e){let t=null;if("string"==typeof e)t=e;else{let r=em(e);if(r)for(let e of["bytes","hex","b64","bytesN","value"]){let n=r[e];if("string"==typeof n){t=n;break}}}if(null===t)throw Error("expected a bytes ScVal");var r=t;let n=r.startsWith("0x")||r.startsWith("0X")?r.slice(2):r;if(n.length%2==0&&/^[0-9a-fA-F]*$/.test(n))return f(n);let a=atob(r),i=new Uint8Array(a.length);for(let e=0;e<a.length;
1e++)i[e]=a.charCodeAt(e);return i}async function ex(e){try{return(await e.server.getHealth()).oldestLedger??0}catch{return 0}}async function eE(e,t,r){let n,a=r.contractId??e.cfg.contracts.token,i=r.startCursor?ed(r.startCursor)+1:r.fromLedger,s=t||!r.startCursor?await ex(e):0,o=[];if(t&&s>0&&i<s){let r=s+60;o=(await t.fetchEvents({contractId:a,startLedger:i,endLedger:r-1})).events,n=await ef(e,{startLedger:r,contractId:a})}else if(r.startCursor)n=await ef(e,{startCursor:r.startCursor,contractId:a});else{let t=s>0?s+1:r.fromLedger;n=await ef(e,{startLedger:Math.max(r.fromLedger,t),contractId:a})}return{events:function(e){let t=new Map;for(let r of e)t.has(r.cursor)||t.set(r.cursor,r);return[...t.values()].sort((e,t)=>e.ledger-t.ledger)}([...o,...n.events]),cursor:n.cursor,latestLedger:n.latestLedger}}async function eA(e,t,r){let n=await eg(e,r).catch(()=>null);return n||!t?n:t.resolveEventRef(e.cfg.contracts.token,r).catch(()=>null)}var eS=r(3290).hp;let eT=e=>new Y.Address(e).toScVal(),eI=e=>Y.xdr.ScVal.scvBytes(eS.from(e));function eN(){let e=new Uint8Array(32);return crypto.getRandomValues(e),e}function eR(e,t){if(!e)throw Error(`${t} returned no value`);return Y.Address.fromScVal(e).toString()}async function e$(e,t,r,n=eN()){return eR((await e.invoke(r.factory,"deploy_token",[eI(n),eT(r.underlying),eT(r.verifier),eT(r.auditor)],t)).returnValue,"deploy_token")}async function eD(e,t,r,n,a,i=eN()){return eR((await e.invoke(r.factory,"deploy_compliant_token",[eI(i),eT(n),eT(r.underlying),eT(r.verifier),eT(r.auditor),a?eT(a):Y.xdr.ScVal.scvVoid()],t)).returnValue,"deploy_compliant_token")}async function eL(e,t,r,n,a,i=eN(),s=eN()){let o=Y.xdr.ScVal.scvVec([Y.xdr.ScVal.scvSymbol(n)]),c=(await e.invoke(r.factory,"deploy_policy_and_token",[o,eI(i),eT(a),eI(s),eT(a),eT(r.underlying),eT(r.verifier),eT(r.auditor)],t)).returnValue,l=c?.vec();if(!l||2!==l.length)throw Error("deploy_policy_and_token: expected a (policy, token) tuple");return{policy:Y.Address.fromScVal(l[0]).toString(),token:Y.Address.fromScVal(l[1]).toString()}}let eC=e=>new Y.Address(e).toScVal();async function eV(e,t){try{let r=await e.simulate(t,"get_owner",[]);if("scvVoid"===r.switch().name)return null;return Y.Address.fromScVal(r).toString()}catch{return null}}function eU(e,t,r,n,a){return e.invoke(r,"freeze",[eC(n),eC(a)],t)}function eB(e,t,r,n,a){return e.invoke(r,"unfreeze",[eC(n),eC(a)],t)}function eP(e,t,r,n){return e.invoke(r,"allow",[eC(n)],t)}function eO(e,t,r,n){return e.invoke(r,"disallow",[eC(n)],t)}function eH(e,t,r,n){return e.invoke(r,"block",[eC(n)],t)}function eK(e,t,r,n){return e.invoke(r,"unblock",[eC(n)],t)}let eG={2e3:"Not authorized: this account lacks the required role.",2001:"The contract admin is not set.",2100:"This contract has no owner set.",2101:"An ownership transfer is already in progress.",2102:"The owner is already set.",3500:"This account is already registered.",3501:"Account is not registered — register a confidential balance before transacting.",3502:"Amount must be non-negative.",3503:"A spender delegation already exists.",3504:"Spender delegation not found.",3505:"Spender delegation has expired.",3506:"Zero-knowledge proof verification failed.",3507:"Invalid operation data.",3508:"The token's underlying asset is not configured.",3509:"The token's verifier is not configured.",3510:"The token's auditor is not configured.",3511:"The token's address-as-field is not set.",3512:"The token's address-as-field is already set.",3513:"The token's underlying asset is already set.",3514:"Non-canonical point encoding.",3600:"Compliance is not configured for this token.",3601:"This account is frozen and cannot transact. Ask the token admin to unfreeze it.",3602:"This account is not permitted by the token's compliance policy (allowlist/blocklist). Ask the admin to allow it.",3603:"This account is not authorized by the underlying asset."},eW=/Error\(Contract,\s*#(\d+)\)/;function eM(e){let t,r=(t=eW.exec(e))?Number(t[1]):null;return null===r?null:eG[r]??`The contract rejected the operation (error #${r}).`}function ej(e,t){return"bigint"==typeof t?`0x${t.toString(16)}`:t}class eX{constructor(e="ctd:state:"){this.prefix=e}#a(e){return this.prefix+e}async load(e){var t;let r;if("u"<typeof localStorage)return null;let n=localStorage.getItem(this.#a(e));return n?(t=JSON.parse(n),r=e=>({v:BigInt(e.v),r:BigInt(e.r)}),{address:t.address,spendable:r(t.spendable),receiving:r(t.receiving),registered:t.registered,cursor:t.cursor,syncedLedger:t.syncedLedger}):null}async save(e){"u">typeof localStorage&&localStorage.setItem(this.#a(e.address),JSON.stringify(e,ej))}}function eY(e){return{address:e,spendable:{v:0n,r:0n},receiving:{v:0n,r:0n},registered:!1,syncedLedger:0}}class eF{constructor(e){this.cfg=e}decryptIncoming(e,t,r){let n=x(this.cfg.keys.vk,e);
1return{vTx:i(t-T(a.TX_AMOUNT,[n,r])),rTx:R(n,r)}}openSpendable(e,t){return{v:i(e-T(a.ENCRYPTED_BALANCE,[this.cfg.keys.vk,t])),r:N(this.cfg.keys.vk,t)}}apply(e,t){let r=e.address;switch(t.type){case"register":t.account===r&&(e.registered=!0);break;case"deposit":t.to===r&&(e.receiving.v+=t.amount);break;case"merge":t.account===r&&(e.spendable={v:e.spendable.v+e.receiving.v,r:s(e.spendable.r,e.receiving.r)},e.receiving={v:0n,r:0n});break;case"withdraw":t.from===r&&(e.spendable=this.openSpendable(t.bTilde,t.sigma));break;case"transfer":if(t.from===r&&(e.spendable=this.openSpendable(t.bTilde,t.sigma)),t.to===r){let{vTx:r,rTx:n}=this.decryptIncoming(t.rE,t.vTilde,t.sigma);e.receiving={v:e.receiving.v+r,r:s(e.receiving.r,n)}}}e.syncedLedger=Math.max(e.syncedLedger,t.ledger)}async sync(){let e=await this.cfg.store.load(this.cfg.address)??eY(this.cfg.address),{events:t,cursor:r,latestLedger:n}=await eE(this.cfg.client,this.cfg.indexer,{fromLedger:this.cfg.fromLedger,startCursor:e.cursor});for(let r of t)this.apply(e,r);return r&&(e.cursor=r),e.syncedLedger=Math.max(e.syncedLedger,n),await this.cfg.store.save(e),e}async current(){return await this.cfg.store.load(this.cfg.address)??eY(this.cfg.address)}async setSpendable(e){let t=await this.current();return t.spendable={...e},await this.cfg.store.save(t),t}async verifyAgainstChain(){let e=await this.current(),t=await this.cfg.client.confidentialBalance(this.cfg.address);if(!t)return{ok:!1,spendableOk:!1,receivingOk:!1};let r=k(e.spendable.v,e.spendable.r).equals(t.spendableBalance),n=k(e.receiving.v,e.receiving.r).equals(t.receivingBalance);return{ok:r&&n,spendableOk:r,receivingOk:n}}}let eJ="disclose_recipient",eZ="disclose_sender",ez=[eJ,eZ];function eQ(e){let{x:t,y:r}=E(e);return{x:d(t),y:d(r)}}function eq(e){return w.fromAffine({x:u(e.x),y:u(e.y)})}function e0(){let e=g();return{rR:e,pR:eQ(_(e,b))}}function e1(e){return{rR:e,pR:eQ(_(e,b))}}function e2(e){return{pR:e.pR,nu:d(g())}}async function e8(e){let{keys:t,event:r,request:n,prover:i}=e,s=function(e){let{keys:t,event:r,pR:n,nu:i}=e,s=x(t.vk,r.rE),o=C(r.vTilde,a.TX_AMOUNT,s,r.sigma);if(o>=1n<<127n)throw Error("event does not decrypt to a valid amount under these keys — is this transfer addressed to this account?");let c=e.rDisc??g(),l=_(c,b),u=L(o,x(c,n),i);return{inputs:{sk:d(t.sk),v_tx:d(o),r_disc:d(c),addr_f:d(t.addrF),...B("pvk_a",t.PVK),...B("r_e",r.rE),sigma:d(r.sigma),v_tilde:d(r.vTilde),...B("p_r",n),nu:d(i),...B("r_disc",l),v_tilde_disc:d(u)},vTx:o,rDisc:l,vTildeDisc:u}}({keys:t,event:{rE:r.rE,sigma:r.sigma,vTilde:r.vTilde},pR:eq(n.pR),nu:u(n.nu)}),{proof:o}=await i.prove(s.inputs);return e6(eJ,r,o,s)}async function e3(e){let{keys:t,rEScalar:r,event:n,pvkB:i,request:s,prover:o}=e,c=function(e){let{keys:t,rEScalar:r,event:n,pvkB:i,pR:s,nu:o}=e,c=E(_(r,b)),l=E(n.rE);if(c.x!==l.x||c.y!==l.y)throw Error("supplied r_e does not match the event's R_e — wrong event, or this transfer was sent with different keys");let u=x(r,i),f=C(n.vTilde,a.TX_AMOUNT,u,n.sigma);if(f>=1n<<127n)throw Error("event does not decrypt to a valid amount — does PVK_B belong to the event's recipient?");let p=e.rDisc??g(),h=_(p,b),v=L(f,x(p,s),o);return{inputs:{sk:d(t.sk),r_e:d(r),v_tx:d(f),r_disc:d(p),addr_f:d(t.addrF),...B("pvk_a",t.PVK),...B("r_e",n.rE),sigma:d(n.sigma),v_tilde:d(n.vTilde),...B("pvk_b",i),...B("p_r",s),nu:d(o),...B("r_disc",h),v_tilde_disc:d(v)},vTx:f,rDisc:h,vTildeDisc:v}}({keys:t,rEScalar:r,event:{rE:n.rE,sigma:n.sigma,vTilde:n.vTilde},pvkB:i,pR:eq(s.pR),nu:u(s.nu)}),{proof:l}=await o.prove(c.inputs);return e6(eZ,n,l,c)}function e6(e,t,r,n){return{circuitId:e,refE:{ledger:t.ledger,id:t.cursor,txHash:t.txHash},proof:"0x"+function(e){let t="";for(let r of e)t+=r.toString(16).padStart(2,"0");return t}(r),rDisc:eQ(n.rDisc),vTildeDisc:d(n.vTildeDisc)}}class e4 extends Error{constructor(e,t){super(`[${e}] ${t}`),this.stage=e,this.name="DisclosureVerifyError"}}async function e5(e){var t,r,n,i;let s,{client:o,bundle:c,request:l,keys:g,prover:p,pinnedVk:h,indexer:v}=e,y=[];if(!ez.includes(c.circuitId))throw new e4("vk-pinning",`unknown circuit_id "${c.circuitId}"`);let w=c.circuitId===eZ;if(l.pR.x!==g.pR.x||l.pR.y!==g.pR.y)throw new e4("decrypt","request was not issued under this recipient key");if(h){let e=await p.verificationKey();if(e.length!==h.length||!e.every((e,t)=>e===h[t]))throw new e4("vk-pinning",`circuit artifact does not match the pinned "${c.circuitId}" verification key`);y.push(`VK pinned: ${c.circuitId} artifact matches the shared ${e.length}B verification key`)}let m=await eA(o,v,c.refE);if(!m)throw new e4("resolve-event",`ref_E does not resolve to a token-contract event (ledger ${c.refE.ledger}, id ${c.refE.id}) — wrong reference${v?"":", or outside the RPC's ~7-day retention window"}`);if("transfer"!==m.type)throw new e4("resolve-event",`disclosures cover Transfer events; ref_E resolved to "${m.type}"`);y.push(`Resolved ref_E on-chain: transfer ${m.from.slice(0,6)}… → ${m.to.slice(0,6)}… in tx ${m.txHash.slice(0,10)}… (ledger ${m.ledger})`);let b=w?m.from:m.to,_=await o.confidentialBalance(b);if(!_)throw new e4("resolve-account",`event ${w?"sender":"recipient"} ${b} has no confidential account record`);y.push(`Read PVK_A from the on-chain account at the event's "${w?"from":"to"}" address (${b.slice(0,6)}…)`);let k=null;if(w){let e=await o.confidentialBalance(m.to);if(!e)throw new e4("resolve-account",`event recipient ${m.to} has no confidential account record`);k=E(e.viewingPublicKey),y.push(`Read PVK_B from the on-chain account at the event's "to" address (${m.to.slice(0,6)}…)`)}let A=V(o.cfg.contracts.token),S=E(_.viewingPublicKey),T=E(m.rE),I=[d(A),d(S.x),d(S.y),d(T.x),d(T.y),d(m.sigma),d(m.vTilde),...k?[d(k.x),d(k.y)]:[],l.pR.x,l.pR.y,l.nu,c.rDisc.x,c.rDisc.y,c.vTildeDisc].map(e=>d(u(e)));if(y.push("Constructed the public-input vector from chain state + own (P_R, ν)"),!await p.verify({proof:f(c.proof),publicInputs:I}))throw new e4("verify-proof","UltraHonk proof verification failed");y.push("UltraHonk proof verified against the reconstructed public inputs");let N=(t=g.rR,r=eq(c.rDisc),n=u(c.vTildeDisc),i=u(l.nu),s=x(t,r),C(n,a.DISCLOSURE,s,i));if(N>=1n<<127n)throw new e4("decrypt","decrypted value out of range — wrong recipient key?");return y.push(`Decrypted ṽ_disc with r_R and ν → amount ${N}`),{amount:N,event:m,role:w?"sender":"recipient",disclosingAccount:b,steps:y}}function e7(e,t){let r=function(e,t){let r=x(e,t.rE),[n,s]=I(a.AUDITOR_SENDER,r,t.sigma);return{amount:i(t.vAudS-n),senderBalance:i(t.bAudS-s)}}(e,t),n=function(e,t){let r=x(e,t.rE),[n,s]=I(a.AUDITOR_RECIPIENT,r,t.sigma);return{amount:i(t.vAudR-n),rTx:i(t.rAudR-s)}}(e,t);return{amount:r.amount,senderBalance:r.senderBalance,rTx:n.rTx,channelsAgree:r.amount===n.amount}}function e9(e,t){let r=x(e,t.rE);return{senderBalance:C(t.bAudS,a.AUDITOR_SENDER,r,t.sigma)}}function te(e){return _(e,b)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.