lnlink-server 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/app.js CHANGED
@@ -2151,7 +2151,7 @@ ${e}`;return Object.assign(new Error(r),t,{stack:i})}a(FTt,"callErrorFromStatus"
2151
2151
  `)),l=hc.default.stripLine(c,1),d=u.indexOf("rxbytes")>=0?10:8,f=hc.default.extractColumns(l,[0,3,d],10).filter(p=>!!String(p[0]).match(/^(udp|tcp)/)).find(p=>{let _=String(p[1]).match(/\.(\d+)$/);return!!(_&&_[1]===String(t))});f&&f[2].length?e(parseInt(f[2],10)):r(new Error(`pid of port (${t}) not found`))}})})},linux(t){return new Promise((e,r)=>{hc.default.exec("netstat -tunlp",function(i,s,o){if(i)r(i);else{let c=o.toString().trim();c&&J6t.default.warn(c);let u=hc.default.stripLine(s.toString(),2),l=hc.default.extractColumns(u,[3,6],7).find(d=>{let f=String(d[0]).match(/:(\d+)$/);return!!(f&&f[1]===String(t))});if(l&&l[1]){let d=l[1].split("/",1)[0];d.length?e(parseInt(d,10)):r(new Error(`pid of port (${t}) not found`))}else r(new Error(`pid of port (${t}) not found`))}})})},win32(t){return new Promise((e,r)=>{hc.default.exec("netstat -ano",function(n,i,s){if(n)r(n);else{let o=s.toString().trim();if(o){r(new Error(o));return}let c=hc.default.stripLine(i.toString(),4),u=hc.default.extractColumns(c,[1,4],5).find(l=>{let d=String(l[0]).match(/:(\d+)$/);return!!(d&&d[1]===String(t))});u&&u[1].length&&parseInt(u[1],10)>0?e(parseInt(u[1],10)):r(new Error(`pid of port (${t}) not found`))}})})},android(t){return new Promise((e,r)=>{let n=z6t.tmpdir()+"/.find-process",i=n+"/"+process.pid,s='netstat -tunp >> "'+i+'"';W6t(n).then(()=>{hc.default.exec(s,()=>{bP.readFile(i,"utf8",(o,c)=>{if(bP.unlink(i,()=>{}),o)r(o);else{c=hc.default.stripLine(c,2);let u=hc.default.extractColumns(c,[3,6],7).find(l=>{let d=String(l[0]).match(/:(\d+)$/);return!!(d&&d[1]===String(t))});if(u&&u[1]){let l=u[1].split("/",1)[0];l.length?e(parseInt(l,10)):r(new Error(`pid of port (${t}) not found`))}else r(new Error(`pid of port (${t}) not found`))}})})})})}};l1.freebsd=l1.darwin;l1.sunos=l1.darwin;function X6t(t){let e=process.platform;return new Promise((r,n)=>{if(!(e in l1))return n(new Error(`platform ${e} is unsupported`));let i=l1[e];i(t).then(r,n)})}a(X6t,"findPidByPort");Rl.default=X6t});var I3e=v(Pl=>{"use strict";var Q6t=Pl&&Pl.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:a(function(){return e[r]},"get")}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Y6t=Pl&&Pl.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Z6t=Pl&&Pl.__importStar||(function(){var t=a(function(e){return t=Object.getOwnPropertyNames||function(r){var n=[];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[n.length]=i);return n},t(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=t(e),i=0;i<n.length;i++)n[i]!=="default"&&Q6t(r,e,n[i]);return Y6t(r,e),r}})(),ePt=Pl&&Pl.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pl,"__esModule",{value:!0});var xP=Z6t(require("path")),u0=ePt(dX());function pX(t,e){return e?t&&t.match?t.match(e)!==null:!1:!0}a(pX,"matchName");function N3e(t){let e=t.split(xP.sep),r=e[e.length-1];r&&(e[e.length-1]=r.split(" ")[0]);let n=[];for(let i of e){let s=i.indexOf(" -");if(s>=0){n.push(i.substring(0,s).trim());break}else if(i.endsWith(" ")){n.push(i.trim());break}n.push(i)}return n.join(xP.sep)}a(N3e,"fetchBin");function O3e(t){if(process.platform==="darwin"){let e=t.indexOf(".app/");if(e>=0)return xP.basename(t.substring(0,e))}return xP.basename(t)}a(O3e,"fetchName");var hy={darwin(t){return new Promise((e,r)=>{let n;"pid"in t&&t.pid!==void 0?n=`ps -p ${t.pid} -ww -o pid,ppid,uid,gid,args`:n="ps ax -ww -o pid,ppid,uid,gid,args",u0.default.exec(n,function(i,s,o){if(i)"pid"in t&&t.pid!==void 0?e([]):r(i);else{let c=o.toString().trim();if(c){r(new Error(c));return}let u=u0.default.stripLine(s.toString(),1),d=u0.default.extractColumns(u,[0,1,2,3,4],5).filter(f=>f[0]&&t.pid!==void 0?f[0]===String(t.pid):f[4]&&t.name?pX(f[4],t.name):!!f[0]).map(f=>{let p=String(f[4]),_=N3e(p);return{pid:parseInt(f[0],10),ppid:parseInt(f[1],10),uid:parseInt(f[2],10),gid:parseInt(f[3],10),name:O3e(_),bin:_,cmd:f[4]}});t.config.strict&&t.name&&(d=d.filter(f=>f.name===t.name)),e(d)}})})},win32(t){return new Promise((e,r)=>{let n="[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-CimInstance -className win32_process | select Name,ProcessId,ParentProcessId,CommandLine,ExecutablePath",i=[],s=u0.default.spawn("powershell.exe",["/c",n],{detached:!1,windowsHide:!0});s.stdout.on("data",o=>{i.push(o.toString())}),s.on("error",o=>{r(new Error("Command '"+n+"' failed with reason: "+o.toString()))}),s.on("close",o=>{if(o!==0)return r(new Error("Command '"+n+"' terminated with code: "+o));let c=u0.default.parseTable(i.join("")).filter(u=>{if(t.pid!==void 0)return u.ProcessId===String(t.pid);if(t.name){let l=u.Name||"";return t.config.strict?l===t.name||l.endsWith(".exe")&&l.slice(0,-4)===t.name:pX(u.CommandLine||l,t.name)}else return!0}).map(u=>({pid:parseInt(u.ProcessId,10),ppid:parseInt(u.ParentProcessId,10),bin:u.ExecutablePath,name:u.Name||"",cmd:u.CommandLine}));e(c)})})},android(t){return new Promise((e,r)=>{u0.default.exec("ps",function(i,s,o){if(i)t.pid!==void 0?e([]):r(i);else{let c=o.toString().trim();if(c){r(new Error(c));return}let u=u0.default.stripLine(s.toString(),1),d=u0.default.extractColumns(u,[0,3],4).filter(f=>f[0]&&t.pid!==void 0?f[0]===String(t.pid):f[1]&&t.name?pX(f[1],t.name):!!f[0]).map(f=>{let p=String(f[1]),_=N3e(p);return{pid:parseInt(f[0],10),ppid:0,name:O3e(_),bin:_,cmd:f[1]}});t.config.strict&&t.name&&(d=d.filter(f=>f.name===t.name)),e(d)}})})}};hy.linux=hy.darwin;hy.sunos=hy.darwin;hy.freebsd=hy.darwin;function tPt(t){let e=process.platform,r=hy[e];return r?r(t):Promise.reject(new Error(`Platform "${e}" is not supported`))}a(tPt,"findProcess");Pl.default=tPt});var R3e=v(NA=>{"use strict";var hX=NA&&NA.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(NA,"__esModule",{value:!0});var rPt=hX(k3e()),C3e=hX(I3e()),nPt=hX(fX()),_X={port(t,e){return(0,rPt.default)(t).then(r=>_X.pid(r,e),()=>[])},pid(t,e){return(0,C3e.default)({pid:t,config:e})},name(t,e){return(0,C3e.default)({name:t,config:e,skipSelf:!0})}};function iPt(t,e,r){let n=Object.assign({logLevel:"warn",strict:typeof r=="boolean"?r:!1},typeof r=="object"?r:{});return n.logLevel&&nPt.default.setLevel(n.logLevel),new Promise((i,s)=>{if(!(t in _X))s(new Error(`do not support find by "${t}"`));else{let o=/^\d+$/.test(String(e));t==="pid"&&!o?s(new Error("pid must be a number")):t==="port"&&!o?s(new Error("port must be a number")):_X[t](e,n).then(i,s)}})}a(iPt,"find");NA.default=iPt});var L3e=v(P3e=>{"use strict";Object.defineProperty(P3e,"__esModule",{value:!0})});var mX=v(Ll=>{"use strict";var aPt=Ll&&Ll.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:a(function(){return e[r]},"get")}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),sPt=Ll&&Ll.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&aPt(e,t,r)},oPt=Ll&&Ll.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ll,"__esModule",{value:!0});Ll.default=void 0;var cPt=R3e();Object.defineProperty(Ll,"default",{enumerable:!0,get:a(function(){return oPt(cPt).default},"get")});sPt(L3e(),Ll)});var IA=v((nHr,H3e)=>{var{spawn:gX}=require("node:child_process"),wP=mX().default,{getConfig:B3e}=Ht(),Gp=Ke(),{sleep:D3e}=l2(),{getServiceConfig:uPt}=AA();function d1(){let t=B3e();return t.LINK_EXTERNAL_NODES==="true"||t.LINK_EXTERNAL_NODES===!0}a(d1,"isExternalNodesMode");function yX(){return B3e().LINK_NODE_ENV!=="app"}a(yX,"shouldDetach");function EP(t,e=!1){let r=new Gp("processManager");try{let n=e?"SIGKILL":"SIGTERM";return process.kill(t,n),r.info(`Process ${t} terminated with ${n}`),!0}catch(n){return r.error(`Failed to terminate process ${t}: ${n.message}`),!1}}a(EP,"terminateProcess");var OA={services:null,isShuttingDown:!1};function lPt(t){OA.isShuttingDown=t}a(lPt,"setShuttingDown");function vX(){return OA.isShuttingDown}a(vX,"isShuttingDown");function TP(){return OA.services||(OA.services=uPt()),OA.services}a(TP,"initializeServices");function Bl(t){return TP()[t]||null}a(Bl,"getService");function hf(t,e){let r=TP();r[t]&&(r[t].process=e)}a(hf,"setServiceProcess");function dPt(t){let e=new Gp("processManager");if(d1())return e.info("External nodes mode: skipping litd local spawn (managed externally)"),Promise.resolve(!0);let r=6e4;return new Promise((n,i)=>{let s=Bl("litd");if(!s)return i(new Error("litd service not found"));let o=!1,c=null,u=a(f=>{o||(o=!0,c&&clearTimeout(c),n(f))},"settleResolve"),l=a(f=>{o||(o=!0,c&&clearTimeout(c),i(f))},"settleReject"),d=gX(s.command,t,{stdio:"pipe",detached:yX()});hf("litd",d),c=setTimeout(()=>{o||(e.error(`litd startup timeout after ${r}ms`),l(new Error(`litd startup timeout after ${r}ms`)))},r),d.once("exit",(f,p)=>{vX()||e.info(`litd process exited with code ${f??"null"}, signal ${p??"null"}`),Bl("litd")?.process===d&&hf("litd",null),o||l(new Error(`litd exited before startup completed (code: ${f??"null"}, signal: ${p??"null"})`))}),d.stdout.on("data",f=>{f.toString().replace(/\n+/g,`
2152
2152
  `).trim().includes("Lightning Terminal (LiT) by Lightning Labs")&&(e.info("litd is ready"),u(!0))}),d.on("error",f=>{e.error(`Start litd failed: ${f?.message}`),l(f)}),d.stderr.on("data",f=>{let p=f.toString();e.error(`[litd] ${p}`);let _=p.toLowerCase();(_.includes("address already in use")||_.includes("address in use"))&&l(new Error(`Start litd failed (port conflict): ${p}`))})})}a(dPt,"startLitdService");function fPt(t){let e=new Gp("processManager");if(d1())return e.info("External nodes mode: skipping Tor local spawn (managed externally)"),Promise.resolve(!0);let r=3e4;return new Promise((n,i)=>{let s=Bl("tor");if(!s)return i(new Error("tor service not found"));let o=!1,c=null,u=a(f=>{o||(o=!0,c&&clearTimeout(c),n(f))},"settleResolve"),l=a(f=>{o||(o=!0,c&&clearTimeout(c),i(f))},"settleReject");e.info(`Tor config: ${JSON.stringify(t,null,2)}`);let d=gX(s.command,t,{stdio:"pipe",detached:yX()});hf("tor",d),c=setTimeout(()=>{o||(e.error(`Tor startup timeout after ${r}ms`),l(new Error(`Tor startup timeout after ${r}ms`)))},r),d.once("exit",(f,p)=>{vX()||e.info(`tor process exited with code ${f??"null"}, signal ${p??"null"}`),Bl("tor")?.process===d&&hf("tor",null),o||l(new Error(`tor exited before startup completed (code: ${f??"null"}, signal: ${p??"null"})`))}),d.stdout.on("data",f=>{let p=f.toString().replace(/\n+/g,`
2153
2153
  `).trim();p&&e.info(`[tor] ${p}`),(p.includes("Opening Socks listener")||p.includes("Opening Control listener")||p.includes("Bootstrapped 25%")||p.includes("100%"))&&(e.info("[tor] SOCKS/Control ports ready, Tor is usable"),u(!0))}),d.stderr.on("data",f=>{let p=f.toString();e.error(`[tor] ${p}`),(p.includes("User option")||p.includes("setuid"))&&e.info("[tor] Detected User permission issue, this is normal in Docker");let _=p.toLowerCase();(_.includes("address already in use")||_.includes("address in use")||_.includes("could not bind"))&&l(new Error(`Start tor failed (port conflict): ${p}`))}),d.on("error",f=>{e.error(`Start tor failed: ${f?.message}`),l(f)})})}a(fPt,"startTorService");function pPt(t){let e=new Gp("processManager");if(d1())return e.info("External nodes mode: skipping RGB local spawn (managed externally)"),Promise.resolve(!0);let r=3e4;return new Promise((n,i)=>{let s=Bl("rgb");if(!s)return i(new Error("rgb service not found"));let o=!1,c=null,u=a(f=>{o||(o=!0,c&&clearTimeout(c),n(f))},"settleResolve"),l=a(f=>{o||(o=!0,c&&clearTimeout(c),i(f))},"settleReject"),d=gX(s.command,t,{stdio:"pipe",detached:yX()});hf("rgb",d),c=setTimeout(()=>{o||(e.error(`rgb startup timeout after ${r}ms`),l(new Error(`rgb startup timeout after ${r}ms`)))},r),d.once("exit",(f,p)=>{vX()||e.info(`rgb process exited with code ${f??"null"}, signal ${p??"null"}`),Bl("rgb")?.process===d&&hf("rgb",null),o||l(new Error(`rgb exited before startup completed (code: ${f??"null"}, signal: ${p??"null"})`))}),d.stdout.on("data",f=>{f.toString().replace(/\n+/g,`
2154
- `).trim().includes("Listening on")&&(e.info("rgb is ready"),u(!0))}),d.on("error",f=>{e.error(`Start rgb failed: ${f?.message}`),l(f)}),d.stderr.on("data",f=>{let p=f.toString();e.error(`[rgb] ${p}`);let _=p.toLowerCase();(_.includes("fatal")||_.includes("cannot")||_.includes("failed to start")||_.includes("address already in use")||_.includes("address in use"))&&l(new Error(`Start rgb failed: ${p}`))})})}a(pPt,"startRgbService");function bX(t,e,r=1e4){let n=new Gp("processManager"),i=!1,s=null,o=t;return new Promise(c=>{let u=a(l=>{i||(i=!0,s&&clearTimeout(s),c(l))},"safeResolve");t.kill("SIGTERM"),t.on("exit",l=>{n.info(`${e} exited with code ${l}`),Bl(e)?.process===o&&hf(e,null),u(!0)}),s=setTimeout(()=>{let d=Bl(e)?.process;d&&d===o&&(n.info(`${e} did not exit in time, forcing shutdown...`),d.kill("SIGKILL"),hf(e,null)),u(!0)},r)})}a(bX,"killProcess");async function M3e(t,e){let r=new Gp("processManager");try{let n=t.split(/[/\\]/).pop().replace(".exe","");r.info(`Looking for ${e} processes matching: ${n}`);let i=await wP("name",n);if(i.length===0)return r.info(`No ${e} processes found`),!1;let s=i.map(c=>c.pid);r.info(`Found ${s.length} ${e} process(es): ${s.join(", ")}`),s.forEach(c=>EP(c,!1)),await D3e(500);let o=await wP("name",n);return o.length>0&&(r.warn(`${o.length} ${e} process(es) still running, force killing...`),o.forEach(c=>EP(c.pid,!0))),r.info(`${e} processes terminated successfully`),!0}catch(n){return r.error(`Failed to find and kill ${e} processes: ${n.message}`),!1}}a(M3e,"findAndKillProcess");async function F3e(){let t=new Gp("processManager");if(d1())return t.info("External nodes mode: skipping litd stop (managed externally)"),!0;let e=Bl("litd");if(!e)throw new Error("litd service not found");let r=e.process;return r&&!r.killed&&r.exitCode===null?(t.info("Stopping litd via SIGTERM..."),await bX(r,"litd",5e3)):(t.info("litd process already exited, cleaning up..."),hf("litd",null),await M3e(e.command,"litd"))}a(F3e,"stopLitdService");async function U3e(){let t=new Gp("processManager");if(d1())return t.info("External nodes mode: skipping Tor stop (managed externally)"),!0;let e=Bl("tor");if(!e)throw new Error("tor service not found");if(e.process)return await bX(e.process,"tor",5e3);try{let r=e.command;t.info(`Looking for tor processes matching binary: ${r}`);let n=a(d=>d.replace(/\\/g,"/").toLowerCase(),"normalizePath"),i=n(r),o=(await wP("name","tor")).filter(d=>d.cmd&&n(d.cmd).startsWith(i));if(o.length===0)return t.info("No tor processes found matching our binary path"),!1;let c=o.map(d=>d.pid);t.info(`Found ${c.length} tor process(es): ${c.join(", ")}`),c.forEach(d=>EP(d,!1)),await D3e(500);let l=(await wP("name","tor")).filter(d=>d.cmd&&n(d.cmd).startsWith(i));return l.length>0&&(t.warn(`${l.length} tor process(es) still running, force killing...`),l.forEach(d=>EP(d.pid,!0))),hf("tor",null),t.info("Tor processes terminated successfully"),!0}catch(r){return t.error(`Failed to find and kill tor processes: ${r.message}`),!1}}a(U3e,"stopTorService");async function q3e(){let t=new Gp("processManager");if(d1())return t.info("External nodes mode: skipping RGB stop (managed externally)"),!0;let e=Bl("rgb");if(!e)throw new Error("rgb service not found");return e.process?(t.info("Stopping RGB via tracked process..."),await bX(e.process,"rgb",5e3)):(t.info("No tracked RGB process, falling back to system scan..."),await M3e("rgb-lightning-node","rgb"))}a(q3e,"stopRgbService");async function _Pt(t){switch(t){case"litd":return await F3e();case"tor":return await U3e();case"rgb":return await q3e();default:throw new Error(`Unknown service: ${t}`)}}a(_Pt,"stopService");async function hPt(t,e){switch(t){case"litd":return await dPt(e);case"tor":return await fPt(e);case"rgb":return await pPt(e);default:throw new Error(`Unknown service: ${t}`)}}a(hPt,"startService");function mPt(){let t=TP();return{litd:{hasProcess:!!t.litd?.process,command:t.litd?.command},tor:{hasProcess:!!t.tor?.process,command:t.tor?.command},rgb:{hasProcess:!!t.rgb?.process,command:t.rgb?.command}}}a(mPt,"getServicesState");function gPt(){let t=TP();return{litd:t.litd?.process?.pid||null,tor:t.tor?.process?.pid||null,rgb:t.rgb?.process?.pid||null}}a(gPt,"getServicePids");H3e.exports={startService:hPt,stopService:_Pt,stopLitdService:F3e,stopTorService:U3e,stopRgbService:q3e,getServicesState:mPt,getServicePids:gPt,setShuttingDown:lPt}});var $3e=v(mf=>{"use strict";Object.defineProperties(mf,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var yPt=uX(),AP=class{static{a(this,"R")}constructor(e){this.client=e}async getAddress(){return this.client._request("post","/address")}async getBtcBalance(e={}){return this.client._request("post","/btcbalance",{skip_sync:!1,...e})}async sendBtc(e){return this.client._request("post","/sendbtc",e)}async createUtxos(e={}){return this.client._request("post","/createutxos",{fee_rate:2,skip_sync:!1,...e})}async estimateFee(e){return this.client._request("post","/estimatefee",e)}async listOnchainTransactions(e={}){return this.client._request("post","/listtransactions",{skip_sync:!1,...e})}async listUnspents(e={}){return this.client._request("post","/listunspents",{skip_sync:!1,...e})}},kP=class{static{a(this,"N")}constructor(e){this.client=e,this.rgbTransactionSubscriptions=new Map,this.rgbTransactionPollingIntervals=new Map}async getAssetBalance(e){return this.client._request("post","/assetbalance",e)}async getAssetMetadata(e){return this.client._request("post","/assetmetadata",e)}async assetIdFromHexBytes(e){return this.client._request("post","/assetidfromhexbytes",e)}async assetIdToHexBytes(e){return this.client._request("post","/assetidtohexbytes",e)}async listAssets(e={}){let r={filter_asset_schemas:e.filter_asset_schemas};return this.client._request("post","/listassets",r)}async listTransactions(e={skip_sync:!1}){return this.client._request("post","/listtransactions",e)}async listTransfers(e){return this.client._request("post","/listtransfers",{asset_id:e})}async issueAssetCfa(e){return this.client._request("post","/issueassetcfa",e)}async issueAssetNia(e){return this.client._request("post","/issueassetnia",e)}async issueAssetUda(e){return this.client._request("post","/issueassetuda",e)}async sendAsset(e){let{asset_id:r,amount:n,recipient_id:i,transport_endpoints:s,recipient_map:o,donation:c,fee_rate:u,min_confirmations:l,expiration_timestamp:d,skip_sync:f}=e,p=o||{[r]:[{recipient_id:i,assignment:{type:"Fungible",value:n},transport_endpoints:s||[]}]};return this.client._request("post","/sendrgb",{donation:c||!1,fee_rate:u,min_confirmations:l||1,skip_sync:f||!1,...d!=null?{expiration_timestamp:d}:{},recipient_map:p})}async createRgbInvoice(e){let r={asset_id:e.asset_id,expiration_timestamp:e.expiration_timestamp??null,min_confirmations:e.min_confirmations,witness:e.witness||!1,...e.assignment!=null?{assignment:e.assignment}:{}};return this.client._request("post","/rgbinvoice",r)}async payRgbInvoice(e){var r;let n=await this.decodeRgbInvoice({invoice:e.invoice}),i={recipient_id:n.recipient_id,asset_id:e.asset_id||n.asset_id,amount:e.amount||((r=n?.assignment)==null?void 0:r.value),fee_rate:e.fee_rate,skip_sync:e.skip_sync,donation:e.donation||!1,min_confirmations:e.min_confirmations||1,transport_endpoints:e.transport_endpoints||n.transport_endpoints||[]};return this.sendAsset(i)}async decodeRgbInvoice(e){return this.client._request("post","/decodergbinvoice",e)}async failTransfers(e={}){return this.client._request("post","/failtransfers",{no_asset_only:!1,skip_sync:!1,...e})}async getAssetMedia(e){return this.client._request("post","/getassetmedia",e)}async refreshTransfers(e={}){let r={skip_sync:e.skip_sync};return this.client._request("post","/refreshtransfers",r)}async syncRgbWallet(){return this.client._request("post","/sync",{})}async postAssetMedia(e){let r=new FormData;return r.append("file",e.file),this.client._request("post","/postassetmedia",r)}subscribeToRgbTransactions(e){let{onTransaction:r,onError:n,pollingInterval:i=5e3,maxStoredIds:s=1e3,skipInitialFetch:o=!1}=e;if(!r||typeof r!="function")throw new Error("onTransaction callback is required and must be a function");i<1e3&&console.warn("Warning: Polling interval less than 1000ms may cause performance issues");let c=`rgb-tx-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,u=Date.now(),l=new Set,d=new Map,f=a(g=>typeof g=="string"?new Date(g).getTime():g||0,"p"),p=a(()=>{l.size<=s||[...d.entries()].sort((g,y)=>g[1]-y[1]).map(g=>g[0]).slice(0,l.size-s).forEach(g=>{l.delete(g),d.delete(g)})},"f");o||this.listTransactions().then(g=>{g&&g.transfers&&Array.isArray(g.transfers)&&(g.transfers.forEach(y=>{l.add(y.idx),d.set(y.idx,f(y.created_at))}),p())}).catch(g=>{n&&typeof n=="function"&&n(g)});let _=i,h=0,m=setInterval(async()=>{try{let g=await this.listTransactions();if(g&&g.transfers&&Array.isArray(g.transfers)){let y=g.transfers.filter(E=>{if(!l.has(E.idx))return l.add(E.idx),d.set(E.idx,f(E.created_at)),!0;let S=f(E.created_at);return l.has(E.idx)&&S>(d.get(E.idx)||0)?(d.set(E.idx,S),!0):!1});if(g.transfers.length>0){let E=Math.max(...g.transfers.map(S=>f(S.created_at)));u=Math.max(u,E)}if(p(),y.length>0)y.forEach(E=>{r(E)}),h=0;else if(h++,h>5){let E=Math.min(i*3,i*(1+h/10));if(E!==_){_=E,clearInterval(m);let S=setInterval(m.callback,_);this.rgbTransactionPollingIntervals.set(c,S)}}}}catch(g){n&&typeof n=="function"&&n(g)}},i);return m.callback=m._onTimeout,this.rgbTransactionSubscriptions.set(c,{onTransaction:r,onError:n,pollingInterval:i,currentPollingInterval:_,maxStoredIds:s}),this.rgbTransactionPollingIntervals.set(c,m),c}unsubscribeFromRgbTransactions(e){if(!this.rgbTransactionSubscriptions.has(e))return!1;let r=this.rgbTransactionPollingIntervals.get(e);return r&&(clearInterval(r),this.rgbTransactionPollingIntervals.delete(e)),this.rgbTransactionSubscriptions.delete(e),!0}async issueAssetIfa(e){return this.client._request("post","/issueassetifa",e)}async inflate(e){return this.client._request("post","/inflate",e)}},my={},j3e;function vPt(){if(j3e)return my;j3e=1,Object.defineProperty(my,"__esModule",{value:!0}),my.bech32m=my.bech32=void 0;let t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={};for(let l=0;l<t.length;l++){let d=t.charAt(l);e[d]=l}function r(l){let d=l>>25;return(l&33554431)<<5^-(d>>0&1)&996825010^-(d>>1&1)&642813549^-(d>>2&1)&513874426^-(d>>3&1)&1027748829^-(d>>4&1)&705979059}a(r,"t");function n(l){let d=1;for(let f=0;f<l.length;++f){let p=l.charCodeAt(f);if(p<33||p>126)return"Invalid prefix ("+l+")";d=r(d)^p>>5}d=r(d);for(let f=0;f<l.length;++f){let p=l.charCodeAt(f);d=r(d)^p&31}return d}a(n,"r");function i(l,d,f,p){let _=0,h=0,m=(1<<f)-1,g=[];for(let y=0;y<l.length;++y)for(_=_<<d|l[y],h+=d;h>=f;)h-=f,g.push(_>>h&m);if(p)h>0&&g.push(_<<f-h&m);else{if(h>=d)return"Excess padding";if(_<<f-h&m)return"Non-zero padding"}return g}a(i,"c");function s(l){return i(l,8,5,!0)}a(s,"u");function o(l){let d=i(l,5,8,!1);if(Array.isArray(d))return d}a(o,"d");function c(l){let d=i(l,5,8,!1);if(Array.isArray(d))return d;throw new Error(d)}a(c,"m");function u(l){let d;l==="bech32"?d=1:d=734539939;function f(m,g,y){if(y=y||90,m.length+7+g.length>y)throw new TypeError("Exceeds length limit");m=m.toLowerCase();let E=n(m);if(typeof E=="string")throw new Error(E);let S=m+"1";for(let N=0;N<g.length;++N){let C=g[N];if(C>>5!==0)throw new Error("Non 5-bit word");E=r(E)^C,S+=t.charAt(C)}for(let N=0;N<6;++N)E=r(E);E^=d;for(let N=0;N<6;++N){let C=E>>(5-N)*5&31;S+=t.charAt(C)}return S}a(f,"p");function p(m,g){if(g=g||90,m.length<8)return m+" too short";if(m.length>g)return"Exceeds length limit";let y=m.toLowerCase(),E=m.toUpperCase();if(m!==y&&m!==E)return"Mixed-case string "+m;m=y;let S=m.lastIndexOf("1");if(S===-1)return"No separator character for "+m;if(S===0)return"Missing prefix for "+m;let N=m.slice(0,S),C=m.slice(S+1);if(C.length<6)return"Data too short";let R=n(N);if(typeof R=="string")return R;let $=[];for(let F=0;F<C.length;++F){let U=C.charAt(F),B=e[U];if(B===void 0)return"Unknown character "+U;R=r(R)^B,!(F+6>=C.length)&&$.push(B)}return R!==d?"Invalid checksum for "+m:{prefix:N,words:$}}a(p,"f");function _(m,g){let y=p(m,g);if(typeof y=="object")return y}a(_,"g");function h(m,g){let y=p(m,g);if(typeof y=="object")return y;throw new Error(y)}return a(h,"y"),{decodeUnsafe:_,decode:h,encode:f,toWords:s,fromWordsUnsafe:o,fromWords:c}}return a(u,"_"),my.bech32=u("bech32"),my.bech32m=u("bech32m"),my}a(vPt,"B");var bPt=vPt(),xPt=1,wPt=13,EPt=19,TPt=23,SPt=6,APt=24,kPt=16,NPt=27,OPt=5,IPt=30,CPt=31,RPt={bc:"Mainnet",tb:"Testnet",bcrt:"Regtest",sb:"Signet",tbs:"Signet"},PPt={m:.001,u:1e-6,n:1e-9,p:1e-12};function SP(t){let e=0;for(let r of t)e=e*32+r;return e}a(SP,"x");function l0(t){let e=[],r=0,n=0;for(let i of t)for(r=r<<5|i,n+=5;n>=8;)e.push(r>>>n-8&255),n-=8;return new Uint8Array(e)}a(l0,"k");function f1(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}a(f1,"q");function LPt(t){let e=t.match(/^ln([a-z]+)(\d*)([munp]?)$/);if(!e)throw new Error("Invalid HRP format");let[,r,n,i]=e;return{currency:r,amount:n?parseInt(n):null,siPrefix:i||null,network:RPt[r]||"Unknown"}}a(LPt,"te");function BPt(t){let e={},r=0;for(;r<t.length;){if(r+3>t.length)throw new Error("Unexpected end of tagged fields");let n=t[r],i=t[r+1]<<5|t[r+2];if(r+=3,r+i>t.length)throw new Error("Tagged field length exceeds remaining data");let s=t.slice(r,r+i);r+=i;try{switch(n){case xPt:s.length===52&&(e.paymentHash=f1(l0(s)));break;case wPt:let o=l0(s);e.description=new TextDecoder().decode(o);break;case EPt:s.length===53&&(e.payeePubkey=f1(l0(s)));break;case TPt:s.length===52&&(e.descriptionHash=f1(l0(s)));break;case SPt:e.expiryTime=SP(s);break;case APt:e.minFinalCltvExpiryDelta=SP(s);break;case kPt:s.length===52&&(e.paymentSecret=f1(l0(s)));break;case NPt:e.paymentMetadata=f1(l0(s));break;case OPt:e.features=f1(l0(s));break;case IPt:e.rgbAmount=SP(s);break;case CPt:let c=l0(s);e.rgbContractId=new TextDecoder().decode(c);break;default:break}}catch{continue}}return e}a(BPt,"se");function DPt(t){try{let e=bPt.bech32.decode(t,2e3),{prefix:r,words:n}=e,i=LPt(r);if(n.length<111)throw new Error("Invoice data too short");let s=n.slice(0,7),o=SP(s),c=n.slice(7,n.length-104),u=BPt(c),l=null;if(i.amount!==null){let p=i.amount;i.siPrefix&&PPt[i.siPrefix]?i.siPrefix==="u"?l=p*1e5:i.siPrefix==="m"?l=p*1e8:i.siPrefix==="n"?l=p*100:i.siPrefix==="p"&&(l=Math.floor(p/10)):l=Math.floor(p/10)}let d=u.expiryTime||3600,f=null;return u.rgbContractId&&(f=u.rgbContractId),{amt_msat:l,expiry_sec:d,timestamp:o,asset_id:f,asset_amount:u.rgbAmount||null,payment_hash:u.paymentHash||null,payment_secret:u.paymentSecret||null,payee_pubkey:u.payeePubkey||null,network:i.network}}catch(e){throw new Error(`Failed to decode Lightning invoice: ${e.message}`)}}a(DPt,"ne");var NP=class{static{a(this,"D")}constructor(e){this.client=e,this.paymentSubscriptions=new Map,this.paymentPollingIntervals=new Map}async connectPeer(e){return this.client._request("post","/connectpeer",e)}async listPeers(){return this.client._request("get","/listpeers")}async disconnectPeer(e){return this.client._request("post","/disconnectpeer",e)}async openChannel(e){return this.client._request("post","/openchannel",e)}async closeChannel(e){return this.client._request("post","/closechannel",e)}async listChannels(){return this.client._request("get","/listchannels")}async getChannelIdByTempId(e){return this.client._request("post","/getchannelid",e)}async createInvoice(e){return this.client._request("post","/lninvoice",e)}async createHodlInvoice(e){if(!e||!e.payment_hash)throw new Error("payment_hash is required for HODL invoice");if(e.preimage)throw new Error("preimage must not be provided for HODL invoice (mutually exclusive with payment_hash)");return this.client._request("post","/lninvoice",e)}async payInvoice(e){return this.client._request("post","/sendpayment",e)}async decodeLnInvoice(e){return this.client._request("post","/decodelninvoice",e)}async getInvoiceStatus(e){return this.client._request("post","/invoicestatus",e)}async getPayment(e){return this.client._request("post","/getpayment",e)}async listPayments(){return this.client._request("get","/listpayments")}async keysend(e){return this.client._request("post","/keysend",e)}subscribeToPastPayments(e){let{onPayment:r,onError:n,pollingInterval:i=5e3,maxStoredIds:s=1e3,skipInitialFetch:o=!1}=e;if(!r||typeof r!="function")throw new Error("onPayment callback is required and must be a function");i<1e3&&console.warn("Warning: Polling interval less than 1000ms may cause performance issues");let c=`payment-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,u=Date.now(),l=new Set,d=new Map,f=a(()=>{l.size<=s||[...d.entries()].sort((m,g)=>m[1]-g[1]).map(m=>m[0]).slice(0,l.size-s).forEach(m=>{l.delete(m),d.delete(m)})},"p");o||this.listPayments().then(m=>{m&&m.payments&&Array.isArray(m.payments)&&(m.payments.forEach(g=>{l.add(g.payment_hash),d.set(g.payment_hash,g.created_at||Date.now())}),f())}).catch(m=>{n&&typeof n=="function"&&n(m)});let p=i,_=0,h=setInterval(async()=>{try{let m=await this.listPayments();if(m&&m.payments&&Array.isArray(m.payments)){let g=m.payments.filter(y=>l.has(y.payment_hash)?l.has(y.payment_hash)&&y.updated_at>(d.get(y.payment_hash)||0)?(d.set(y.payment_hash,y.updated_at||Date.now()),!0):!1:(l.add(y.payment_hash),d.set(y.payment_hash,y.created_at||Date.now()),!0));if(m.payments.length>0){let y=Math.max(...m.payments.map(E=>E.updated_at||0));u=Math.max(u,y)}if(f(),g.length>0)g.forEach(y=>{r(y)}),_=0;else if(_++,_>5){let y=Math.min(i*3,i*(1+_/10));if(y!==p){p=y,clearInterval(h);let E=setInterval(h.callback,p);this.paymentPollingIntervals.set(c,E)}}}}catch(m){n&&typeof n=="function"&&n(m)}},i);return h.callback=h._onTimeout,this.paymentSubscriptions.set(c,{onPayment:r,onError:n,pollingInterval:i,currentPollingInterval:p,maxStoredIds:s}),this.paymentPollingIntervals.set(c,h),c}unsubscribeFromPayments(e){if(!this.paymentSubscriptions.has(e))return!1;let r=this.paymentPollingIntervals.get(e);return r&&(clearInterval(r),this.paymentPollingIntervals.delete(e)),this.paymentSubscriptions.delete(e),!0}decodeRGBLNInvoice(e){return DPt(e)}},OP=class{static{a(this,"C")}constructor(e){this.client=e}async makerInitSwap(e){return this.client._request("post","/makerinit",e)}async makerExecuteSwap(e){return this.client._request("post","/makerexecute",e)}async takerAcceptSwap(e){return this.client._request("post","/taker",e)}async getSwap(e){return this.client._request("post","/getswap",e)}async listSwaps(){return this.client._request("get","/listswaps")}},IP=class{static{a(this,"U")}constructor(e){this.client=e}async getNodeInfo(){return this.client._request("get","/nodeinfo")}async getNodeState(){try{let e=await this.client._request("get","/nodestate");return e?.state}catch(e){if(e.message.includes("Network Error"))return"NonExisting";throw e}}async getNetworkInfo(){return this.client._request("get","/networkinfo")}async checkIndexerUrl(e){return this.client._request("post","/checkindexerurl",e)}async checkProxyEndpoint(e){return this.client._request("post","/checkproxyendpoint",e)}async sendOnionMessage(e){return this.client._request("post","/sendonionmessage",e)}async signMessage(e){return this.client._request("post","/signmessage",e)}async initNode(e){return this.client._request("post","/init",e)}async unlockNode(e){return this.client._request("post","/unlock",e)}async lockNode(){return this.client._request("post","/lock")}async changePassword(e){return this.client._request("post","/changepassword",e)}async backupNode(e){return this.client._request("post","/backup",e)}async restoreNode(e){return this.client._request("post","/restore",e)}async revokeToken(e){return this.client._request("post","/revoketoken",e)}async shutdown(){return this.client._request("post","/shutdown")}},CP=class{static{a(this,"G")}constructor(e){this.client=e}async listWebhooks(){return this.client._request("get","/webhook/list")}async subscribeWebhook(e){return this.client._request("post","/webhook/subscribe",e)}async unsubscribeWebhook(e){return this.client._request("post","/webhook/unsubscribe",e)}},RP=class{static{a(this,"H")}constructor(e={},r=null){let n={};typeof e=="string"?(n.baseUrl=e,r&&(n.headers={Authorization:`Bearer ${r}`})):n=e,this.baseUrl=n.baseUrl||"http://localhost:3001",this.axios=yPt.create({baseURL:this.baseUrl,headers:{"Content-Type":"application/json",...n.headers},...n.axiosConfig}),this.onchain=new AP(this),this.rgb=new kP(this),this.lightning=new NP(this),this.swaps=new OP(this),this.node=new IP(this),this.webhook=new CP(this)}async _request(e,r,n=null){var i,s;try{let o={method:e,url:r};return n!==null&&(e==="post"||e==="put"||e==="patch")?o.data=n:n!==null&&e==="get"&&(o.params=n),(await this.axios.request(o)).data}catch(o){if(o.response){let c=((i=o.response.data)==null?void 0:i.message)||((s=o.response.data)==null?void 0:s.error)||o.response.statusText;throw new Error(`API Error (${o.response.status}): ${c}`)}else throw o.request?new Error(`Network Error: Unable to reach RGB API at ${this.baseUrl}`):new Error(`Request Error: ${o.message}`)}}};mf.LightningMethods=NP;mf.NodeMethods=IP;mf.OnchainMethods=AP;mf.RgbApiClient=RP;mf.RgbMethods=kP;mf.SwapMethods=OP;mf.WebhookMethods=CP;mf.default=RP});var gy=v((oHr,G3e)=>{var{getConfig:MPt}=Ht(),{RgbApiClient:FPt}=$3e(),xX=null;function UPt(){if(!xX){let t=MPt();if(!t.LINK_RGB_LISTENING_PORT)throw new Error("RGB configuration not available");xX=new FPt({baseUrl:`http://127.0.0.1:${t.LINK_RGB_LISTENING_PORT}`})}return xX}a(UPt,"getRgbClient");G3e.exports=UPt});var CA=v((uHr,z3e)=>{var{checkObjectArgs:V3e}=Wi(),{getConfig:qPt}=Ht(),{decryptNostrString:PP}=Sr(),{getConfigFilePath:K3e}=u2(),{TASKS:HPt}=ot(),{reportTaskCompletion:jPt}=$p(),p1=gy();async function wX(){let t=await p1().node.getNodeState(),e={};switch(t){case"None":e.state=0;break;case"Locked":e.state=1;break;case"Changing":e.state=3;break;case"Running":e.state=4;break;case"NonExisting":e.state=255;break;default:e.state=0}return e}a(wX,"getNodeState");async function $Pt(){return(await p1().rgb.listAssets({filter_asset_schemas:[]}))?.nia??[]}a($Pt,"getRGBAssetsList");async function GPt({password:t}){if(!t)throw new Error("password is required");let e=p1(),r=await PP(t);return await e.node.initNode({password:r})}a(GPt,"genSeed");async function VPt({password:t,lnlinkUser:e}){if(!t)throw new Error("password is required");let r=p1(),{LINK_BITCOIND_RPCHOST:n,LINK_BITCOIND_RPCUSER:i,LINK_BITCOIND_RPCPASS:s,LINK_RGB_LDK_PEER_LISTENING_PORT:o=9735,LINK_NAME:c,LINK_RGB_ELECTRS_HOST:u,LINK_RGB_PROXY_ENDPOINT:l}=qPt(),d=await PP(t),f=n?.split(":")[0],p=Number(n?.split(":")[1]),_={bitcoind_rpc_username:i,bitcoind_rpc_password:s,bitcoind_rpc_host:f,bitcoind_rpc_port:p,indexer_url:u,proxy_endpoint:l,password:d,announce_addresses:[`0.0.0.0:${o}`],announce_alias:`${c}`};return e&&jPt({nostrAddress:e?.npub,tag:HPt.EnableRGBNode}),r.node.unlockNode(_).then(()=>{}).catch(m=>console.error("[rgb] unlockNode background error:",m.message)),Ks().set("rgbState",3),{state:3,message:"Unlock submitted, syncing..."}}a(VPt,"unlockNode");async function KPt({password:t}){let{rgbBackupPath:e}=K3e(),r={password:t,backup_path:e},n=p1();V3e(r,["password","backup_path"]),(await wX()).state===4&&await n.node.lockNode();let s=await PP(t);return r.password=s,await n.node.backupNode(r)||!0}a(KPt,"backupNode");async function zPt({password:t}){let{rgbBackupPath:e}=K3e(),r={password:t,backup_path:e},n=p1();(await wX()).state===4&&await n.node.lockNode(),V3e(r,["password","backup_path"]);let s=await PP(t);return r.password=s,await n.node.restoreNode(r)||!0}a(zPt,"restoreNode");z3e.exports={getNodeState:wX,genSeed:GPt,unlockNode:VPt,backupNode:KPt,restoreNode:zPt,getRGBAssetsList:$Pt}});var SX=v((dHr,Q3e)=>{var EX=mX().default,{getWalletState:JPt}=Wi(),{getConfig:TX}=Ht(),f0=Ke(),{getNodeState:WPt}=CA(),{getServiceConfig:J3e}=AA(),{getServicesState:XPt}=IA(),LP=a(t=>t?t.replace(/\\/g,"/"):"","normalizePath");function W3e(){let t=TX();return t.LINK_EXTERNAL_NODES==="true"||t.LINK_EXTERNAL_NODES===!0}a(W3e,"isExternalNodesMode");var Ln={RUNNING:"Running",STOPPED:"Stopped"};async function QPt(){let t=new f0("statusChecker");try{return XPt()?.tor?.hasProcess?Ln.RUNNING:Ln.STOPPED}catch(e){return t.error(`Error checking tor process: ${e.message}`),Ln.STOPPED}}a(QPt,"checkTorProcess");async function YPt(){let t=new f0("statusChecker");try{if(W3e()){t.info("External nodes mode: checking litd via RPC...");try{let i=await JPt();if(i!=null)return t.info(`Litd is running (wallet state: ${i})`),Ln.RUNNING}catch(i){t.warn(`RPC check failed: ${i.message}`)}return Ln.STOPPED}let{LINK_DATA_PATH:e}=TX(),r=await EX("name","litd");if(!e)return r.length>0?(t.warn("LINK_DATA_PATH not set, cannot filter litd by ownership. Returning RUNNING based on process name match."),Ln.RUNNING):Ln.STOPPED;let n=`${e}/.litd`;if(r.length>0){let i=LP(n),s=r.find(o=>o.cmd&&LP(o.cmd).includes(i));return s?(t.info(`Found lnlink litd process: PID ${s.pid}`),Ln.RUNNING):(t.debug(`Found ${r.length} litd process(es), but none belong to lnlink (data dir: ${n})`),Ln.STOPPED)}return Ln.STOPPED}catch(e){return t.warn(`Failed to check litd process: ${e.message}`),Ln.STOPPED}}a(YPt,"checkLitdProcess");async function X3e(){let t=new f0("statusChecker");try{if(W3e()){t.info("External nodes mode: checking RGB via SDK...");try{let i=await WPt();if(i!=null)return t.info("RGB is running (node state received)"),Ln.RUNNING}catch(i){t.warn(`RGB SDK check failed: ${i.message}`)}return Ln.STOPPED}let{LINK_DATA_PATH:e}=TX(),r=await EX("name","rgb-lightning-node");if(!e)return r.length>0?(t.warn("LINK_DATA_PATH not set, cannot filter RGB by ownership. Returning RUNNING based on process name match."),Ln.RUNNING):Ln.STOPPED;let n=`${e}/.rgb`;if(r.length>0){let i=LP(n),s=r.find(o=>o.cmd&&LP(o.cmd).includes(i));return s?(t.info(`Found lnlink RGB process: PID ${s.pid}`),Ln.RUNNING):(t.debug(`Found ${r.length} rgb-lightning-node process(es), but none belong to lnlink (data dir: ${n})`),Ln.STOPPED)}return Ln.STOPPED}catch(e){return t.warn(`Failed to check rgb process: ${e.message}`),Ln.STOPPED}}a(X3e,"checkRgbProcess");async function BP(t){let e=new f0("statusChecker");try{let r=J3e();if(!r[t])throw new Error(`${t} does not exist.`);switch(t){case"tor":return await QPt();case"litd":return await YPt();case"rgb":return await X3e();default:{let i=r[t].command.split(/[/\\]/).pop().replace(".exe","");return(await EX("name",i)).length>0?Ln.RUNNING:Ln.STOPPED}}}catch(r){throw e.error(`Error checking ${t} process: ${r.message}`),r}}a(BP,"checkProcess");var d0={data:null,timestamp:0,TTL_MS:5e3};async function ZPt(t=""){let e=new f0("statusChecker");if(!t&&d0.data){let o=Date.now()-d0.timestamp;if(o<d0.TTL_MS)return e.debug(`getTerminalStatus: returning cached result (age: ${o}ms)`),[...d0.data]}let r=J3e(),n=a(o=>o!=="rgb"&&(!t||o.includes(t)),"shouldInclude"),i=Object.keys(r).filter(n),s=await Promise.all(i.map(async o=>{try{let c=await BP(o);return{service_name:o,status:c}}catch(c){return e.error(`Error checking ${o} status: ${c.message}`),{service_name:o,status:Ln.STOPPED,error:c.message}}}));return t||(d0.data=s,d0.timestamp=Date.now()),s}a(ZPt,"getTerminalStatus");function e5t(){d0.data=null,d0.timestamp=0}a(e5t,"invalidateTerminalStatusCache");async function t5t(){let t=new f0("statusChecker");try{return{service_name:"rgb",status:await X3e()}}catch(e){return t.error(`Error checking rgb status: ${e.message}`),{service_name:"rgb",status:Ln.STOPPED,error:e.message}}}a(t5t,"getRGBStatus");async function r5t(t){let e=new f0("statusChecker");try{return await BP(t)===Ln.RUNNING}catch(r){return e.error(`Error checking if ${t} is running: ${r.message}`),!1}}a(r5t,"isServiceRunning");function n5t(t,e,r=3e4,n=1e3){let i=new f0("statusChecker");return new Promise(s=>{let o=Date.now(),c=a(async()=>{try{if(await BP(t)===e){s(!0);return}}catch(u){i.error(`Error waiting for ${t} status: ${u.message}`)}if(Date.now()-o>=r){i.warn(`Timeout waiting for ${t} to reach status: ${e}`),s(!1);return}setTimeout(c,n)},"checkStatus");c()})}a(n5t,"waitForServiceStatus");Q3e.exports={ServiceStatus:Ln,checkProcess:BP,getRGBStatus:t5t,getTerminalStatus:ZPt,invalidateTerminalStatusCache:e5t,isServiceRunning:r5t,waitForServiceStatus:n5t}});var gf=v((pHr,sIe)=>{var{getConfig:Y3e,reloadConfig:i5t}=Ht(),{TASKS:CX}=ot(),Dl=Ke(),{sleep:Z3e}=l2(),{updateMainLnlinkConfig:a5t}=Sr(),{reportTaskCompletion:RX}=$p(),{buildLitdArgs:s5t,buildTorArgs:o5t,buildRgbArgs:c5t}=AA(),{startService:DP,stopService:PX}=IA(),{getTerminalStatus:_1,invalidateTerminalStatusCache:NX,isServiceRunning:OX,getRGBStatus:h1,ServiceStatus:Uo}=SX();async function eIe(t,{timeoutMs:e=15e3,pollIntervalMs:r=1e3}={}){let n=new Dl("litdService"),i=Date.now()+e,s=[];for(;;){if(s=await _1("litd"),s.find(d=>d.service_name==="litd")?.status===t)return n.info(`Litd reached target status: ${t}`),{matched:!0,statuses:s};let u=Date.now();if(u>=i)break;let l=Math.min(r,Math.max(0,i-u));l>0&&await Z3e(l)}let o=s.find(c=>c.service_name==="litd")?.status||"Unknown";return n.warn(`Timed out waiting for Litd status "${t}". Last observed status: ${o}`),{matched:!1,statuses:s}}a(eIe,"waitForLitdStatus");async function IX(t,{timeoutMs:e=15e3,pollIntervalMs:r=1e3}={}){let n=new Dl("rgbService"),i=Date.now()+e,s=null;for(;;){if(s=await h1(),s?.status===t)return n.info(`RGB reached target status: ${t}`),{matched:!0,statuses:s};let u=Date.now();if(u>=i)break;let l=Math.min(r,Math.max(0,i-u));l>0&&await Z3e(l)}let o=s?.status||"Unknown";return n.warn(`Timed out waiting for RGB status "${t}". Last observed status: ${o}`),{matched:!1,statuses:s}}a(IX,"waitForRgbStatus");var AX=!1,kX=!1;async function tIe({waitForRunning:t=!0}={}){let e=new Dl("litdService");if(AX)return e.warn("Terminal start already in progress, returning current status"),await _1();AX=!0;try{let{LINK_ENABLE_TOR:r}=Y3e(),n=r==="true"||r===!0;e.info("Starting terminal services...");let i=await _1(),s=i.find(d=>d.service_name==="litd"),o=i.find(d=>d.service_name==="tor");e.info(`Current status - Litd: ${s?.status}, Tor: ${o?.status}`);let c=!n;if(n&&o?.status===Uo.STOPPED){e.info("Starting Tor service...");try{let d=o5t();await DP("tor",d),NX(),c=!0,e.info("Tor service started successfully")}catch(d){c=!1,e.warn(`Tor failed to start: ${d.message}. Starting Litd without Tor (graceful degradation)`)}}else n&&o?.status===Uo.RUNNING&&(c=!0);if(s?.status===Uo.STOPPED){let d=n&&c;n&&!c&&e.warn("Litd will start without Tor due to Tor startup failure"),e.info(`Starting Litd service (Tor: ${d})...`);let f=s5t(d);await DP("litd",f),NX(),e.info("Litd service started successfully")}let u=await _1(),l=u.find(d=>d.service_name==="litd")?.status;if(t&&l!==Uo.RUNNING){e.info("Waiting for Litd to reach running state after start...");let{matched:d,statuses:f}=await eIe(Uo.RUNNING,{timeoutMs:2e4,pollIntervalMs:1e3});if(!d)throw new Error("Litd failed to reach RUNNING state after start");return e.info("Terminal services started and Litd is running"),f}return e.info("Terminal services started successfully"),u}catch(r){throw e.error(`Failed to start terminal services: ${r.message}`),r}finally{AX=!1}}a(tIe,"startTerminal");async function rIe(t={}){let e=new Dl("litdService"),{lnlinkUser:r,waitForStopped:n=!0,waitOptions:i={}}=t||{};e.info("Stopping terminal services...");try{let s=await PX("litd");if(NX(),!s)return e.warn("stopService returned a falsy result"),!1;if(r&&RX({nostrAddress:r.npub,tag:CX.StopTaprootAssetNode}),!n)return e.info("Terminal services stopped (waiting for STOPPED state skipped)"),!0;e.info("Waiting for Litd to confirm STOPPED state...");let{matched:o}=await eIe(Uo.STOPPED,{timeoutMs:15e3,pollIntervalMs:1e3,...i});if(!o)throw new Error("Litd did not stop within the expected time window");return e.info("Terminal services stopped successfully and Litd is confirmed STOPPED"),!0}catch(s){throw e.error(`Failed to stop terminal services: ${s.message}`),s}}a(rIe,"stopTerminal");async function LX(t={}){let e=new Dl("litdService");e.info("Restarting terminal services...");try{if(!await rIe({...t,waitForStopped:!0}))return e.warn("Stopping Litd returned a falsy result, aborting restart."),!1;e.info("Starting Litd...");let n=await tIe({waitForRunning:!0});return e.info("Terminal services restarted successfully"),n}catch(r){throw e.error(`Failed to restart terminal services: ${r.message}`),r}}a(LX,"restartTerminal");async function u5t(t={}){let e=new Dl("litdService");if(Object.keys(t).length===0)throw new Error("config is empty");return e.info("Applying new configuration..."),await LX()}a(u5t,"configTerminal");async function l5t(){let t=new Dl("litdService");try{let e=await _1(),r=await OX("litd"),n=await OX("tor");return{healthy:r,services:{litd:{running:r,status:e.find(i=>i.service_name==="litd")?.status||"Unknown"},tor:{running:n,status:e.find(i=>i.service_name==="tor")?.status||"Unknown"}},timestamp:new Date().toISOString()}}catch(e){return t.error(`Health check failed: ${e.message}`),{healthy:!1,error:e.message,timestamp:new Date().toISOString()}}}a(l5t,"healthCheck");async function nIe(t={}){let{waitForRunning:e=!0,lnlinkUser:r}=t,n=new Dl("rgbService");if(kX)return n.warn("RGB start already in progress, returning current status"),await h1();kX=!0,n.info("Starting RGB service...");try{let i=await h1();if(i?.status===Uo.STOPPED){n.info("RGB service is stopped, starting...");let o=c5t();await DP("rgb",o),r&&RX({nostrAddress:r?.npub,tag:CX.EnableRGBNode}),n.info("RGB service started successfully")}else n.info(`RGB service is already ${i?.status}`);if(e&&i?.status!==Uo.RUNNING){n.info("Waiting for RGB to reach running state...");let{matched:o,statuses:c}=await IX(Uo.RUNNING,{timeoutMs:2e4,pollIntervalMs:1e3});if(!o)throw new Error("RGB failed to reach RUNNING state after start");return n.info("RGB service is running"),c}return await h1()}catch(i){throw n.error(`Failed to start RGB service: ${i.message}`),i}finally{kX=!1}}a(nIe,"startRGB");async function iIe(t){let e=new Dl("rgbService");e.info("Stopping RGB service...");let r=t?.lnlinkUser;try{let n=await PX("rgb");return e.info("RGB service stopped successfully"),r&&RX({nostrAddress:r.npub,tag:CX.StopRGBNode}),n}catch(n){throw e.error(`Failed to stop RGB service: ${n.message}`),n}}a(iIe,"stopRGB");async function aIe(t={}){let e=new Dl("rgbService");e.info("Restarting RGB service...");try{let r=await h1(),n=!!r?.error;if(r?.status===Uo.RUNNING||n){if(e.info(n?"RGB status check failed; forcing stop before restart...":"Stopping RGB service..."),!await iIe(t))return e.warn("Stopping RGB returned a falsy result, aborting restart."),!1;e.info("Waiting for RGB to stop...");let{matched:d}=await IX(Uo.STOPPED,{timeoutMs:15e3,pollIntervalMs:1e3});if(!d)throw new Error("RGB did not stop within the expected time window")}e.info("Starting RGB...");let s=await nIe(t);if(s?.status===Uo.RUNNING)return e.info("RGB service restarted successfully"),s;e.info("Waiting for RGB to reach running state...");let{matched:c,statuses:u}=await IX(Uo.RUNNING,{timeoutMs:2e4,pollIntervalMs:1e3});if(!c)throw new Error("RGB failed to reach RUNNING state after restart");return e.info("RGB service restarted successfully"),u}catch(r){throw e.error(`Failed to restart RGB service: ${r.message}`),r}}a(aIe,"restartRGB");async function d5t(t={}){let e=new Dl("nodeManage");e.info("Updating node name...");try{let{node_name:r}=t;if(!r)throw new Error("node_name is required");let n=await a5t({node_name:r});if(n!==1)throw new Error("Failed to update node name in DB");await i5t();let s=Y3e()?.LINK_NAME||r,o=await LX(t);if(!o)throw new Error("Failed to restart litd after updating node name");let u=(Array.isArray(o)?o.find(f=>f.service_name==="litd"):null)?.status||(Array.isArray(o)?"Unknown":o?.status||"Unknown"),l=await aIe(t),d=Array.isArray(l)?l.find(f=>f.service_name==="rgb")?.status||"Unknown":l?.status||"Unknown";return{update_status:n===1,node_name:s,litd_status:u,litd_details:o,rgb_status:d,rgb_details:l}}catch(r){throw e.error(`Failed to update nodename: ${r.message}`),r}}a(d5t,"updateNodeName");sIe.exports={startTerminal:tIe,stopTerminal:rIe,restartTerminal:LX,configTerminal:u5t,getTerminalStatus:_1,healthCheck:l5t,startRGB:nIe,stopRGB:iIe,restartRGB:aIe,getRGBStatus:h1,startService:DP,stopService:PX,isServiceRunning:OX,ServiceStatus:Uo,updateNodeName:d5t}});var DX=v((hHr,cIe)=>{var{getConfig:f5t}=Ht(),{getWalletState:p5t}=Wi(),{getMainLnlinkConfig:BX,updateMainLnlinkConfig:oIe}=Sr(),{nip19:_5t,getPublicKey:h5t,generatePrivateKey:m5t}=oc();async function g5t({owner:t,settings:e,nodeName:r,enableTor:n}){if(!t)throw new Error("ownerNostrAddr is null");if(!/^npub[a-z0-9]{59,}$/.test(t))throw new Error("owner nostr address format error");let i={...e,enableTor:n!==void 0?n:!0},s=await BX();if(s&&s.node_sk&&s.owner_npub){let c={settings:i};r&&(c.node_name=r),await oIe(c)}else{let c=m5t(),u=_5t.npubEncode(h5t(c)),l={owner_npub:t,node_sk:c,node_npub:u,settings:i};r&&(l.node_name=r),await oIe(l)}return await BX()}a(g5t,"initConfig");async function y5t(){let t=f5t(),e=[],{getTerminalStatus:r,getRGBStatus:n,isServiceRunning:i}=gf(),s=await i("litd"),o=await p5t(!0);if(s&&o===4){let d=await r(),f=await n(),p=[...new Set([f,...d])];e.push(...p)}else{let d=await n();e.push(d),e.push({service_name:"litd",status:s?"Running":"Stopped"})}let c=await BX(),u=c?.settings||{},l=u.enableTor!==void 0?u.enableTor:!0;return{linkName:t?.LINK_NAME,owner:t?.LINK_OWNER,nodeAddr:t?.LINK_NODE_ADDR,relayUri:t?.LINK_RELAY_URI,settings:c?.settings,enableTor:l,linkStatus:e}}a(y5t,"getInfo");cIe.exports={initConfig:g5t,getInfo:y5t}});var MX=v((gHr,uIe)=>{var v5t=require("node:events"),b5t=new v5t;uIe.exports=b5t});var FX=v((yHr,lIe)=>{var{getConfig:x5t}=Ht(),{startTerminal:w5t}=gf(),E5t=Ke();async function T5t({waitForRunning:t=!0}={}){let e=new E5t("job");try{if(!x5t().LINK_READY)return e.info("LND job startLitd not set, skipping."),!1;let r=await w5t({waitForRunning:t});return r&&e.info(`LND job startLitd complete:${JSON.stringify(r)}`),!0}catch(r){e.error(`LND job startLitd error--->${r.message}`)}}a(T5t,"startLitd");lIe.exports=T5t});var UX=v((bHr,dIe)=>{var{getConfig:S5t}=Ht(),{startRGB:A5t}=gf(),k5t=Ke();async function N5t({waitForRunning:t=!0}={}){let e=new k5t("job");try{if(!S5t().LINK_READY)return e.info("RGB job startRGB not set, skipping."),!1;let r=await A5t({waitForRunning:t});e.info(`RGB job startRGB complete:${JSON.stringify(r)}`)}catch(r){e.error(`RGB job startRGB error--->${r.message}`)}}a(N5t,"startRGB");dIe.exports=N5t});var qX=v((wHr,fIe)=>{var MP=new Map;async function O5t(t,e=[],r,n=60*1e3,i){let s=a(async()=>{try{await t(...e),i.info(`\u2705 Attempt ${r} succeeded`)}catch(o){i.error(`Attempt ${r} failed with: ${o.message}, retrying in ${n/1e3} seconds`)}finally{setTimeout(s,n)}},"retry");s()}a(O5t,"executeWithRetry");async function I5t(t,e,r,n=0,i=60*1e3,s){MP.has(r)&&(clearTimeout(MP.get(r)),MP.delete(r));let o=a(async(c=1)=>{try{Array.isArray(e)?await t(...e):await t(e),s.info(`\u2705 Attempt ${r} succeeded`)}catch(u){if(s.warn(`Attempt ${r} failed with: ${u.message}, retrying in ${i/1e3} seconds`),n&&c>=n)return s.error(`Attempt ${r} failed after ${c} attempts`),!1;let l=setTimeout(()=>o(c+1),i);MP.set(r,l)}},"retry");o()}a(I5t,"terminateableRetryExecute");async function C5t(t,e,r,n=10,i=1e3,s){return new Promise((o,c)=>{let u=a(async(l=1)=>{try{let d=await t(...e);if(d!==void 0){s.info(`\u2705 Attempt ${r} succeeded`),o(d);return}throw new Error(`${r} returned falsy value`)}catch(d){if(s.warn(`Attempt ${l}/${n} for ${r} failed: ${d.message}`),l>=n){s.error(`\u274C ${r} failed after ${n} attempts`),c(d);return}setTimeout(()=>{u(l+1).catch(c)},i)}},"retry");u(1).catch(c)})}a(C5t,"retryUntilSuccess");fIe.exports={executeWithRetry:O5t,terminateableRetryExecute:I5t,retryUntilSuccess:C5t}});var HX=v((THr,R5t)=>{R5t.exports={name:"lnlink-server",version:"1.2.0",private:!1,main:"dist/index.js",files:["dist","prisma","README.md"],scripts:{build:"node build.js && node build.js --mode development --external all --entry electron","start:bin":"node scripts/start-bin.js","start:docker:dev":"dotenv -e .env.dev -- docker compose -f ./docker-compose.dev.yml up --build","start:dev":'dotenv -e .env.dev -- sh -c "prisma generate && (prisma migrate dev --name auto_update || prisma db push) && node ./app.js"',"start:regtest":"docker compose --env-file ./.env.regtest -f ./docker-compose-lnlink.yml up --build","start:testnet":"docker compose --env-file ./.env.testnet -f ./docker-compose-lnlink.yml up --build","start:mainnet":"docker compose --env-file ./.env.mainnet -f ./docker-compose-lnlink.yml up --build","start:bin:dist":"node scripts/start-bin.js --dist",lint:"eslint .","lint:fix":"eslint . --fix","lint:staged":"lint-staged",preinstall:"npx husky"},_moduleAliases:{"@api":"api","@constants":"constants","@business":"business","@nostr":"nostr","@package.json":"./package.json"},dependencies:{"@grpc/grpc-js":"^1.10.8","@grpc/proto-loader":"^0.7.9","@lightsparkdev/lightspark-sdk":"^1.8.9","@prisma/client":"6.14.0",axios:"^1.7.2","body-parser":"^1.20.2",bolt11:"^1.4.1","cookie-parser":"~1.4.4","crypto-js":"^4.2.0",dayjs:"^1.11.10",debug:"~2.6.9","decimal.js":"^10.4.3",ethers:"^6.15.0",express:"^4.18.2","express-rate-limit":"^8.0.1","find-process":"^2.0.0","form-data":"^4.0.2","http-errors":"~1.6.3",long:"^5.2.3","module-alias":"^2.2.3",morgan:"~1.9.1","node-cache":"^5.1.2","node-cron":"^3.0.3","nostr-tools":"1.17.0",pino:"^9.9.0","pino-pretty":"^13.1.1","pino-roll":"^3.1.0",prisma:"6.14.0","rgb-api-js-sdk":"^1.0.9",ws:"^8.18.0"},"lint-staged":{"*.ts":["eslint --fix","git add"],"*.js":["eslint --fix","git add"]},devDependencies:{"@antfu/eslint-config":"^4.3.0","@commitlint/cli":"^19.7.1","@commitlint/config-conventional":"^19.7.1","dotenv-cli":"^10.0.0","electron-rebuild":"^3.2.9",esbuild:"^0.25.9",eslint:"^9.20.1",husky:"^9.1.7",jest:"^29.6.2","lint-staged":"^15.4.3",nodemon:"^3.0.3",protobufjs:"^7.2.5",typescript:"^5.7.3"},engines:{node:">=19.0.0"}}});var _0=v((SHr,SIe)=>{var{Buffer:yy}=require("node:buffer"),gIe=require("node:fs"),pIe=require("node:path"),{getConfig:vy}=Ht(),{getMainLnlinkConfig:$X,getLnlinkUser:P5t,upsertTransactionByFilter:qP}=Sr(),{retryUntilSuccess:L5t}=qX(),{ACCOUNT_TYPE:B5t,INVOICE_EXPIRY_TIME:D5t}=ot(),{WALLET_STATE_CODE:mc,SATS_ID:HP,NODE_TYPE:m1,TRANSACTION_KIND:jP,TRANSACTION_DIRECTION:g1,TRANSACTION_ASSET_TYPE:$P,TRANSACTION_STATUS:yIe}=ot(),M5t=HX(),{nip04:F5t,getPublicKey:_Ie}=oc(),{getWalletService:GX,getWalletState:p0,getLightningService:Di,checkWalletState:U5t,checkTprEnabled:q5t,getOpenedChannelList:vIe}=Wi(),{getConfigFilePath:VX,sleep:GP,getCacheMacaroon:KX,storeEnctryptAdminMacaroon:H5t,setCacheMacaroon:hIe,storeEnctryptLoopMacaroon:j5t}=bi(),Ma=Ks(),gc=Ke(),{getTerminalStatus:bIe,startTerminal:$5t}=gf(),{getTransactionsByFilter:G5t,decryptNostrString:jX}=Sr(),xIe=require("node:child_process").exec,{TASKS:VP}=ot(),{reportTaskCompletion:KP}=$p();async function V5t(t){let e=new gc("lnd"),{type:r,event_id:n,lnlinkUser:i}=t;if(r==null)throw new Error("type is required");let o=await Di().newAddress({type:r});return n&&i?(await qP({event_id:n,user_npub:i.npub,asset_type:$P.BTC,asset_id:HP,asset_amount:"0",node_type:m1.LITD,transaction_kind:jP.ONCHAIN,direction:g1.IN,target_address:o.address,status:yIe.PENDING,description:`BTC deposit address generated for ${i.npub}`,tx_type:"deposit",create_at:Math.floor(Date.now()/1e3),update_at:Math.floor(Date.now()/1e3)},{event_id:n}),e.info(`Generated BTC address: ${o.address} for user: ${i.npub}, event: ${n}`)):e.info(`Generated BTC address: ${o.address}`),o}a(V5t,"newAddress");async function K5t(t){let e=new gc("lnd"),{addr:r,amount:n,sat_per_vbyte:i,send_all:s,withinfo:o,event_id:c,lnlinkUser:u}=t,l=Di(),d={addr:r};n&&(d.amount=n),i&&(d.sat_per_vbyte=Number(i)),s&&(d.send_all=s);let f=await l.sendCoins(d);if(f?.txid&&c&&u){let p=s?"0":n?.toString()||"0";await qP({event_id:c,user_npub:u.npub,asset_type:$P.BTC,asset_id:HP,asset_amount:p,node_type:m1.LITD,transaction_kind:jP.ONCHAIN,direction:g1.OUT,target_address:r,status:yIe.PENDING,description:`BTC withdrawal for ${u.npub} to ${r}`,tx_type:"withdraw",tx_hash:f.txid,create_at:Math.floor(Date.now()/1e3),update_at:Math.floor(Date.now()/1e3)},{tx_hash:f.txid}),e.info(`Created outgoing transaction record: ${f.txid}, user: ${u.npub}, event: ${c}`)}if(o){let p=await du();f.nodeInfo=p}return f}a(K5t,"sendCoins");async function wIe(){return(await Di().closedChannels({}))?.channels?.map(i=>({channelId:i.chan_id,closeTx:i.closing_tx_hash,remotePubkey:i.remote_pubkey,channelPoint:i.channel_point,capacity:i.capacity,close_type:i.close_type,settledBalance:i.settled_balance,open_initiator:i.open_initiator,close_initiator:i.close_initiator}))}a(wIe,"getClosedChannelList");function FP({channel:t}){let e="";return t.custom_channel_data&&(e=JSON.parse(yy.from(t.custom_channel_data,"hex").toString("utf-8"))),{channel:{...t,custom_channel_data:e}}}a(FP,"covertChannel");async function z5t(){let t=await p0(!0),e=new gc("lnd"),{isMacaroonDecrypted:r}=KX();if(t!==4||!r)return{open_channel_list:[],pending_channel_list:[],closed_channel_list:[]};let n=Di(),i=await Promise.allSettled([vIe(),n.pendingChannels({}),wIe()]),s=i?.filter(E=>E.status==="rejected")?.map(E=>E.reason);s&&s.length>0&&e.error(`getChannelList ~ errors:${JSON.stringify(s)}`);let o=i[0].value,c=i[1].value,u=i[2].value,{pending_open_channels:l,pending_closing_channels:d,waiting_close_channels:f,pending_force_closing_channels:p}=c,_=l?.map(FP),h=d?.map(FP),m=f?.map(FP),g=p?.map(FP);return{open_channel_list:o,pending_channel_list:{pending_open_channels:_,pending_closing_channels:h,waiting_close_channels:m,pending_force_closing_channels:g},closed_channel_list:u}}a(z5t,"getChannelList");async function du(){let{LINK_NAME:t,LINK_NETWORK:e,LINK_OWNER:r,LINK_NODE_ADDR:n,LINK_LND_PEER_LISTEN_PORT:i}=vy(),s=new gc("lnd"),o=M5t.version,c=await p0(!0),u=15e3,l=Ma.get("combineNodeInfo")||{},d,f=new Promise(F=>{d=setTimeout(()=>{s.warn("combineNodeInfoAsync timed out after 15s, using cached result if available"),F({fromCache:!0,data:l})},u)}),p;try{p=await Promise.allSettled([Promise.race([tLt(c).then(F=>({fromCache:!1,data:F})),f]),bIe(),q5t(),P5t({account_type:B5t.READ_ONLY})])}finally{clearTimeout(d)}let[_,h,m,g]=p,y=_.value?.data||{},E=h.status==="fulfilled"?h.value:[],S=m.status==="fulfilled"?m.value:!1,N=g.status==="fulfilled"?g.value:null;h.status==="rejected"&&s.warn(`getNodeInfo: getTerminalStatus failed: ${h.reason?.message}`),g.status==="rejected"&&s.warn(`getNodeInfo: getLnlinkUser failed: ${g.reason?.message}`);let C={};E.forEach(F=>{C[F.service_name]=F.status});let R=y?.uris?.[0];return{pubkey:y?.identity_pubkey,name:t,status:{state:c,...C},owner:r,node_addr:n,balance:y?.balance,version:o,uri:R,host:R?R.split("@")[1]:`127.0.0.1:${i}`,peers:y?.peers,network:e,taproot_assets_enabled:S,read_only_account_sk:N?.sk}}a(du,"getNodeInfo");async function J5t({pay_req:t}){return await Di().decodePayReq({pay_req:t})}a(J5t,"decodePayReq");async function W5t(){let t=await p0(!0);if(t===4){let e=await bIe(),r={};return e.forEach(n=>{r[n.service_name]=n.status}),{state:t,...r}}else{let e=t>=0&&t<=4;return{state:t,litd:e?"Running":"Stopped"}}}a(W5t,"getNodeState");async function X5t(){return await Di().pendingChannels({})}a(X5t,"getPendingChannelList");async function UP({node_pubkey:t}){let{LINK_NOSTR_NODE_NPUBKEY:e}=vy(),r=t||e;return(await Di().listPeers({}))?.peers?.findIndex(s=>s.pub_key===r)>-1}a(UP,"isConnectPeer");async function Q5t(t){let{invoice:e,withinfo:r,outgoing_chan_id:n="",event_id:i,lnlinkUser:s}=t,o=Di(),c={payment_request:e,allow_self_payment:!0,fee_limit:{fixed:1e3}};n&&(c.outgoing_chan_id=`${n}`,c.outgoing_chan_ids=[`${n}`]);let u=await o.sendPaymentSync(c);if(u?.payment_hash){await GP(300);let d=(await o.decodePayReq({pay_req:e}))?.num_satoshis;await qP({event_id:i,user_npub:s.npub,asset_id:HP,asset_amount:`${d}`,asset_type:$P.BTC,invoice:e,node_type:m1.LITD,transaction_kind:jP.LIGHTNING,direction:g1.OUT},{payment_hash:u.payment_hash})}if(r){let l=await du();u.nodeInfo=l}return u}a(Q5t,"sendPaymentSync");async function Y5t(t){let{memo:e,value:r,event_id:n,lnlinkUser:i,expiry:s=D5t["10m"]}=t,c=await Di().addInvoice({memo:e,value:r,expiry:s});return c?.payment_request&&(await GP(500),await qP({event_id:n,user_npub:i.npub,asset_id:HP,asset_amount:`${r}`,asset_type:$P.BTC,invoice:c?.payment_request,node_type:m1.LITD,transaction_kind:jP.LIGHTNING,direction:g1.IN,description:e,add_index:Number.parseInt(c?.add_index)},{invoice:c.payment_request})),{...c}}a(Y5t,"createLnInvoice");async function Z5t(t){let{node_pubkey:e,amount:r,sat_per_vbyte:n,fund_max:i,zero_conf_enable:s,withinfo:o,push_sat:c,lnlinkUser:u}=t,l=Di(),{LINK_NOSTR_NODE_NPUBKEY:d}=vy(),f=e||d,p=new gc("lnd"),_=await UP({node_pubkey:f}),h;if(!_)h={isConnected:!1};else{let m={node_pubkey:f,local_funding_amount:r,min_confs:1};s&&(m.target_conf=0,m.zero_conf=!0,m.commitment_type=3,m.push_sat=1e5),n&&(m.sat_per_vbyte=n),i&&(m.fund_max=i,m.local_funding_amount="0"),c&&(m.push_sat=c),h=await l.openChannelSync(m),h.isConnected=!0,p.info(`openChannelSync ret--->, ${JSON.stringify(m)}, ${JSON.stringify(h)}`),u&&KP({nostrAddress:u.npub,tag:VP.CreateBTCChannel})}if(o){let m=await du();h.nodeInfo=m}return h}a(Z5t,"openChannel");async function eLt(){let t=Di(),{settings:e}=await $X();return((await t.listPeers({}))?.peers||[]).map(s=>{let o=s.pub_key===e?.officialLndPeer;return{pub_key:s.pub_key,alias:o?"Lnfi":`${s.pub_key}@${s.address}`,address:s.address}})}a(eLt,"listPeers");async function tLt(t){let e={},r=new gc("lnd"),n="combineNodeInfo",i="combineNodeInfo_ts",s=5e3;try{let{isMacaroonDecrypted:o}=KX(),c=t;c>mc.UNLOCKED&&c!==mc.WAITING_TO_START&&(o||(c=mc.LOCKED));let u=Ma.get(n),l=Ma.get(i);if(u&&l&&u.state===c){let d=Date.now()-l;if(d<s)return r.debug(`combineNodeInfoAsync: returning cached result (age: ${d}ms)`),u}if(c>=mc.RPC_ACTIVE&&o&&c!==mc.WAITING_TO_START){let d=Di(),f=[$X()];c>=mc.SERVER_ACTIVE&&(f.push(EIe(!0)),f.push(d.walletBalance()),f.push(d.listPeers({})));let p=await Promise.allSettled(f),_=p[0],h=c>=mc.SERVER_ACTIVE?p[1]:{status:"rejected"},m=c>=mc.SERVER_ACTIVE?p[2]:{status:"rejected"},g=c>=mc.SERVER_ACTIVE?p[3]:{status:"rejected"},y=null;_.status==="fulfilled"?y=_.value?.settings:r.warn(`combineNodeInfoAsync: getMainLnlinkConfig failed: ${_.reason?.message}`);let E=h.status==="fulfilled"?h.value:null,S=m.status==="fulfilled"?m.value:null,C=(g.status==="fulfilled"?g.value:null)?.peers||[],R=C.map(F=>{let U=F.pub_key===y?.officialLndPeer;return{pub_key:F.pub_key,alias:U?"Lnfi":`${F.pub_key}@${F.address}`,address:F.address}});c>=mc.SERVER_ACTIVE&&r.info(`LND lndService combineNodeInfoAsync peer:${C.map(F=>F.pub_key)}`);let $=p?.filter(F=>F.status==="rejected")?.map(F=>F.reason);$&&$.length>0&&r.error(`LND lndService combineNodeInfoAsync errors:${JSON.stringify($)}`),e={identity_pubkey:E?.identity_pubkey,...E,balance:S,peers:R}}return e={...e,state:c},Ma.set(n,e),Ma.set(i,Date.now()),e}catch(o){r.warn(`LND lndService combineNodeInfoAsync peer combineNodeInfo warn--->${o.message}`)}}a(tLt,"combineNodeInfoAsync");async function mIe(){let e=await Di().getInfo();return Ma.set("nodeInfo",e),e}a(mIe,"getInfo");async function EIe(t=!0){let e=new gc("lnd");try{let r=Ma.get("nodeInfo");return r?.identity_pubkey?(t&&mIe(),r):await mIe()}catch(r){e.error(`LND lndService getCacheInfo err--->${r.message}`)}}a(EIe,"getCacheNodeInfo");async function rLt(t){await U5t(mc.RPC_ACTIVE);let{secret:e,origin_secret:r}=t;if(!e&&!r)throw new Error("secret is required.");let n=r||await jX(e),i=Di(),o={permissions:[{entity:"uri",action:"/looprpc.SwapClient/GetInfo"},{entity:"uri",action:"/looprpc.SwapClient/LoopOut"},{entity:"uri",action:"/looprpc.SwapClient/LoopIn"},{entity:"uri",action:"/looprpc.SwapClient/ListSwaps"},{entity:"uri",action:"/looprpc.SwapClient/SwapInfo"},{entity:"uri",action:"/looprpc.SwapClient/AbandonSwap"},{entity:"uri",action:"/looprpc.SwapClient/Monitor"},{entity:"uri",action:"/looprpc.SwapClient/LoopOutTerms"},{entity:"uri",action:"/looprpc.SwapClient/LoopOutQuote"},{entity:"uri",action:"/looprpc.SwapClient/GetLoopInTerms"},{entity:"uri",action:"/looprpc.SwapClient/GetLoopInQuote"}],root_key_id:"18441921392371827000"},c=await i.bakeMacaroon(o);if(c?.macaroon){let u=yy.from(c?.macaroon,"hex");j5t(u,n)}}a(rLt,"bakeLoopMacaroon");async function TIe(t){let{walletUnlockerService:e}=GX(),r=new gc("lnd"),{wallet_password:n,cipher_seed_mnemonic:i}=t;if(Ma.get("initWalletInProgress"))throw r.warn("initWallet already in progress, rejecting duplicate request"),new Error("Wallet initialization already in progress");Ma.set("initWalletInProgress",!0);try{if(i)Ma.set("cipherSeedMnemonic",i);else{let l=await e.genSeed({});if(l?.cipher_seed_mnemonic){let d=l?.cipher_seed_mnemonic;Ma.set("cipherSeedMnemonic",d)}}let s=Ma.get("cipherSeedMnemonic");if(!s)throw new Error("Get seed error.");let{LINK_DEBUG:o}=vy(),c=!(o==="true"||o===!0),u=await e.initWallet({wallet_password:yy.from(n),cipher_seed_mnemonic:s,stateless_init:c}).catch(l=>{throw r.warn(`${l.message}`),l});return r.info(`LND lndService initWallet RPC response ->macaroon length:${u?.admin_macaroon?.length}`),u?.admin_macaroon&&H5t(u?.admin_macaroon,n),u}finally{Ma.del("initWalletInProgress")}}a(TIe,"wrapperInitWallet");async function nLt(){let{walletUnlockerService:t}=GX(),e=Ma.get("cipherSeedMnemonic");if(e)return{cipherSeedMnemonic:e};let r=await t.genSeed({});if(r?.cipher_seed_mnemonic){let n=r?.cipher_seed_mnemonic;return Ma.set("cipherSeedMnemonic",n),{cipherSeedMnemonic:n}}throw new Error("Get seed error.")}a(nLt,"genseed");async function iLt(t){let{password:e,withinfo:r,cipher_seed_mnemonic:n,origin_password:i,lnlinkUser:s}=t;if(!e&&!i)throw new Error("Password is null.");let o="",c;if(e&&(o=(await jX(e)).toString()),i&&(o=`${i}`),n&&(c=JSON.parse(await jX(n))),o&&o.length<8)throw new Error("Password length must be at least 8 characters.");let{isMacaroonDecrypted:u}=KX();if(u)throw new Error("You have already initialized.");await TIe({wallet_password:o,cipher_seed_mnemonic:c}),Ma.set("tempPassword",e);try{await p0(!1)}catch{}let d={message:"Init wallet success.",cipherSeedMnemonic:Ma.get("cipherSeedMnemonic")};return s&&KP({nostrAddress:s.npub,tag:VP.EnableTaprootAssetNode}),r&&(d.nodeInfo=await du()),d}a(iLt,"initWallet");async function aLt(t){let e=Di(),{withinfo:r,lnlinkUser:n,...i}=t,s={...i},o=await e.closeChannel(s);if(n&&KP({nostrAddress:n.npub,tag:VP.CloseTaprootChannel}),r){let c=await du();o.nodeInfo=c}return o}a(aLt,"closeChannel");async function sLt(t){let{pubkey:e,host:r,perm:n,timeout:i,withinfo:s}=t,o=new gc("lnd"),{LINK_NOSTR_NODE_NPUBKEY:c,LINK_NOSTR_NODE_HOST:u}=vy(),l=e||c,d=r||u,f=Di(),p=!1,_=20;if(await UP({node_pubkey:l}))p={isConnected:!0};else{o.info("Lnd lndService connectPeer"),await f.connectPeer({addr:{pubkey:l,host:d},perm:n||!1,timeout:i||30}).catch(g=>{o.error(`Lnd lndService connectPeer error ${g.message}`)});let m=0;for(;;){if(m++,m>_){p={isConnected:!1};break}if(await UP({node_pubkey:l})){p={isConnected:!0};break}else{await GP(1e3);continue}}}if(s){let m=await du();p.nodeInfo=m}return p}a(sLt,"connectPeer");async function oLt(t){let{wallet_password:e,recovery_window:r,withinfo:n}=t,{LINK_DEBUG:i}=vy(),o=(await $X()).node_sk,c=_Ie(_Ie(o)),l=await F5t.decrypt(o,c,e),{walletUnlockerService:d}=GX(),f=await p0(!0);if(f>mc.UNLOCKED&&f<mc.WAITING_TO_START)hIe(l);else{let _=!(i==="true"||i===!0);console.log("unlock stateless_init---->",_,i);let h={wallet_password:yy.from(l),stateless_init:_};r&&(h.recovery_window=Number(r));let m=new gc("lnd");await d.unlockWallet(h).catch(g=>{m.error(`${g.message}`)}),hIe(l),Ma.set("tempPassword",e);try{await p0(!1)}catch{}}let p={msg:"Unlock success."};if(n){let _=await du();p.nodeInfo=_}return p}a(oLt,"unlock");async function cLt(t){let{withinfo:e}=t,{channelBackupPath:r,lndNodeOriginPath:n,targetNodeBackupPath:i}=VX(),s=Di(),o=await s.exportAllChannelBackups({});gIe.writeFileSync(r,o.multi_chan_backup.multi_chan_backup),await s.stopDaemon({});let c=pIe.dirname(n),u=pIe.basename(n),f={channelBakeup:"success.",nodeBackup:await new Promise((p,_)=>{xIe(`tar -zcvf "${i}" "${u}"`,{cwd:c},h=>{h?_(h):p("success.")})})};if(e){await GP(3e3);let p=await du();f.nodeInfo=p}return f}a(cLt,"bakeNode");async function uLt(t){let{withinfo:e}=t;await Di().stopDaemon({}).catch(u=>{new gc("lnd").error(`Lnd lndService stopDaemon error ${u?.message}`)});let{basePath:n,targetNodeBackupPath:i}=VX(),c={nodeRestore:await new Promise((u,l)=>{xIe(`tar -zxvf "${i}" -C "${n}"`,d=>{d?l(d):u("success.")})})};if(e){let u=await du();c.nodeInfo=u}return c}a(uLt,"restoreNode");async function lLt(){let t=Di(),{channelBackupPath:e}=VX(),n=gIe.readFileSync(e).toString("hex");return{channelRestore:await t.restoreChannelBackups({multi_chan_backup:yy.from(n,"hex")})}}a(lLt,"restoreChannels");async function dLt(t){let{msg:e}=t;return await Di().signMessage({msg:yy.from(`${e}`)})}a(dLt,"signMessage");async function fLt(t){let{msg:e,signature:r}=t;return await Di().verifyMessage({msg:yy.from(`${e}`),signature:r})}a(fLt,"nstVerifyMessage");async function pLt(t){let{node_type:e,transaction_kind:r,status:n,direction:i,asset_type:s,page_index:o=1,page_size:c=20,asset_id:u}=t;return await G5t({transaction_kind:r,direction:i?/out/.test(i)?g1.OUT:g1.IN:"",node_type:e?/litd|lnd/.test(e)?m1.LITD:m1.RGB:"",asset_type:s,status:n,limit:c,offset:(o-1)*c,asset_id:u})}a(pLt,"getTransactions");async function _Lt(t){let{lnlinkUser:e}=t,{LINK_ENABLE_TOR:r}=vy(),n=new gc("lnd"),i=r,s={};e&&KP({nostrAddress:e?.npub,tag:VP.EnableTaprootAssetNode});let o=await $5t(i);if(s.linkStatus=o,await L5t(p0,[!1],"getWalletState",10,3e3,n)!==void 0){let u=await du();s.nodeInfo=u}return s}a(_Lt,"startLink");async function hLt(t){let e=new gc("lnd"),{enable:r,lnlinkUser:n}=t;if(r==null)throw new Error("enable parameter is required (true or false)");let i=r===!0||r==="true";e.info(`Toggling Tor mode to: ${i}, requested by: ${n?.npub||"unknown"}`);try{let{getMainLnlinkConfig:s,updateMainLnlinkConfig:o}=Sr(),u=(await s())?.settings||{},l={...u,enableTor:i},d=await o({settings:l});d!==1&&e.warn(`Database update returned: ${d}, proceeding anyway`);let{reloadConfig:f}=Ht(),{isServiceRunning:p,startService:_,stopService:h,stopTerminal:m,startTerminal:g}=gf(),{buildTorArgs:y}=AA(),E=await p("litd"),S=await p("rgb"),N=await p("tor");if(e.info(`Current status - Litd: ${E}, RGB: ${S}, Tor: ${N}`),!E&&!S){await f();try{if(i&&!N){e.info("Starting Tor service standalone (litd/rgb not running)...");let $=y();await _("tor",$),e.info("Tor service started successfully")}else!i&&N?(e.info("Stopping Tor service (litd/rgb not running)..."),await h("tor"),e.info("Tor service stopped successfully")):e.info("Tor already in desired state, no action needed");return{enable_tor:i,status:"ok",message:"Tor toggled without restarting services (litd/rgb not running)"}}catch($){e.error(`Failed to ${i?"start":"stop"} Tor service: ${$.message}`);let F={...u,enableTor:!i};throw await o({settings:F}),await f(),new Error(`Failed to ${i?"start":"stop"} Tor service: ${$.message}`)}}if(e.info("Stopping litd before config reload (to free ports)..."),await m({lnlinkUser:n,waitForStopped:!0}),!i&&N){e.info("Stopping Tor service (was running standalone)...");try{await h("tor"),e.info("Tor service stopped successfully")}catch($){e.warn(`Failed to stop Tor service: ${$.message}`)}}e.info("Reloading config after services stopped..."),await f(),e.info("Starting litd with new Tor configuration...");let C=await g({waitForRunning:!0}),R=await du();return e.info(`Tor mode toggled successfully. Tor enabled: ${i}`),{enable_tor:i,status:"ok",terminal_status:C,node_info:R}}catch(s){throw e.error(`Failed to toggle Tor: ${s.message}`),s}}a(hLt,"toggleTor");SIe.exports={startLink:_Lt,toggleTor:hLt,getWalletState:p0,sendPaymentSync:Q5t,createLnInvoice:Y5t,getNodeInfo:du,getNodeState:W5t,getChannelList:z5t,getOpenedChannelList:vIe,getPendingChannelList:X5t,getClosedChannelList:wIe,openChannel:Z5t,listPeers:eLt,decodePayReq:J5t,wrapperInitWallet:TIe,initWallet:iLt,genseed:nLt,isConnectPeer:UP,sendCoins:K5t,closeChannel:aLt,connectPeer:sLt,unlock:oLt,bakeNode:cLt,restoreNode:uLt,restoreChannels:lLt,bakeLoopMacaroon:rLt,signMessage:dLt,nstVerifyMessage:fLt,getCacheNodeInfo:EIe,getTransactions:pLt,newAddress:V5t}});var OIe=v((kHr,NIe)=>{var mLt=jH(),by=mLt.Router(),{getConfig:zX,reloadConfig:kIe}=Ht(),{getInfo:gLt,initConfig:yLt,updateNodeName:vLt}=DX(),{sendResponse:fu}=bi(),AIe=MX();by.get("/health",async(t,e)=>{try{let r={status:"healthy",timestamp:new Date().toISOString(),uptime:process.uptime(),memory:process.memoryUsage()};fu(e,200,"Server is healthy",r)}catch(r){fu(e,500,"Server health check failed",{error:r.message})}});by.post("/update-name",async(t,e)=>{try{let{nodeName:r}=t?.body,n=await vLt(r);await kIe(),fu(e,200,"lnlink node_name update success",n)}catch(r){fu(e,500,r.message,null)}});by.post("/init",async(t,e)=>{try{let{owner:r,settings:n,nodeName:i,enableTor:s}=t?.body,o=await yLt({owner:r,settings:n,nodeName:i,enableTor:s});await kIe();let{LINK_READY:c}=zX();if(c){let u=FX(),l=UX(),{isServiceRunning:d}=SX(),f=await d("litd"),p=await d("rgb");f||await u({waitForRunning:!1}),p||await l({waitForRunning:!1});let{LINK_ENABLE_TOR:_}=zX(),h=_===!0||_==="true",m=6e4,g=1e3,y=Date.now();for(;Date.now()-y<m;){let E=await d("tor"),S=await d("litd"),N=await d("rgb");if(S&&N&&(!h||E))break;if(S&&N&&h&&!E&&Date.now()-y>5e3){console.warn("[init] Tor is not running while litd and rgb are ready, skipping Tor wait");break}await new Promise($=>setTimeout($,g))}}AIe.emit("initAccount"),AIe.emit("listenNostrEvent"),fu(e,200,"lnlink config init success",o)}catch(r){fu(e,500,r.message,null)}});by.get("/info",async(t,e)=>{try{let{owner:r,nodeAddr:n,relayUri:i,linkStatus:s,settings:o,enableTor:c}=await gLt(),u={};s.forEach(d=>{u[d.service_name]=d.status});let{LINK_LNFI_NODE_SITE_URL:l}=zX();fu(e,200,"success",{owner:r,nodeAddr:n,relayUri:i,...u,manageUrl:`${l.replace(/\/#\/|\/#|\/$/,"")}/#/?owner=${r}&npub=${n}`,settings:o,enableTor:c})}catch(r){fu(e,500,r.message,null)}});by.get("/tor/check",async(t,e)=>{try{let o=function(l,d){return new Promise((f,p)=>{let _=new n.Socket;_.setTimeout(s),_.once("connect",()=>{_.destroy(),f({host:l,port:d,reachable:!0})}),_.once("timeout",()=>{_.destroy(),p(new Error(`timeout ${l}:${d}`))}),_.once("error",h=>{_.destroy(),p(new Error(`error ${l}:${d}: ${h.message}`))}),_.connect(d,l)})};var r=o;a(o,"tryConnect");let n=require("node:net"),i=[{host:"128.31.0.34",port:9131,name:"moria1"},{host:"193.23.244.244",port:443,name:"dannenberg"},{host:"199.58.81.140",port:80,name:"Faravahar"},{host:"86.59.21.38",port:443,name:"gabelmoo"}],s=5e3,c=!1,u=null;try{let l=await Promise.any(i.map(({host:d,port:f})=>o(d,f)));c=!0,u=`${l.host}:${l.port}`}catch{c=!1}fu(e,200,c?"Tor network is reachable":"Tor network is not reachable",{reachable:c,...u&&{connected_to:u}})}catch{fu(e,200,"Tor network check failed",{reachable:!1})}});by.post("/tor/toggle",async(t,e)=>{try{let{enable:r}=t?.body,{toggleTor:n}=_0(),i=await n({enable:r});fu(e,200,"Tor toggled successfully",i)}catch(r){fu(e,500,r.message,null)}});NIe.exports=by});var JX=v((OHr,CIe)=>{var{Buffer:IIe}=require("node:buffer"),bLt=require("node:crypto");function xLt(t,e){let r=bLt.createHash("sha256");r.update(t);let n=r.digest();if(e<n.length)return n.slice(0,e);if(e>n.length){let i=IIe.alloc(e-n.length);return IIe.concat([n,i])}return n}a(xLt,"stringToFixedBytes");CIe.exports={stringToFixedBytes:xLt}});var MIe=v((CHr,DIe)=>{var WX=BigInt(Number.MAX_SAFE_INTEGER),RIe=BigInt("9223372036854775807"),zP=BigInt("1000000000000000000000000000"),JP=zP,PIe=+"4102444800",QX=2147483647,LIe=RIe,XX=JP,BIe=QX,wLt={isUnlimited:a(t=>{if(!t)return!1;if(typeof t=="bigint")return t===XX||t===zP||t===JP;if(typeof t=="string"){let e=XX.toString(),r=zP.toString(),n=JP.toString();return t===e||t===r||t===n}return!1},"isUnlimited"),isNeverExpire:a(t=>t?t===BIe||t===LIe||t===PIe||t===QX:!1,"isNeverExpire"),isSafeInteger:a(t=>t<=WX&&t>=-WX,"isSafeInteger"),toDbString:a(t=>t?typeof t=="string"?t:typeof t=="bigint"?t.toString():String(t):null,"toDbString"),fromDbString:a(t=>{if(!t)return null;try{return BigInt(t)}catch(e){return console.warn(`Failed to convert string to BigInt: ${t} ${e.message}`),null}},"fromDbString"),toSafeString:a(t=>t?t.toString():null,"toSafeString"),fromString:a(t=>t?BigInt(t):null,"fromString"),formatLargeNumber:a(t=>{if(!t)return"0";let e=t.toString(),r=e.length;return r<=6?e:r<=9?`${(Number(e)/1e6).toFixed(1)}M`:r<=12?`${(Number(e)/1e9).toFixed(1)}B`:r<=15?`${(Number(e)/1e12).toFixed(1)}T`:Number(e).toExponential(2)},"formatLargeNumber"),createTokenAmount:a((t,e=18)=>{let r=BigInt(10)**BigInt(e);return BigInt(t)*r},"createTokenAmount")};DIe.exports={MAX_SAFE_INTEGER:WX,MAX_SQLITE_INTEGER:RIe,MAX_TOKEN_AMOUNT:zP,UNLIMITED_AUTH_LIMIT:JP,UNLIMITED_AMOUNT:XX,NEVER_EXPIRE_MAX:LIe,NEVER_EXPIRE_2100:PIe,NEVER_EXPIRE_2038:QX,NEVER_EXPIRE:BIe,BigIntUtils:wLt}});var HIe=v((PHr,qIe)=>{var{getMainLnlinkConfig:WP}=Sr(),{insertLnlinkUser:YX,getLNDOwner:ELt,getFlashRegister:TLt,getReadOnly:SLt}=Sr(),ZX=Ke(),{stringToFixedBytes:FIe}=JX(),{UNLIMITED_AMOUNT:ALt,NEVER_EXPIRE:eQ,BigIntUtils:kLt}=MIe(),{ACCOUNT_TYPE:tQ,FLASH_REGISTER_PERMISSIONS:NLt,OWNER_PERMISSIONS:OLt,READ_ONLY_PERMISSIONS:ILt}=ot(),rQ=eu(),{nip19:y1,getPublicKey:UIe}=oc();async function CLt(){let t=new ZX("init");try{if(!await ELt()){let r=await WP(),n="owner",{owner_npub:i,settings:s,node_npub:o}=r,c=s?.nostrRelays?s?.nostrRelays?.[0]:null;await YX({name:n,pubkey:y1.decode(i).data,sk:null,node_pubkey:y1.decode(o).data,relay:c,asset_id:null,account_type:tQ.OWNER,social_id:null,auth_limit:kLt.toDbString(ALt),permissions:JSON.stringify(OLt),create_at:rQ().unix(),expire_time:eQ,parent_pubkey:null})&&t.info(`init owner to DB owner ${i} init success.`)}}catch(e){t.error(`init owner error: ${e.message}`)}}a(CLt,"initOwner");async function RLt(){let t=new ZX("init");try{let e=await WP(),{node_npub:r,settings:n}=e,i=n?.nostrRelays?n?.nostrRelays?.[0]:null,s=FIe(`${r}`).toString("hex"),o=UIe(s),c=y1.npubEncode(o);await TLt()||await YX({name:"flash_register",pubkey:o,sk:s,node_pubkey:y1.decode(r).data,relay:i,asset_id:null,account_type:tQ.FLASH_REGISTER,social_id:null,social_type:null,auth_limit:"0",permissions:JSON.stringify(NLt),create_at:rQ().unix(),expire_time:eQ,parent_pubkey:null})&&t.info(`init flash_register to DB flash_register ${c} init success.`)}catch(e){t.error(`init flash_register error: ${e.message}`)}}a(RLt,"initFlashRegister");async function PLt(){let t=new ZX("init");try{let e=await WP(),{node_npub:r,settings:n}=e,i=n?.nostrRelays?n?.nostrRelays?.[0]:null,o=FIe(`${r}:lnlink_readonly_v1`).toString("hex"),c=UIe(o),u=y1.npubEncode(c);await SLt()||await YX({name:"readonly",pubkey:c,sk:o,node_pubkey:y1.decode(r).data,relay:i,asset_id:null,account_type:tQ.READ_ONLY,social_id:null,social_type:null,auth_limit:"0",permissions:JSON.stringify(ILt),create_at:rQ().unix(),expire_time:eQ,parent_pubkey:null})&&t.info(`init readonly to DB readonly ${u} init success.`)}catch(e){t.error(`init readonly error: ${e.message}`)}}a(PLt,"initReadOnly");async function LLt(){(await WP())?.owner_npub&&(await CLt(),await PLt(),await RLt())}a(LLt,"initAccount");qIe.exports={initAccount:LLt}});var $Ie=v((BHr,jIe)=>{jIe.exports=require("crypto").createHash});var zIe=v((DHr,KIe)=>{"use strict";var QP="qpzry9x8gf2tvdw0s3jn54khce6mua7l",nQ={};for(RA=0;RA<QP.length;RA++){if(XP=QP.charAt(RA),nQ[XP]!==void 0)throw new TypeError(XP+" is ambiguous");nQ[XP]=RA}var XP,RA;function v1(t){var e=t>>25;return(t&33554431)<<5^-(e>>0&1)&996825010^-(e>>1&1)&642813549^-(e>>2&1)&513874426^-(e>>3&1)&1027748829^-(e>>4&1)&705979059}a(v1,"polymodStep");function GIe(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=v1(e)^n>>5}for(e=v1(e),r=0;r<t.length;++r){var i=t.charCodeAt(r);e=v1(e)^i&31}return e}a(GIe,"prefixChk");function BLt(t,e,r){if(r=r||90,t.length+7+e.length>r)throw new TypeError("Exceeds length limit");t=t.toLowerCase();var n=GIe(t);if(typeof n=="string")throw new Error(n);for(var i=t+"1",s=0;s<e.length;++s){var o=e[s];if(o>>5!==0)throw new Error("Non 5-bit word");n=v1(n)^o,i+=QP.charAt(o)}for(s=0;s<6;++s)n=v1(n);for(n^=1,s=0;s<6;++s){var c=n>>(5-s)*5&31;i+=QP.charAt(c)}return i}a(BLt,"encode");function VIe(t,e){if(e=e||90,t.length<8)return t+" too short";if(t.length>e)return"Exceeds length limit";var r=t.toLowerCase(),n=t.toUpperCase();if(t!==r&&t!==n)return"Mixed-case string "+t;t=r;var i=t.lastIndexOf("1");if(i===-1)return"No separator character for "+t;if(i===0)return"Missing prefix for "+t;var s=t.slice(0,i),o=t.slice(i+1);if(o.length<6)return"Data too short";var c=GIe(s);if(typeof c=="string")return c;for(var u=[],l=0;l<o.length;++l){var d=o.charAt(l),f=nQ[d];if(f===void 0)return"Unknown character "+d;c=v1(c)^f,!(l+6>=o.length)&&u.push(f)}return c!==1?"Invalid checksum for "+t:{prefix:s,words:u}}a(VIe,"__decode");function DLt(){var t=VIe.apply(null,arguments);if(typeof t=="object")return t}a(DLt,"decodeUnsafe");function MLt(t){var e=VIe.apply(null,arguments);if(typeof e=="object")return e;throw new Error(e)}a(MLt,"decode");function YP(t,e,r,n){for(var i=0,s=0,o=(1<<r)-1,c=[],u=0;u<t.length;++u)for(i=i<<e|t[u],s+=e;s>=r;)s-=r,c.push(i>>s&o);if(n)s>0&&c.push(i<<r-s&o);else{if(s>=e)return"Excess padding";if(i<<r-s&o)return"Non-zero padding"}return c}a(YP,"convert");function FLt(t){var e=YP(t,8,5,!0);if(Array.isArray(e))return e}a(FLt,"toWordsUnsafe");function ULt(t){var e=YP(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)}a(ULt,"toWords");function qLt(t){var e=YP(t,5,8,!1);if(Array.isArray(e))return e}a(qLt,"fromWordsUnsafe");function HLt(t){var e=YP(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}a(HLt,"fromWords");KIe.exports={decodeUnsafe:DLt,decode:MLt,encode:BLt,toWordsUnsafe:FLt,toWords:ULt,fromWordsUnsafe:qLt,fromWords:HLt}});var u4e=v((FHr,c4e)=>{var QIe=require("fs"),Vp=require("path"),YIe=require("os"),ZIe=typeof __webpack_require__=="function"?__non_webpack_require__:require,jLt=process.config&&process.config.variables||{},$Lt=!!process.env.PREBUILDS_ONLY,JIe=process.versions.modules,iQ=KLt()?"electron":VLt()?"node-webkit":"node",aQ=process.env.npm_config_arch||YIe.arch(),sQ=process.env.npm_config_platform||YIe.platform(),e4e=process.env.LIBC||(zLt(sQ)?"musl":"glibc"),oQ=process.env.ARM_VERSION||(aQ==="arm64"?"8":jLt.arm_version)||"",t4e=(process.versions.uv||"").split(".")[0];c4e.exports=yf;function yf(t){return ZIe(yf.resolve(t))}a(yf,"load");yf.resolve=yf.path=function(t){t=Vp.resolve(t||".");try{var e=ZIe(Vp.join(t,"package.json")).name.toUpperCase().replace(/-/g,"_");process.env[e+"_PREBUILD"]&&(t=process.env[e+"_PREBUILD"])}catch{}if(!$Lt){var r=WIe(Vp.join(t,"build/Release"),XIe);if(r)return r;var n=WIe(Vp.join(t,"build/Debug"),XIe);if(n)return n}var i=c(t);if(i)return i;var s=c(Vp.dirname(process.execPath));if(s)return s;var o=["platform="+sQ,"arch="+aQ,"runtime="+iQ,"abi="+JIe,"uv="+t4e,oQ?"armv="+oQ:"","libc="+e4e,"node="+process.versions.node,process.versions.electron?"electron="+process.versions.electron:"",typeof __webpack_require__=="function"?"webpack=true":""].filter(Boolean).join(" ");throw new Error("No native build was found for "+o+`
2154
+ `).trim().includes("Listening on")&&(e.info("rgb is ready"),u(!0))}),d.on("error",f=>{e.error(`Start rgb failed: ${f?.message}`),l(f)}),d.stderr.on("data",f=>{let p=f.toString();e.error(`[rgb] ${p}`);let _=p.toLowerCase();(_.includes("fatal")||_.includes("cannot")||_.includes("failed to start")||_.includes("address already in use")||_.includes("address in use"))&&l(new Error(`Start rgb failed: ${p}`))})})}a(pPt,"startRgbService");function bX(t,e,r=1e4){let n=new Gp("processManager"),i=!1,s=null,o=t;return new Promise(c=>{let u=a(l=>{i||(i=!0,s&&clearTimeout(s),c(l))},"safeResolve");t.kill("SIGTERM"),t.on("exit",l=>{n.info(`${e} exited with code ${l}`),Bl(e)?.process===o&&hf(e,null),u(!0)}),s=setTimeout(()=>{let d=Bl(e)?.process;d&&d===o&&(n.info(`${e} did not exit in time, forcing shutdown...`),d.kill("SIGKILL"),hf(e,null)),u(!0)},r)})}a(bX,"killProcess");async function M3e(t,e){let r=new Gp("processManager");try{let n=t.split(/[/\\]/).pop().replace(".exe","");r.info(`Looking for ${e} processes matching: ${n}`);let i=await wP("name",n);if(i.length===0)return r.info(`No ${e} processes found`),!1;let s=i.map(c=>c.pid);r.info(`Found ${s.length} ${e} process(es): ${s.join(", ")}`),s.forEach(c=>EP(c,!1)),await D3e(500);let o=await wP("name",n);return o.length>0&&(r.warn(`${o.length} ${e} process(es) still running, force killing...`),o.forEach(c=>EP(c.pid,!0))),r.info(`${e} processes terminated successfully`),!0}catch(n){return r.error(`Failed to find and kill ${e} processes: ${n.message}`),!1}}a(M3e,"findAndKillProcess");async function F3e(){let t=new Gp("processManager");if(d1())return t.info("External nodes mode: skipping litd stop (managed externally)"),!0;let e=Bl("litd");if(!e)throw new Error("litd service not found");let r=e.process;return r&&!r.killed&&r.exitCode===null?(t.info("Stopping litd via SIGTERM..."),await bX(r,"litd",5e3)):(t.info("litd process already exited, cleaning up..."),hf("litd",null),await M3e(e.command,"litd"))}a(F3e,"stopLitdService");async function U3e(){let t=new Gp("processManager");if(d1())return t.info("External nodes mode: skipping Tor stop (managed externally)"),!0;let e=Bl("tor");if(!e)throw new Error("tor service not found");if(e.process)return await bX(e.process,"tor",5e3);try{let r=e.command;t.info(`Looking for tor processes matching binary: ${r}`);let n=a(d=>d.replace(/\\/g,"/").toLowerCase(),"normalizePath"),i=n(r),o=(await wP("name","tor")).filter(d=>d.cmd&&n(d.cmd).startsWith(i));if(o.length===0)return t.info("No tor processes found matching our binary path"),!1;let c=o.map(d=>d.pid);t.info(`Found ${c.length} tor process(es): ${c.join(", ")}`),c.forEach(d=>EP(d,!1)),await D3e(500);let l=(await wP("name","tor")).filter(d=>d.cmd&&n(d.cmd).startsWith(i));return l.length>0&&(t.warn(`${l.length} tor process(es) still running, force killing...`),l.forEach(d=>EP(d.pid,!0))),hf("tor",null),t.info("Tor processes terminated successfully"),!0}catch(r){return t.error(`Failed to find and kill tor processes: ${r.message}`),!1}}a(U3e,"stopTorService");async function q3e(){let t=new Gp("processManager");if(d1())return t.info("External nodes mode: skipping RGB stop (managed externally)"),!0;let e=Bl("rgb");if(!e)throw new Error("rgb service not found");return e.process?(t.info("Stopping RGB via tracked process..."),await bX(e.process,"rgb",5e3)):(t.info("No tracked RGB process, falling back to system scan..."),await M3e("rgb-lightning-node","rgb"))}a(q3e,"stopRgbService");async function _Pt(t){switch(t){case"litd":return await F3e();case"tor":return await U3e();case"rgb":return await q3e();default:throw new Error(`Unknown service: ${t}`)}}a(_Pt,"stopService");async function hPt(t,e){switch(t){case"litd":return await dPt(e);case"tor":return await fPt(e);case"rgb":return await pPt(e);default:throw new Error(`Unknown service: ${t}`)}}a(hPt,"startService");function mPt(){let t=TP();return{litd:{hasProcess:!!t.litd?.process,command:t.litd?.command},tor:{hasProcess:!!t.tor?.process,command:t.tor?.command},rgb:{hasProcess:!!t.rgb?.process,command:t.rgb?.command}}}a(mPt,"getServicesState");function gPt(){let t=TP();return{litd:t.litd?.process?.pid||null,tor:t.tor?.process?.pid||null,rgb:t.rgb?.process?.pid||null}}a(gPt,"getServicePids");H3e.exports={startService:hPt,stopService:_Pt,stopLitdService:F3e,stopTorService:U3e,stopRgbService:q3e,getServicesState:mPt,getServicePids:gPt,setShuttingDown:lPt}});var $3e=v(mf=>{"use strict";Object.defineProperties(mf,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var yPt=uX(),AP=class{static{a(this,"R")}constructor(e){this.client=e}async getAddress(){return this.client._request("post","/address")}async getBtcBalance(e={}){return this.client._request("post","/btcbalance",{skip_sync:!1,...e})}async sendBtc(e){return this.client._request("post","/sendbtc",e)}async createUtxos(e={}){return this.client._request("post","/createutxos",{fee_rate:2,skip_sync:!1,...e})}async estimateFee(e){return this.client._request("post","/estimatefee",e)}async listOnchainTransactions(e={}){return this.client._request("post","/listtransactions",{skip_sync:!1,...e})}async listUnspents(e={}){return this.client._request("post","/listunspents",{skip_sync:!1,...e})}},kP=class{static{a(this,"N")}constructor(e){this.client=e,this.rgbTransactionSubscriptions=new Map,this.rgbTransactionPollingIntervals=new Map}async getAssetBalance(e){return this.client._request("post","/assetbalance",e)}async getAssetMetadata(e){return this.client._request("post","/assetmetadata",e)}async assetIdFromHexBytes(e){return this.client._request("post","/assetidfromhexbytes",e)}async assetIdToHexBytes(e){return this.client._request("post","/assetidtohexbytes",e)}async listAssets(e={}){let r={filter_asset_schemas:e.filter_asset_schemas};return this.client._request("post","/listassets",r)}async listTransactions(e={skip_sync:!1}){return this.client._request("post","/listtransactions",e)}async listTransfers(e){return this.client._request("post","/listtransfers",{asset_id:e})}async issueAssetCfa(e){return this.client._request("post","/issueassetcfa",e)}async issueAssetNia(e){return this.client._request("post","/issueassetnia",e)}async issueAssetUda(e){return this.client._request("post","/issueassetuda",e)}async sendAsset(e){let{asset_id:r,amount:n,recipient_id:i,transport_endpoints:s,recipient_map:o,donation:c,fee_rate:u,min_confirmations:l,expiration_timestamp:d,skip_sync:f}=e,p=o||{[r]:[{recipient_id:i,assignment:{type:"Fungible",value:n},transport_endpoints:s||[]}]};return this.client._request("post","/sendrgb",{donation:c||!1,fee_rate:u,min_confirmations:l||1,skip_sync:f||!1,...d!=null?{expiration_timestamp:d}:{},recipient_map:p})}async createRgbInvoice(e){let r={asset_id:e.asset_id,expiration_timestamp:e.expiration_timestamp??null,min_confirmations:e.min_confirmations,witness:e.witness||!1,...e.assignment!=null?{assignment:e.assignment}:{}};return this.client._request("post","/rgbinvoice",r)}async payRgbInvoice(e){var r;let n=await this.decodeRgbInvoice({invoice:e.invoice}),i={recipient_id:n.recipient_id,asset_id:e.asset_id||n.asset_id,amount:e.amount||((r=n?.assignment)==null?void 0:r.value),fee_rate:e.fee_rate,skip_sync:e.skip_sync,donation:e.donation||!1,min_confirmations:e.min_confirmations||1,transport_endpoints:e.transport_endpoints||n.transport_endpoints||[]};return this.sendAsset(i)}async decodeRgbInvoice(e){return this.client._request("post","/decodergbinvoice",e)}async failTransfers(e={}){return this.client._request("post","/failtransfers",{no_asset_only:!1,skip_sync:!1,...e})}async getAssetMedia(e){return this.client._request("post","/getassetmedia",e)}async refreshTransfers(e={}){let r={skip_sync:e.skip_sync};return this.client._request("post","/refreshtransfers",r)}async syncRgbWallet(){return this.client._request("post","/sync",{})}async postAssetMedia(e){let r=new FormData;return r.append("file",e.file),this.client._request("post","/postassetmedia",r)}subscribeToRgbTransactions(e){let{onTransaction:r,onError:n,pollingInterval:i=5e3,maxStoredIds:s=1e3,skipInitialFetch:o=!1}=e;if(!r||typeof r!="function")throw new Error("onTransaction callback is required and must be a function");i<1e3&&console.warn("Warning: Polling interval less than 1000ms may cause performance issues");let c=`rgb-tx-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,u=Date.now(),l=new Set,d=new Map,f=a(g=>typeof g=="string"?new Date(g).getTime():g||0,"p"),p=a(()=>{l.size<=s||[...d.entries()].sort((g,y)=>g[1]-y[1]).map(g=>g[0]).slice(0,l.size-s).forEach(g=>{l.delete(g),d.delete(g)})},"f");o||this.listTransactions().then(g=>{g&&g.transfers&&Array.isArray(g.transfers)&&(g.transfers.forEach(y=>{l.add(y.idx),d.set(y.idx,f(y.created_at))}),p())}).catch(g=>{n&&typeof n=="function"&&n(g)});let _=i,h=0,m=setInterval(async()=>{try{let g=await this.listTransactions();if(g&&g.transfers&&Array.isArray(g.transfers)){let y=g.transfers.filter(E=>{if(!l.has(E.idx))return l.add(E.idx),d.set(E.idx,f(E.created_at)),!0;let S=f(E.created_at);return l.has(E.idx)&&S>(d.get(E.idx)||0)?(d.set(E.idx,S),!0):!1});if(g.transfers.length>0){let E=Math.max(...g.transfers.map(S=>f(S.created_at)));u=Math.max(u,E)}if(p(),y.length>0)y.forEach(E=>{r(E)}),h=0;else if(h++,h>5){let E=Math.min(i*3,i*(1+h/10));if(E!==_){_=E,clearInterval(m);let S=setInterval(m.callback,_);this.rgbTransactionPollingIntervals.set(c,S)}}}}catch(g){n&&typeof n=="function"&&n(g)}},i);return m.callback=m._onTimeout,this.rgbTransactionSubscriptions.set(c,{onTransaction:r,onError:n,pollingInterval:i,currentPollingInterval:_,maxStoredIds:s}),this.rgbTransactionPollingIntervals.set(c,m),c}unsubscribeFromRgbTransactions(e){if(!this.rgbTransactionSubscriptions.has(e))return!1;let r=this.rgbTransactionPollingIntervals.get(e);return r&&(clearInterval(r),this.rgbTransactionPollingIntervals.delete(e)),this.rgbTransactionSubscriptions.delete(e),!0}async issueAssetIfa(e){return this.client._request("post","/issueassetifa",e)}async inflate(e){return this.client._request("post","/inflate",e)}},my={},j3e;function vPt(){if(j3e)return my;j3e=1,Object.defineProperty(my,"__esModule",{value:!0}),my.bech32m=my.bech32=void 0;let t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={};for(let l=0;l<t.length;l++){let d=t.charAt(l);e[d]=l}function r(l){let d=l>>25;return(l&33554431)<<5^-(d>>0&1)&996825010^-(d>>1&1)&642813549^-(d>>2&1)&513874426^-(d>>3&1)&1027748829^-(d>>4&1)&705979059}a(r,"t");function n(l){let d=1;for(let f=0;f<l.length;++f){let p=l.charCodeAt(f);if(p<33||p>126)return"Invalid prefix ("+l+")";d=r(d)^p>>5}d=r(d);for(let f=0;f<l.length;++f){let p=l.charCodeAt(f);d=r(d)^p&31}return d}a(n,"r");function i(l,d,f,p){let _=0,h=0,m=(1<<f)-1,g=[];for(let y=0;y<l.length;++y)for(_=_<<d|l[y],h+=d;h>=f;)h-=f,g.push(_>>h&m);if(p)h>0&&g.push(_<<f-h&m);else{if(h>=d)return"Excess padding";if(_<<f-h&m)return"Non-zero padding"}return g}a(i,"c");function s(l){return i(l,8,5,!0)}a(s,"u");function o(l){let d=i(l,5,8,!1);if(Array.isArray(d))return d}a(o,"d");function c(l){let d=i(l,5,8,!1);if(Array.isArray(d))return d;throw new Error(d)}a(c,"m");function u(l){let d;l==="bech32"?d=1:d=734539939;function f(m,g,y){if(y=y||90,m.length+7+g.length>y)throw new TypeError("Exceeds length limit");m=m.toLowerCase();let E=n(m);if(typeof E=="string")throw new Error(E);let S=m+"1";for(let N=0;N<g.length;++N){let C=g[N];if(C>>5!==0)throw new Error("Non 5-bit word");E=r(E)^C,S+=t.charAt(C)}for(let N=0;N<6;++N)E=r(E);E^=d;for(let N=0;N<6;++N){let C=E>>(5-N)*5&31;S+=t.charAt(C)}return S}a(f,"p");function p(m,g){if(g=g||90,m.length<8)return m+" too short";if(m.length>g)return"Exceeds length limit";let y=m.toLowerCase(),E=m.toUpperCase();if(m!==y&&m!==E)return"Mixed-case string "+m;m=y;let S=m.lastIndexOf("1");if(S===-1)return"No separator character for "+m;if(S===0)return"Missing prefix for "+m;let N=m.slice(0,S),C=m.slice(S+1);if(C.length<6)return"Data too short";let R=n(N);if(typeof R=="string")return R;let $=[];for(let F=0;F<C.length;++F){let U=C.charAt(F),B=e[U];if(B===void 0)return"Unknown character "+U;R=r(R)^B,!(F+6>=C.length)&&$.push(B)}return R!==d?"Invalid checksum for "+m:{prefix:N,words:$}}a(p,"f");function _(m,g){let y=p(m,g);if(typeof y=="object")return y}a(_,"g");function h(m,g){let y=p(m,g);if(typeof y=="object")return y;throw new Error(y)}return a(h,"y"),{decodeUnsafe:_,decode:h,encode:f,toWords:s,fromWordsUnsafe:o,fromWords:c}}return a(u,"_"),my.bech32=u("bech32"),my.bech32m=u("bech32m"),my}a(vPt,"B");var bPt=vPt(),xPt=1,wPt=13,EPt=19,TPt=23,SPt=6,APt=24,kPt=16,NPt=27,OPt=5,IPt=30,CPt=31,RPt={bc:"Mainnet",tb:"Testnet",bcrt:"Regtest",sb:"Signet",tbs:"Signet"},PPt={m:.001,u:1e-6,n:1e-9,p:1e-12};function SP(t){let e=0;for(let r of t)e=e*32+r;return e}a(SP,"x");function l0(t){let e=[],r=0,n=0;for(let i of t)for(r=r<<5|i,n+=5;n>=8;)e.push(r>>>n-8&255),n-=8;return new Uint8Array(e)}a(l0,"k");function f1(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}a(f1,"q");function LPt(t){let e=t.match(/^ln([a-z]+)(\d*)([munp]?)$/);if(!e)throw new Error("Invalid HRP format");let[,r,n,i]=e;return{currency:r,amount:n?parseInt(n):null,siPrefix:i||null,network:RPt[r]||"Unknown"}}a(LPt,"te");function BPt(t){let e={},r=0;for(;r<t.length;){if(r+3>t.length)throw new Error("Unexpected end of tagged fields");let n=t[r],i=t[r+1]<<5|t[r+2];if(r+=3,r+i>t.length)throw new Error("Tagged field length exceeds remaining data");let s=t.slice(r,r+i);r+=i;try{switch(n){case xPt:s.length===52&&(e.paymentHash=f1(l0(s)));break;case wPt:let o=l0(s);e.description=new TextDecoder().decode(o);break;case EPt:s.length===53&&(e.payeePubkey=f1(l0(s)));break;case TPt:s.length===52&&(e.descriptionHash=f1(l0(s)));break;case SPt:e.expiryTime=SP(s);break;case APt:e.minFinalCltvExpiryDelta=SP(s);break;case kPt:s.length===52&&(e.paymentSecret=f1(l0(s)));break;case NPt:e.paymentMetadata=f1(l0(s));break;case OPt:e.features=f1(l0(s));break;case IPt:e.rgbAmount=SP(s);break;case CPt:let c=l0(s);e.rgbContractId=new TextDecoder().decode(c);break;default:break}}catch{continue}}return e}a(BPt,"se");function DPt(t){try{let e=bPt.bech32.decode(t,2e3),{prefix:r,words:n}=e,i=LPt(r);if(n.length<111)throw new Error("Invoice data too short");let s=n.slice(0,7),o=SP(s),c=n.slice(7,n.length-104),u=BPt(c),l=null;if(i.amount!==null){let p=i.amount;i.siPrefix&&PPt[i.siPrefix]?i.siPrefix==="u"?l=p*1e5:i.siPrefix==="m"?l=p*1e8:i.siPrefix==="n"?l=p*100:i.siPrefix==="p"&&(l=Math.floor(p/10)):l=Math.floor(p/10)}let d=u.expiryTime||3600,f=null;return u.rgbContractId&&(f=u.rgbContractId),{amt_msat:l,expiry_sec:d,timestamp:o,asset_id:f,asset_amount:u.rgbAmount||null,payment_hash:u.paymentHash||null,payment_secret:u.paymentSecret||null,payee_pubkey:u.payeePubkey||null,network:i.network}}catch(e){throw new Error(`Failed to decode Lightning invoice: ${e.message}`)}}a(DPt,"ne");var NP=class{static{a(this,"D")}constructor(e){this.client=e,this.paymentSubscriptions=new Map,this.paymentPollingIntervals=new Map}async connectPeer(e){return this.client._request("post","/connectpeer",e)}async listPeers(){return this.client._request("get","/listpeers")}async disconnectPeer(e){return this.client._request("post","/disconnectpeer",e)}async openChannel(e){return this.client._request("post","/openchannel",e)}async closeChannel(e){return this.client._request("post","/closechannel",e)}async listChannels(){return this.client._request("get","/listchannels")}async getChannelIdByTempId(e){return this.client._request("post","/getchannelid",e)}async createInvoice(e){return this.client._request("post","/lninvoice",e)}async createHodlInvoice(e){if(!e||!e.payment_hash)throw new Error("payment_hash is required for HODL invoice");if(e.preimage)throw new Error("preimage must not be provided for HODL invoice (mutually exclusive with payment_hash)");return this.client._request("post","/lninvoice",e)}async payInvoice(e){return this.client._request("post","/sendpayment",e)}async decodeLnInvoice(e){return this.client._request("post","/decodelninvoice",e)}async getInvoiceStatus(e){return this.client._request("post","/invoicestatus",e)}async getPayment(e){return this.client._request("post","/getpayment",e)}async listPayments(){return this.client._request("get","/listpayments")}async keysend(e){return this.client._request("post","/keysend",e)}subscribeToPastPayments(e){let{onPayment:r,onError:n,pollingInterval:i=5e3,maxStoredIds:s=1e3,skipInitialFetch:o=!1}=e;if(!r||typeof r!="function")throw new Error("onPayment callback is required and must be a function");i<1e3&&console.warn("Warning: Polling interval less than 1000ms may cause performance issues");let c=`payment-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,u=Date.now(),l=new Set,d=new Map,f=a(()=>{l.size<=s||[...d.entries()].sort((m,g)=>m[1]-g[1]).map(m=>m[0]).slice(0,l.size-s).forEach(m=>{l.delete(m),d.delete(m)})},"p");o||this.listPayments().then(m=>{m&&m.payments&&Array.isArray(m.payments)&&(m.payments.forEach(g=>{l.add(g.payment_hash),d.set(g.payment_hash,g.created_at||Date.now())}),f())}).catch(m=>{n&&typeof n=="function"&&n(m)});let p=i,_=0,h=setInterval(async()=>{try{let m=await this.listPayments();if(m&&m.payments&&Array.isArray(m.payments)){let g=m.payments.filter(y=>l.has(y.payment_hash)?l.has(y.payment_hash)&&y.updated_at>(d.get(y.payment_hash)||0)?(d.set(y.payment_hash,y.updated_at||Date.now()),!0):!1:(l.add(y.payment_hash),d.set(y.payment_hash,y.created_at||Date.now()),!0));if(m.payments.length>0){let y=Math.max(...m.payments.map(E=>E.updated_at||0));u=Math.max(u,y)}if(f(),g.length>0)g.forEach(y=>{r(y)}),_=0;else if(_++,_>5){let y=Math.min(i*3,i*(1+_/10));if(y!==p){p=y,clearInterval(h);let E=setInterval(h.callback,p);this.paymentPollingIntervals.set(c,E)}}}}catch(m){n&&typeof n=="function"&&n(m)}},i);return h.callback=h._onTimeout,this.paymentSubscriptions.set(c,{onPayment:r,onError:n,pollingInterval:i,currentPollingInterval:p,maxStoredIds:s}),this.paymentPollingIntervals.set(c,h),c}unsubscribeFromPayments(e){if(!this.paymentSubscriptions.has(e))return!1;let r=this.paymentPollingIntervals.get(e);return r&&(clearInterval(r),this.paymentPollingIntervals.delete(e)),this.paymentSubscriptions.delete(e),!0}decodeRGBLNInvoice(e){return DPt(e)}},OP=class{static{a(this,"C")}constructor(e){this.client=e}async makerInitSwap(e){return this.client._request("post","/makerinit",e)}async makerExecuteSwap(e){return this.client._request("post","/makerexecute",e)}async takerAcceptSwap(e){return this.client._request("post","/taker",e)}async getSwap(e){return this.client._request("post","/getswap",e)}async listSwaps(){return this.client._request("get","/listswaps")}},IP=class{static{a(this,"U")}constructor(e){this.client=e}async getNodeInfo(){return this.client._request("get","/nodeinfo")}async getNodeState(){try{let e=await this.client._request("get","/nodestate");return e?.state}catch(e){if(e.message.includes("Network Error"))return"NonExisting";throw e}}async getNetworkInfo(){return this.client._request("get","/networkinfo")}async checkIndexerUrl(e){return this.client._request("post","/checkindexerurl",e)}async checkProxyEndpoint(e){return this.client._request("post","/checkproxyendpoint",e)}async sendOnionMessage(e){return this.client._request("post","/sendonionmessage",e)}async signMessage(e){return this.client._request("post","/signmessage",e)}async initNode(e){return this.client._request("post","/init",e)}async unlockNode(e){return this.client._request("post","/unlock",e)}async lockNode(){return this.client._request("post","/lock")}async changePassword(e){return this.client._request("post","/changepassword",e)}async backupNode(e){return this.client._request("post","/backup",e)}async restoreNode(e){return this.client._request("post","/restore",e)}async revokeToken(e){return this.client._request("post","/revoketoken",e)}async shutdown(){return this.client._request("post","/shutdown")}},CP=class{static{a(this,"G")}constructor(e){this.client=e}async listWebhooks(){return this.client._request("get","/webhook/list")}async subscribeWebhook(e){return this.client._request("post","/webhook/subscribe",e)}async unsubscribeWebhook(e){return this.client._request("post","/webhook/unsubscribe",e)}},RP=class{static{a(this,"H")}constructor(e={},r=null){let n={};typeof e=="string"?(n.baseUrl=e,r&&(n.headers={Authorization:`Bearer ${r}`})):n=e,this.baseUrl=n.baseUrl||"http://localhost:3001",this.axios=yPt.create({baseURL:this.baseUrl,headers:{"Content-Type":"application/json",...n.headers},...n.axiosConfig}),this.onchain=new AP(this),this.rgb=new kP(this),this.lightning=new NP(this),this.swaps=new OP(this),this.node=new IP(this),this.webhook=new CP(this)}async _request(e,r,n=null){var i,s;try{let o={method:e,url:r};return n!==null&&(e==="post"||e==="put"||e==="patch")?o.data=n:n!==null&&e==="get"&&(o.params=n),(await this.axios.request(o)).data}catch(o){if(o.response){let c=((i=o.response.data)==null?void 0:i.message)||((s=o.response.data)==null?void 0:s.error)||o.response.statusText;throw new Error(`API Error (${o.response.status}): ${c}`)}else throw o.request?new Error(`Network Error: Unable to reach RGB API at ${this.baseUrl}`):new Error(`Request Error: ${o.message}`)}}};mf.LightningMethods=NP;mf.NodeMethods=IP;mf.OnchainMethods=AP;mf.RgbApiClient=RP;mf.RgbMethods=kP;mf.SwapMethods=OP;mf.WebhookMethods=CP;mf.default=RP});var gy=v((oHr,G3e)=>{var{getConfig:MPt}=Ht(),{RgbApiClient:FPt}=$3e(),xX=null;function UPt(){if(!xX){let t=MPt();if(!t.LINK_RGB_LISTENING_PORT)throw new Error("RGB configuration not available");xX=new FPt({baseUrl:`http://127.0.0.1:${t.LINK_RGB_LISTENING_PORT}`})}return xX}a(UPt,"getRgbClient");G3e.exports=UPt});var CA=v((uHr,z3e)=>{var{checkObjectArgs:V3e}=Wi(),{getConfig:qPt}=Ht(),{decryptNostrString:PP}=Sr(),{getConfigFilePath:K3e}=u2(),{TASKS:HPt}=ot(),{reportTaskCompletion:jPt}=$p(),p1=gy();async function wX(){let t=await p1().node.getNodeState(),e={};switch(t){case"None":e.state=0;break;case"Locked":e.state=1;break;case"Changing":e.state=3;break;case"Running":e.state=4;break;case"NonExisting":e.state=255;break;default:e.state=0}return e}a(wX,"getNodeState");async function $Pt(){return(await p1().rgb.listAssets({filter_asset_schemas:[]}))?.nia??[]}a($Pt,"getRGBAssetsList");async function GPt({password:t}){if(!t)throw new Error("password is required");let e=p1(),r=await PP(t);return await e.node.initNode({password:r})}a(GPt,"genSeed");async function VPt({password:t,lnlinkUser:e}){if(!t)throw new Error("password is required");let r=p1(),{LINK_BITCOIND_RPCHOST:n,LINK_BITCOIND_RPCUSER:i,LINK_BITCOIND_RPCPASS:s,LINK_RGB_LDK_PEER_LISTENING_PORT:o=9735,LINK_NAME:c,LINK_RGB_ELECTRS_HOST:u,LINK_RGB_PROXY_ENDPOINT:l}=qPt(),d=await PP(t),f=n?.split(":")[0],p=Number(n?.split(":")[1]),_={bitcoind_rpc_username:i,bitcoind_rpc_password:s,bitcoind_rpc_host:f,bitcoind_rpc_port:p,indexer_url:u,proxy_endpoint:l,password:d,announce_addresses:[`0.0.0.0:${o}`],announce_alias:`${c}`};return e&&jPt({nostrAddress:e?.npub,tag:HPt.EnableRGBNode}),r.node.unlockNode(_).then(()=>{}).catch(m=>console.error("[rgb] unlockNode background error:",m.message)),Ks().set("rgbState",3),{state:3,message:"Unlock submitted, syncing..."}}a(VPt,"unlockNode");async function KPt({password:t}){let{rgbBackupPath:e}=K3e(),r={password:t,backup_path:e},n=p1();V3e(r,["password","backup_path"]),(await wX()).state===4&&await n.node.lockNode();let s=await PP(t);return r.password=s,await n.node.backupNode(r)||!0}a(KPt,"backupNode");async function zPt({password:t}){let{rgbBackupPath:e}=K3e(),r={password:t,backup_path:e},n=p1();(await wX()).state===4&&await n.node.lockNode(),V3e(r,["password","backup_path"]);let s=await PP(t);return r.password=s,await n.node.restoreNode(r)||!0}a(zPt,"restoreNode");z3e.exports={getNodeState:wX,genSeed:GPt,unlockNode:VPt,backupNode:KPt,restoreNode:zPt,getRGBAssetsList:$Pt}});var SX=v((dHr,Q3e)=>{var EX=mX().default,{getWalletState:JPt}=Wi(),{getConfig:TX}=Ht(),f0=Ke(),{getNodeState:WPt}=CA(),{getServiceConfig:J3e}=AA(),{getServicesState:XPt}=IA(),LP=a(t=>t?t.replace(/\\/g,"/"):"","normalizePath");function W3e(){let t=TX();return t.LINK_EXTERNAL_NODES==="true"||t.LINK_EXTERNAL_NODES===!0}a(W3e,"isExternalNodesMode");var Ln={RUNNING:"Running",STOPPED:"Stopped"};async function QPt(){let t=new f0("statusChecker");try{return XPt()?.tor?.hasProcess?Ln.RUNNING:Ln.STOPPED}catch(e){return t.error(`Error checking tor process: ${e.message}`),Ln.STOPPED}}a(QPt,"checkTorProcess");async function YPt(){let t=new f0("statusChecker");try{if(W3e()){t.info("External nodes mode: checking litd via RPC...");try{let i=await JPt();if(i!=null)return t.info(`Litd is running (wallet state: ${i})`),Ln.RUNNING}catch(i){t.warn(`RPC check failed: ${i.message}`)}return Ln.STOPPED}let{LINK_DATA_PATH:e}=TX(),r=await EX("name","litd");if(!e)return r.length>0?(t.warn("LINK_DATA_PATH not set, cannot filter litd by ownership. Returning RUNNING based on process name match."),Ln.RUNNING):Ln.STOPPED;let n=`${e}/.litd`;if(r.length>0){let i=LP(n),s=r.find(o=>o.cmd&&LP(o.cmd).includes(i));return s?(t.info(`Found lnlink litd process: PID ${s.pid}`),Ln.RUNNING):(t.debug(`Found ${r.length} litd process(es), but none belong to lnlink (data dir: ${n})`),Ln.STOPPED)}return Ln.STOPPED}catch(e){return t.warn(`Failed to check litd process: ${e.message}`),Ln.STOPPED}}a(YPt,"checkLitdProcess");async function X3e(){let t=new f0("statusChecker");try{if(W3e()){t.info("External nodes mode: checking RGB via SDK...");try{let i=await WPt();if(i!=null)return t.info("RGB is running (node state received)"),Ln.RUNNING}catch(i){t.warn(`RGB SDK check failed: ${i.message}`)}return Ln.STOPPED}let{LINK_DATA_PATH:e}=TX(),r=await EX("name","rgb-lightning-node");if(!e)return r.length>0?(t.warn("LINK_DATA_PATH not set, cannot filter RGB by ownership. Returning RUNNING based on process name match."),Ln.RUNNING):Ln.STOPPED;let n=`${e}/.rgb`;if(r.length>0){let i=LP(n),s=r.find(o=>o.cmd&&LP(o.cmd).includes(i));return s?(t.info(`Found lnlink RGB process: PID ${s.pid}`),Ln.RUNNING):(t.debug(`Found ${r.length} rgb-lightning-node process(es), but none belong to lnlink (data dir: ${n})`),Ln.STOPPED)}return Ln.STOPPED}catch(e){return t.warn(`Failed to check rgb process: ${e.message}`),Ln.STOPPED}}a(X3e,"checkRgbProcess");async function BP(t){let e=new f0("statusChecker");try{let r=J3e();if(!r[t])throw new Error(`${t} does not exist.`);switch(t){case"tor":return await QPt();case"litd":return await YPt();case"rgb":return await X3e();default:{let i=r[t].command.split(/[/\\]/).pop().replace(".exe","");return(await EX("name",i)).length>0?Ln.RUNNING:Ln.STOPPED}}}catch(r){throw e.error(`Error checking ${t} process: ${r.message}`),r}}a(BP,"checkProcess");var d0={data:null,timestamp:0,TTL_MS:5e3};async function ZPt(t=""){let e=new f0("statusChecker");if(!t&&d0.data){let o=Date.now()-d0.timestamp;if(o<d0.TTL_MS)return e.debug(`getTerminalStatus: returning cached result (age: ${o}ms)`),[...d0.data]}let r=J3e(),n=a(o=>o!=="rgb"&&(!t||o.includes(t)),"shouldInclude"),i=Object.keys(r).filter(n),s=await Promise.all(i.map(async o=>{try{let c=await BP(o);return{service_name:o,status:c}}catch(c){return e.error(`Error checking ${o} status: ${c.message}`),{service_name:o,status:Ln.STOPPED,error:c.message}}}));return t||(d0.data=s,d0.timestamp=Date.now()),s}a(ZPt,"getTerminalStatus");function e5t(){d0.data=null,d0.timestamp=0}a(e5t,"invalidateTerminalStatusCache");async function t5t(){let t=new f0("statusChecker");try{return{service_name:"rgb",status:await X3e()}}catch(e){return t.error(`Error checking rgb status: ${e.message}`),{service_name:"rgb",status:Ln.STOPPED,error:e.message}}}a(t5t,"getRGBStatus");async function r5t(t){let e=new f0("statusChecker");try{return await BP(t)===Ln.RUNNING}catch(r){return e.error(`Error checking if ${t} is running: ${r.message}`),!1}}a(r5t,"isServiceRunning");function n5t(t,e,r=3e4,n=1e3){let i=new f0("statusChecker");return new Promise(s=>{let o=Date.now(),c=a(async()=>{try{if(await BP(t)===e){s(!0);return}}catch(u){i.error(`Error waiting for ${t} status: ${u.message}`)}if(Date.now()-o>=r){i.warn(`Timeout waiting for ${t} to reach status: ${e}`),s(!1);return}setTimeout(c,n)},"checkStatus");c()})}a(n5t,"waitForServiceStatus");Q3e.exports={ServiceStatus:Ln,checkProcess:BP,getRGBStatus:t5t,getTerminalStatus:ZPt,invalidateTerminalStatusCache:e5t,isServiceRunning:r5t,waitForServiceStatus:n5t}});var gf=v((pHr,sIe)=>{var{getConfig:Y3e,reloadConfig:i5t}=Ht(),{TASKS:CX}=ot(),Dl=Ke(),{sleep:Z3e}=l2(),{updateMainLnlinkConfig:a5t}=Sr(),{reportTaskCompletion:RX}=$p(),{buildLitdArgs:s5t,buildTorArgs:o5t,buildRgbArgs:c5t}=AA(),{startService:DP,stopService:PX}=IA(),{getTerminalStatus:_1,invalidateTerminalStatusCache:NX,isServiceRunning:OX,getRGBStatus:h1,ServiceStatus:Uo}=SX();async function eIe(t,{timeoutMs:e=15e3,pollIntervalMs:r=1e3}={}){let n=new Dl("litdService"),i=Date.now()+e,s=[];for(;;){if(s=await _1("litd"),s.find(d=>d.service_name==="litd")?.status===t)return n.info(`Litd reached target status: ${t}`),{matched:!0,statuses:s};let u=Date.now();if(u>=i)break;let l=Math.min(r,Math.max(0,i-u));l>0&&await Z3e(l)}let o=s.find(c=>c.service_name==="litd")?.status||"Unknown";return n.warn(`Timed out waiting for Litd status "${t}". Last observed status: ${o}`),{matched:!1,statuses:s}}a(eIe,"waitForLitdStatus");async function IX(t,{timeoutMs:e=15e3,pollIntervalMs:r=1e3}={}){let n=new Dl("rgbService"),i=Date.now()+e,s=null;for(;;){if(s=await h1(),s?.status===t)return n.info(`RGB reached target status: ${t}`),{matched:!0,statuses:s};let u=Date.now();if(u>=i)break;let l=Math.min(r,Math.max(0,i-u));l>0&&await Z3e(l)}let o=s?.status||"Unknown";return n.warn(`Timed out waiting for RGB status "${t}". Last observed status: ${o}`),{matched:!1,statuses:s}}a(IX,"waitForRgbStatus");var AX=!1,kX=!1;async function tIe({waitForRunning:t=!0}={}){let e=new Dl("litdService");if(AX)return e.warn("Terminal start already in progress, returning current status"),await _1();AX=!0;try{let{LINK_ENABLE_TOR:r}=Y3e(),n=r==="true"||r===!0;e.info("Starting terminal services...");let i=await _1(),s=i.find(d=>d.service_name==="litd"),o=i.find(d=>d.service_name==="tor");e.info(`Current status - Litd: ${s?.status}, Tor: ${o?.status}`);let c=!n;if(n&&o?.status===Uo.STOPPED){e.info("Starting Tor service...");try{let d=o5t();await DP("tor",d),NX(),c=!0,e.info("Tor service started successfully")}catch(d){c=!1,e.warn(`Tor failed to start: ${d.message}. Starting Litd without Tor (graceful degradation)`)}}else n&&o?.status===Uo.RUNNING&&(c=!0);if(s?.status===Uo.STOPPED){let d=n&&c;n&&!c&&e.warn("Litd will start without Tor due to Tor startup failure"),e.info(`Starting Litd service (Tor: ${d})...`);let f=s5t(d);await DP("litd",f),NX(),e.info("Litd service started successfully")}let u=await _1(),l=u.find(d=>d.service_name==="litd")?.status;if(t&&l!==Uo.RUNNING){e.info("Waiting for Litd to reach running state after start...");let{matched:d,statuses:f}=await eIe(Uo.RUNNING,{timeoutMs:2e4,pollIntervalMs:1e3});if(!d)throw new Error("Litd failed to reach RUNNING state after start");return e.info("Terminal services started and Litd is running"),f}return e.info("Terminal services started successfully"),u}catch(r){throw e.error(`Failed to start terminal services: ${r.message}`),r}finally{AX=!1}}a(tIe,"startTerminal");async function rIe(t={}){let e=new Dl("litdService"),{lnlinkUser:r,waitForStopped:n=!0,waitOptions:i={}}=t||{};e.info("Stopping terminal services...");try{let s=await PX("litd");if(NX(),!s)return e.warn("stopService returned a falsy result"),!1;if(r&&RX({nostrAddress:r.npub,tag:CX.StopTaprootAssetNode}),!n)return e.info("Terminal services stopped (waiting for STOPPED state skipped)"),!0;e.info("Waiting for Litd to confirm STOPPED state...");let{matched:o}=await eIe(Uo.STOPPED,{timeoutMs:15e3,pollIntervalMs:1e3,...i});if(!o)throw new Error("Litd did not stop within the expected time window");return e.info("Terminal services stopped successfully and Litd is confirmed STOPPED"),!0}catch(s){throw e.error(`Failed to stop terminal services: ${s.message}`),s}}a(rIe,"stopTerminal");async function LX(t={}){let e=new Dl("litdService");e.info("Restarting terminal services...");try{if(!await rIe({...t,waitForStopped:!0}))return e.warn("Stopping Litd returned a falsy result, aborting restart."),!1;e.info("Starting Litd...");let n=await tIe({waitForRunning:!0});return e.info("Terminal services restarted successfully"),n}catch(r){throw e.error(`Failed to restart terminal services: ${r.message}`),r}}a(LX,"restartTerminal");async function u5t(t={}){let e=new Dl("litdService");if(Object.keys(t).length===0)throw new Error("config is empty");return e.info("Applying new configuration..."),await LX()}a(u5t,"configTerminal");async function l5t(){let t=new Dl("litdService");try{let e=await _1(),r=await OX("litd"),n=await OX("tor");return{healthy:r,services:{litd:{running:r,status:e.find(i=>i.service_name==="litd")?.status||"Unknown"},tor:{running:n,status:e.find(i=>i.service_name==="tor")?.status||"Unknown"}},timestamp:new Date().toISOString()}}catch(e){return t.error(`Health check failed: ${e.message}`),{healthy:!1,error:e.message,timestamp:new Date().toISOString()}}}a(l5t,"healthCheck");async function nIe(t={}){let{waitForRunning:e=!0,lnlinkUser:r}=t,n=new Dl("rgbService");if(kX)return n.warn("RGB start already in progress, returning current status"),await h1();kX=!0,n.info("Starting RGB service...");try{let i=await h1();if(i?.status===Uo.STOPPED){n.info("RGB service is stopped, starting...");let o=c5t();await DP("rgb",o),r&&RX({nostrAddress:r?.npub,tag:CX.EnableRGBNode}),n.info("RGB service started successfully")}else n.info(`RGB service is already ${i?.status}`);if(e&&i?.status!==Uo.RUNNING){n.info("Waiting for RGB to reach running state...");let{matched:o,statuses:c}=await IX(Uo.RUNNING,{timeoutMs:2e4,pollIntervalMs:1e3});if(!o)throw new Error("RGB failed to reach RUNNING state after start");return n.info("RGB service is running"),c}return await h1()}catch(i){throw n.error(`Failed to start RGB service: ${i.message}`),i}finally{kX=!1}}a(nIe,"startRGB");async function iIe(t){let e=new Dl("rgbService");e.info("Stopping RGB service...");let r=t?.lnlinkUser;try{let n=await PX("rgb");return e.info("RGB service stopped successfully"),r&&RX({nostrAddress:r.npub,tag:CX.StopRGBNode}),n}catch(n){throw e.error(`Failed to stop RGB service: ${n.message}`),n}}a(iIe,"stopRGB");async function aIe(t={}){let e=new Dl("rgbService");e.info("Restarting RGB service...");try{let r=await h1(),n=!!r?.error;if(r?.status===Uo.RUNNING||n){if(e.info(n?"RGB status check failed; forcing stop before restart...":"Stopping RGB service..."),!await iIe(t))return e.warn("Stopping RGB returned a falsy result, aborting restart."),!1;e.info("Waiting for RGB to stop...");let{matched:d}=await IX(Uo.STOPPED,{timeoutMs:15e3,pollIntervalMs:1e3});if(!d)throw new Error("RGB did not stop within the expected time window")}e.info("Starting RGB...");let s=await nIe(t);if(s?.status===Uo.RUNNING)return e.info("RGB service restarted successfully"),s;e.info("Waiting for RGB to reach running state...");let{matched:c,statuses:u}=await IX(Uo.RUNNING,{timeoutMs:2e4,pollIntervalMs:1e3});if(!c)throw new Error("RGB failed to reach RUNNING state after restart");return e.info("RGB service restarted successfully"),u}catch(r){throw e.error(`Failed to restart RGB service: ${r.message}`),r}}a(aIe,"restartRGB");async function d5t(t={}){let e=new Dl("nodeManage");e.info("Updating node name...");try{let{node_name:r}=t;if(!r)throw new Error("node_name is required");let n=await a5t({node_name:r});if(n!==1)throw new Error("Failed to update node name in DB");await i5t();let s=Y3e()?.LINK_NAME||r,o=await LX(t);if(!o)throw new Error("Failed to restart litd after updating node name");let u=(Array.isArray(o)?o.find(f=>f.service_name==="litd"):null)?.status||(Array.isArray(o)?"Unknown":o?.status||"Unknown"),l=await aIe(t),d=Array.isArray(l)?l.find(f=>f.service_name==="rgb")?.status||"Unknown":l?.status||"Unknown";return{update_status:n===1,node_name:s,litd_status:u,litd_details:o,rgb_status:d,rgb_details:l}}catch(r){throw e.error(`Failed to update nodename: ${r.message}`),r}}a(d5t,"updateNodeName");sIe.exports={startTerminal:tIe,stopTerminal:rIe,restartTerminal:LX,configTerminal:u5t,getTerminalStatus:_1,healthCheck:l5t,startRGB:nIe,stopRGB:iIe,restartRGB:aIe,getRGBStatus:h1,startService:DP,stopService:PX,isServiceRunning:OX,ServiceStatus:Uo,updateNodeName:d5t}});var DX=v((hHr,cIe)=>{var{getConfig:f5t}=Ht(),{getWalletState:p5t}=Wi(),{getMainLnlinkConfig:BX,updateMainLnlinkConfig:oIe}=Sr(),{nip19:_5t,getPublicKey:h5t,generatePrivateKey:m5t}=oc();async function g5t({owner:t,settings:e,nodeName:r,enableTor:n}){if(!t)throw new Error("ownerNostrAddr is null");if(!/^npub[a-z0-9]{59,}$/.test(t))throw new Error("owner nostr address format error");let i={...e,enableTor:n!==void 0?n:!0},s=await BX();if(s&&s.node_sk&&s.owner_npub){let c={settings:i};r&&(c.node_name=r),await oIe(c)}else{let c=m5t(),u=_5t.npubEncode(h5t(c)),l={owner_npub:t,node_sk:c,node_npub:u,settings:i};r&&(l.node_name=r),await oIe(l)}return await BX()}a(g5t,"initConfig");async function y5t(){let t=f5t(),e=[],{getTerminalStatus:r,getRGBStatus:n,isServiceRunning:i}=gf(),s=await i("litd"),o=await p5t(!0);if(s&&o===4){let d=await r(),f=await n(),p=[...new Set([f,...d])];e.push(...p)}else{let d=await n();e.push(d),e.push({service_name:"litd",status:s?"Running":"Stopped"})}let c=await BX(),u=c?.settings||{},l=u.enableTor!==void 0?u.enableTor:!0;return{linkName:t?.LINK_NAME,owner:t?.LINK_OWNER,nodeAddr:t?.LINK_NODE_ADDR,relayUri:t?.LINK_RELAY_URI,settings:c?.settings,enableTor:l,linkStatus:e}}a(y5t,"getInfo");cIe.exports={initConfig:g5t,getInfo:y5t}});var MX=v((gHr,uIe)=>{var v5t=require("node:events"),b5t=new v5t;uIe.exports=b5t});var FX=v((yHr,lIe)=>{var{getConfig:x5t}=Ht(),{startTerminal:w5t}=gf(),E5t=Ke();async function T5t({waitForRunning:t=!0}={}){let e=new E5t("job");try{if(!x5t().LINK_READY)return e.info("LND job startLitd not set, skipping."),!1;let r=await w5t({waitForRunning:t});return r&&e.info(`LND job startLitd complete:${JSON.stringify(r)}`),!0}catch(r){e.error(`LND job startLitd error--->${r.message}`)}}a(T5t,"startLitd");lIe.exports=T5t});var UX=v((bHr,dIe)=>{var{getConfig:S5t}=Ht(),{startRGB:A5t}=gf(),k5t=Ke();async function N5t({waitForRunning:t=!0}={}){let e=new k5t("job");try{if(!S5t().LINK_READY)return e.info("RGB job startRGB not set, skipping."),!1;let r=await A5t({waitForRunning:t});e.info(`RGB job startRGB complete:${JSON.stringify(r)}`)}catch(r){e.error(`RGB job startRGB error--->${r.message}`)}}a(N5t,"startRGB");dIe.exports=N5t});var qX=v((wHr,fIe)=>{var MP=new Map;async function O5t(t,e=[],r,n=60*1e3,i){let s=a(async()=>{try{await t(...e),i.info(`\u2705 Attempt ${r} succeeded`)}catch(o){i.error(`Attempt ${r} failed with: ${o.message}, retrying in ${n/1e3} seconds`)}finally{setTimeout(s,n)}},"retry");s()}a(O5t,"executeWithRetry");async function I5t(t,e,r,n=0,i=60*1e3,s){MP.has(r)&&(clearTimeout(MP.get(r)),MP.delete(r));let o=a(async(c=1)=>{try{Array.isArray(e)?await t(...e):await t(e),s.info(`\u2705 Attempt ${r} succeeded`)}catch(u){if(s.warn(`Attempt ${r} failed with: ${u.message}, retrying in ${i/1e3} seconds`),n&&c>=n)return s.error(`Attempt ${r} failed after ${c} attempts`),!1;let l=setTimeout(()=>o(c+1),i);MP.set(r,l)}},"retry");o()}a(I5t,"terminateableRetryExecute");async function C5t(t,e,r,n=10,i=1e3,s){return new Promise((o,c)=>{let u=a(async(l=1)=>{try{let d=await t(...e);if(d!==void 0){s.info(`\u2705 Attempt ${r} succeeded`),o(d);return}throw new Error(`${r} returned falsy value`)}catch(d){if(s.warn(`Attempt ${l}/${n} for ${r} failed: ${d.message}`),l>=n){s.error(`\u274C ${r} failed after ${n} attempts`),c(d);return}setTimeout(()=>{u(l+1).catch(c)},i)}},"retry");u(1).catch(c)})}a(C5t,"retryUntilSuccess");fIe.exports={executeWithRetry:O5t,terminateableRetryExecute:I5t,retryUntilSuccess:C5t}});var HX=v((THr,R5t)=>{R5t.exports={name:"lnlink-server",version:"1.2.1",private:!1,main:"dist/index.js",files:["dist","prisma","README.md"],scripts:{build:"node build.js && node build.js --mode development --external all --entry electron","start:bin":"node scripts/start-bin.js","start:docker:dev":"dotenv -e .env.dev -- docker compose -f ./docker-compose.dev.yml up --build","start:dev":'dotenv -e .env.dev -- sh -c "prisma generate && (prisma migrate dev --name auto_update || prisma db push) && node ./app.js"',"start:regtest":"docker compose --env-file ./.env.regtest -f ./docker-compose-lnlink.yml up --build","start:testnet":"docker compose --env-file ./.env.testnet -f ./docker-compose-lnlink.yml up --build","start:mainnet":"docker compose --env-file ./.env.mainnet -f ./docker-compose-lnlink.yml up --build","start:bin:dist":"node scripts/start-bin.js --dist",lint:"eslint .","lint:fix":"eslint . --fix","lint:staged":"lint-staged",preinstall:"npx husky"},_moduleAliases:{"@api":"api","@constants":"constants","@business":"business","@nostr":"nostr","@package.json":"./package.json"},dependencies:{"@grpc/grpc-js":"^1.10.8","@grpc/proto-loader":"^0.7.9","@lightsparkdev/lightspark-sdk":"^1.8.9","@prisma/client":"6.14.0",axios:"^1.7.2","body-parser":"^1.20.2",bolt11:"^1.4.1","cookie-parser":"~1.4.4","crypto-js":"^4.2.0",dayjs:"^1.11.10",debug:"~2.6.9","decimal.js":"^10.4.3",ethers:"^6.15.0",express:"^4.18.2","express-rate-limit":"^8.0.1","find-process":"^2.0.0","form-data":"^4.0.2","http-errors":"~1.6.3",long:"^5.2.3","module-alias":"^2.2.3",morgan:"~1.9.1","node-cache":"^5.1.2","node-cron":"^3.0.3","nostr-tools":"1.17.0",pino:"^9.9.0","pino-pretty":"^13.1.1","pino-roll":"^3.1.0",prisma:"6.14.0","rgb-api-js-sdk":"^1.0.9",ws:"^8.18.0"},"lint-staged":{"*.ts":["eslint --fix","git add"],"*.js":["eslint --fix","git add"]},devDependencies:{"@antfu/eslint-config":"^4.3.0","@commitlint/cli":"^19.7.1","@commitlint/config-conventional":"^19.7.1","dotenv-cli":"^10.0.0","electron-rebuild":"^3.2.9",esbuild:"^0.25.9",eslint:"^9.20.1",husky:"^9.1.7",jest:"^29.6.2","lint-staged":"^15.4.3",nodemon:"^3.0.3",protobufjs:"^7.2.5",typescript:"^5.7.3"},engines:{node:">=19.0.0"}}});var _0=v((SHr,SIe)=>{var{Buffer:yy}=require("node:buffer"),gIe=require("node:fs"),pIe=require("node:path"),{getConfig:vy}=Ht(),{getMainLnlinkConfig:$X,getLnlinkUser:P5t,upsertTransactionByFilter:qP}=Sr(),{retryUntilSuccess:L5t}=qX(),{ACCOUNT_TYPE:B5t,INVOICE_EXPIRY_TIME:D5t}=ot(),{WALLET_STATE_CODE:mc,SATS_ID:HP,NODE_TYPE:m1,TRANSACTION_KIND:jP,TRANSACTION_DIRECTION:g1,TRANSACTION_ASSET_TYPE:$P,TRANSACTION_STATUS:yIe}=ot(),M5t=HX(),{nip04:F5t,getPublicKey:_Ie}=oc(),{getWalletService:GX,getWalletState:p0,getLightningService:Di,checkWalletState:U5t,checkTprEnabled:q5t,getOpenedChannelList:vIe}=Wi(),{getConfigFilePath:VX,sleep:GP,getCacheMacaroon:KX,storeEnctryptAdminMacaroon:H5t,setCacheMacaroon:hIe,storeEnctryptLoopMacaroon:j5t}=bi(),Ma=Ks(),gc=Ke(),{getTerminalStatus:bIe,startTerminal:$5t}=gf(),{getTransactionsByFilter:G5t,decryptNostrString:jX}=Sr(),xIe=require("node:child_process").exec,{TASKS:VP}=ot(),{reportTaskCompletion:KP}=$p();async function V5t(t){let e=new gc("lnd"),{type:r,event_id:n,lnlinkUser:i}=t;if(r==null)throw new Error("type is required");let o=await Di().newAddress({type:r});return n&&i?(await qP({event_id:n,user_npub:i.npub,asset_type:$P.BTC,asset_id:HP,asset_amount:"0",node_type:m1.LITD,transaction_kind:jP.ONCHAIN,direction:g1.IN,target_address:o.address,status:yIe.PENDING,description:`BTC deposit address generated for ${i.npub}`,tx_type:"deposit",create_at:Math.floor(Date.now()/1e3),update_at:Math.floor(Date.now()/1e3)},{event_id:n}),e.info(`Generated BTC address: ${o.address} for user: ${i.npub}, event: ${n}`)):e.info(`Generated BTC address: ${o.address}`),o}a(V5t,"newAddress");async function K5t(t){let e=new gc("lnd"),{addr:r,amount:n,sat_per_vbyte:i,send_all:s,withinfo:o,event_id:c,lnlinkUser:u}=t,l=Di(),d={addr:r};n&&(d.amount=n),i&&(d.sat_per_vbyte=Number(i)),s&&(d.send_all=s);let f=await l.sendCoins(d);if(f?.txid&&c&&u){let p=s?"0":n?.toString()||"0";await qP({event_id:c,user_npub:u.npub,asset_type:$P.BTC,asset_id:HP,asset_amount:p,node_type:m1.LITD,transaction_kind:jP.ONCHAIN,direction:g1.OUT,target_address:r,status:yIe.PENDING,description:`BTC withdrawal for ${u.npub} to ${r}`,tx_type:"withdraw",tx_hash:f.txid,create_at:Math.floor(Date.now()/1e3),update_at:Math.floor(Date.now()/1e3)},{tx_hash:f.txid}),e.info(`Created outgoing transaction record: ${f.txid}, user: ${u.npub}, event: ${c}`)}if(o){let p=await du();f.nodeInfo=p}return f}a(K5t,"sendCoins");async function wIe(){return(await Di().closedChannels({}))?.channels?.map(i=>({channelId:i.chan_id,closeTx:i.closing_tx_hash,remotePubkey:i.remote_pubkey,channelPoint:i.channel_point,capacity:i.capacity,close_type:i.close_type,settledBalance:i.settled_balance,open_initiator:i.open_initiator,close_initiator:i.close_initiator}))}a(wIe,"getClosedChannelList");function FP({channel:t}){let e="";return t.custom_channel_data&&(e=JSON.parse(yy.from(t.custom_channel_data,"hex").toString("utf-8"))),{channel:{...t,custom_channel_data:e}}}a(FP,"covertChannel");async function z5t(){let t=await p0(!0),e=new gc("lnd"),{isMacaroonDecrypted:r}=KX();if(t!==4||!r)return{open_channel_list:[],pending_channel_list:[],closed_channel_list:[]};let n=Di(),i=await Promise.allSettled([vIe(),n.pendingChannels({}),wIe()]),s=i?.filter(E=>E.status==="rejected")?.map(E=>E.reason);s&&s.length>0&&e.error(`getChannelList ~ errors:${JSON.stringify(s)}`);let o=i[0].value,c=i[1].value,u=i[2].value,{pending_open_channels:l,pending_closing_channels:d,waiting_close_channels:f,pending_force_closing_channels:p}=c,_=l?.map(FP),h=d?.map(FP),m=f?.map(FP),g=p?.map(FP);return{open_channel_list:o,pending_channel_list:{pending_open_channels:_,pending_closing_channels:h,waiting_close_channels:m,pending_force_closing_channels:g},closed_channel_list:u}}a(z5t,"getChannelList");async function du(){let{LINK_NAME:t,LINK_NETWORK:e,LINK_OWNER:r,LINK_NODE_ADDR:n,LINK_LND_PEER_LISTEN_PORT:i}=vy(),s=new gc("lnd"),o=M5t.version,c=await p0(!0),u=15e3,l=Ma.get("combineNodeInfo")||{},d,f=new Promise(F=>{d=setTimeout(()=>{s.warn("combineNodeInfoAsync timed out after 15s, using cached result if available"),F({fromCache:!0,data:l})},u)}),p;try{p=await Promise.allSettled([Promise.race([tLt(c).then(F=>({fromCache:!1,data:F})),f]),bIe(),q5t(),P5t({account_type:B5t.READ_ONLY})])}finally{clearTimeout(d)}let[_,h,m,g]=p,y=_.value?.data||{},E=h.status==="fulfilled"?h.value:[],S=m.status==="fulfilled"?m.value:!1,N=g.status==="fulfilled"?g.value:null;h.status==="rejected"&&s.warn(`getNodeInfo: getTerminalStatus failed: ${h.reason?.message}`),g.status==="rejected"&&s.warn(`getNodeInfo: getLnlinkUser failed: ${g.reason?.message}`);let C={};E.forEach(F=>{C[F.service_name]=F.status});let R=y?.uris?.[0];return{pubkey:y?.identity_pubkey,name:t,status:{state:c,...C},owner:r,node_addr:n,balance:y?.balance,version:o,uri:R,host:R?R.split("@")[1]:`127.0.0.1:${i}`,peers:y?.peers,network:e,taproot_assets_enabled:S,read_only_account_sk:N?.sk}}a(du,"getNodeInfo");async function J5t({pay_req:t}){return await Di().decodePayReq({pay_req:t})}a(J5t,"decodePayReq");async function W5t(){let t=await p0(!0);if(t===4){let e=await bIe(),r={};return e.forEach(n=>{r[n.service_name]=n.status}),{state:t,...r}}else{let e=t>=0&&t<=4;return{state:t,litd:e?"Running":"Stopped"}}}a(W5t,"getNodeState");async function X5t(){return await Di().pendingChannels({})}a(X5t,"getPendingChannelList");async function UP({node_pubkey:t}){let{LINK_NOSTR_NODE_NPUBKEY:e}=vy(),r=t||e;return(await Di().listPeers({}))?.peers?.findIndex(s=>s.pub_key===r)>-1}a(UP,"isConnectPeer");async function Q5t(t){let{invoice:e,withinfo:r,outgoing_chan_id:n="",event_id:i,lnlinkUser:s}=t,o=Di(),c={payment_request:e,allow_self_payment:!0,fee_limit:{fixed:1e3}};n&&(c.outgoing_chan_id=`${n}`,c.outgoing_chan_ids=[`${n}`]);let u=await o.sendPaymentSync(c);if(u?.payment_hash){await GP(300);let d=(await o.decodePayReq({pay_req:e}))?.num_satoshis;await qP({event_id:i,user_npub:s.npub,asset_id:HP,asset_amount:`${d}`,asset_type:$P.BTC,invoice:e,node_type:m1.LITD,transaction_kind:jP.LIGHTNING,direction:g1.OUT},{payment_hash:u.payment_hash})}if(r){let l=await du();u.nodeInfo=l}return u}a(Q5t,"sendPaymentSync");async function Y5t(t){let{memo:e,value:r,event_id:n,lnlinkUser:i,expiry:s=D5t["10m"]}=t,c=await Di().addInvoice({memo:e,value:r,expiry:s});return c?.payment_request&&(await GP(500),await qP({event_id:n,user_npub:i.npub,asset_id:HP,asset_amount:`${r}`,asset_type:$P.BTC,invoice:c?.payment_request,node_type:m1.LITD,transaction_kind:jP.LIGHTNING,direction:g1.IN,description:e,add_index:Number.parseInt(c?.add_index)},{invoice:c.payment_request})),{...c}}a(Y5t,"createLnInvoice");async function Z5t(t){let{node_pubkey:e,amount:r,sat_per_vbyte:n,fund_max:i,zero_conf_enable:s,withinfo:o,push_sat:c,lnlinkUser:u}=t,l=Di(),{LINK_NOSTR_NODE_NPUBKEY:d}=vy(),f=e||d,p=new gc("lnd"),_=await UP({node_pubkey:f}),h;if(!_)h={isConnected:!1};else{let m={node_pubkey:f,local_funding_amount:r,min_confs:1};s&&(m.target_conf=0,m.zero_conf=!0,m.commitment_type=3,m.push_sat=1e5),n&&(m.sat_per_vbyte=n),i&&(m.fund_max=i,m.local_funding_amount="0"),c&&(m.push_sat=c),h=await l.openChannelSync(m),h.isConnected=!0,p.info(`openChannelSync ret--->, ${JSON.stringify(m)}, ${JSON.stringify(h)}`),u&&KP({nostrAddress:u.npub,tag:VP.CreateBTCChannel})}if(o){let m=await du();h.nodeInfo=m}return h}a(Z5t,"openChannel");async function eLt(){let t=Di(),{settings:e}=await $X();return((await t.listPeers({}))?.peers||[]).map(s=>{let o=s.pub_key===e?.officialLndPeer;return{pub_key:s.pub_key,alias:o?"Lnfi":`${s.pub_key}@${s.address}`,address:s.address}})}a(eLt,"listPeers");async function tLt(t){let e={},r=new gc("lnd"),n="combineNodeInfo",i="combineNodeInfo_ts",s=5e3;try{let{isMacaroonDecrypted:o}=KX(),c=t;c>mc.UNLOCKED&&c!==mc.WAITING_TO_START&&(o||(c=mc.LOCKED));let u=Ma.get(n),l=Ma.get(i);if(u&&l&&u.state===c){let d=Date.now()-l;if(d<s)return r.debug(`combineNodeInfoAsync: returning cached result (age: ${d}ms)`),u}if(c>=mc.RPC_ACTIVE&&o&&c!==mc.WAITING_TO_START){let d=Di(),f=[$X()];c>=mc.SERVER_ACTIVE&&(f.push(EIe(!0)),f.push(d.walletBalance()),f.push(d.listPeers({})));let p=await Promise.allSettled(f),_=p[0],h=c>=mc.SERVER_ACTIVE?p[1]:{status:"rejected"},m=c>=mc.SERVER_ACTIVE?p[2]:{status:"rejected"},g=c>=mc.SERVER_ACTIVE?p[3]:{status:"rejected"},y=null;_.status==="fulfilled"?y=_.value?.settings:r.warn(`combineNodeInfoAsync: getMainLnlinkConfig failed: ${_.reason?.message}`);let E=h.status==="fulfilled"?h.value:null,S=m.status==="fulfilled"?m.value:null,C=(g.status==="fulfilled"?g.value:null)?.peers||[],R=C.map(F=>{let U=F.pub_key===y?.officialLndPeer;return{pub_key:F.pub_key,alias:U?"Lnfi":`${F.pub_key}@${F.address}`,address:F.address}});c>=mc.SERVER_ACTIVE&&r.info(`LND lndService combineNodeInfoAsync peer:${C.map(F=>F.pub_key)}`);let $=p?.filter(F=>F.status==="rejected")?.map(F=>F.reason);$&&$.length>0&&r.error(`LND lndService combineNodeInfoAsync errors:${JSON.stringify($)}`),e={identity_pubkey:E?.identity_pubkey,...E,balance:S,peers:R}}return e={...e,state:c},Ma.set(n,e),Ma.set(i,Date.now()),e}catch(o){r.warn(`LND lndService combineNodeInfoAsync peer combineNodeInfo warn--->${o.message}`)}}a(tLt,"combineNodeInfoAsync");async function mIe(){let e=await Di().getInfo();return Ma.set("nodeInfo",e),e}a(mIe,"getInfo");async function EIe(t=!0){let e=new gc("lnd");try{let r=Ma.get("nodeInfo");return r?.identity_pubkey?(t&&mIe(),r):await mIe()}catch(r){e.error(`LND lndService getCacheInfo err--->${r.message}`)}}a(EIe,"getCacheNodeInfo");async function rLt(t){await U5t(mc.RPC_ACTIVE);let{secret:e,origin_secret:r}=t;if(!e&&!r)throw new Error("secret is required.");let n=r||await jX(e),i=Di(),o={permissions:[{entity:"uri",action:"/looprpc.SwapClient/GetInfo"},{entity:"uri",action:"/looprpc.SwapClient/LoopOut"},{entity:"uri",action:"/looprpc.SwapClient/LoopIn"},{entity:"uri",action:"/looprpc.SwapClient/ListSwaps"},{entity:"uri",action:"/looprpc.SwapClient/SwapInfo"},{entity:"uri",action:"/looprpc.SwapClient/AbandonSwap"},{entity:"uri",action:"/looprpc.SwapClient/Monitor"},{entity:"uri",action:"/looprpc.SwapClient/LoopOutTerms"},{entity:"uri",action:"/looprpc.SwapClient/LoopOutQuote"},{entity:"uri",action:"/looprpc.SwapClient/GetLoopInTerms"},{entity:"uri",action:"/looprpc.SwapClient/GetLoopInQuote"}],root_key_id:"18441921392371827000"},c=await i.bakeMacaroon(o);if(c?.macaroon){let u=yy.from(c?.macaroon,"hex");j5t(u,n)}}a(rLt,"bakeLoopMacaroon");async function TIe(t){let{walletUnlockerService:e}=GX(),r=new gc("lnd"),{wallet_password:n,cipher_seed_mnemonic:i}=t;if(Ma.get("initWalletInProgress"))throw r.warn("initWallet already in progress, rejecting duplicate request"),new Error("Wallet initialization already in progress");Ma.set("initWalletInProgress",!0);try{if(i)Ma.set("cipherSeedMnemonic",i);else{let l=await e.genSeed({});if(l?.cipher_seed_mnemonic){let d=l?.cipher_seed_mnemonic;Ma.set("cipherSeedMnemonic",d)}}let s=Ma.get("cipherSeedMnemonic");if(!s)throw new Error("Get seed error.");let{LINK_DEBUG:o}=vy(),c=!(o==="true"||o===!0),u=await e.initWallet({wallet_password:yy.from(n),cipher_seed_mnemonic:s,stateless_init:c}).catch(l=>{throw r.warn(`${l.message}`),l});return r.info(`LND lndService initWallet RPC response ->macaroon length:${u?.admin_macaroon?.length}`),u?.admin_macaroon&&H5t(u?.admin_macaroon,n),u}finally{Ma.del("initWalletInProgress")}}a(TIe,"wrapperInitWallet");async function nLt(){let{walletUnlockerService:t}=GX(),e=Ma.get("cipherSeedMnemonic");if(e)return{cipherSeedMnemonic:e};let r=await t.genSeed({});if(r?.cipher_seed_mnemonic){let n=r?.cipher_seed_mnemonic;return Ma.set("cipherSeedMnemonic",n),{cipherSeedMnemonic:n}}throw new Error("Get seed error.")}a(nLt,"genseed");async function iLt(t){let{password:e,withinfo:r,cipher_seed_mnemonic:n,origin_password:i,lnlinkUser:s}=t;if(!e&&!i)throw new Error("Password is null.");let o="",c;if(e&&(o=(await jX(e)).toString()),i&&(o=`${i}`),n&&(c=JSON.parse(await jX(n))),o&&o.length<8)throw new Error("Password length must be at least 8 characters.");let{isMacaroonDecrypted:u}=KX();if(u)throw new Error("You have already initialized.");await TIe({wallet_password:o,cipher_seed_mnemonic:c}),Ma.set("tempPassword",e);try{await p0(!1)}catch{}let d={message:"Init wallet success.",cipherSeedMnemonic:Ma.get("cipherSeedMnemonic")};return s&&KP({nostrAddress:s.npub,tag:VP.EnableTaprootAssetNode}),r&&(d.nodeInfo=await du()),d}a(iLt,"initWallet");async function aLt(t){let e=Di(),{withinfo:r,lnlinkUser:n,...i}=t,s={...i},o=await e.closeChannel(s);if(n&&KP({nostrAddress:n.npub,tag:VP.CloseTaprootChannel}),r){let c=await du();o.nodeInfo=c}return o}a(aLt,"closeChannel");async function sLt(t){let{pubkey:e,host:r,perm:n,timeout:i,withinfo:s}=t,o=new gc("lnd"),{LINK_NOSTR_NODE_NPUBKEY:c,LINK_NOSTR_NODE_HOST:u}=vy(),l=e||c,d=r||u,f=Di(),p=!1,_=20;if(await UP({node_pubkey:l}))p={isConnected:!0};else{o.info("Lnd lndService connectPeer"),await f.connectPeer({addr:{pubkey:l,host:d},perm:n||!1,timeout:i||30}).catch(g=>{o.error(`Lnd lndService connectPeer error ${g.message}`)});let m=0;for(;;){if(m++,m>_){p={isConnected:!1};break}if(await UP({node_pubkey:l})){p={isConnected:!0};break}else{await GP(1e3);continue}}}if(s){let m=await du();p.nodeInfo=m}return p}a(sLt,"connectPeer");async function oLt(t){let{wallet_password:e,recovery_window:r,withinfo:n}=t,{LINK_DEBUG:i}=vy(),o=(await $X()).node_sk,c=_Ie(_Ie(o)),l=await F5t.decrypt(o,c,e),{walletUnlockerService:d}=GX(),f=await p0(!0);if(f>mc.UNLOCKED&&f<mc.WAITING_TO_START)hIe(l);else{let _=!(i==="true"||i===!0);console.log("unlock stateless_init---->",_,i);let h={wallet_password:yy.from(l),stateless_init:_};r&&(h.recovery_window=Number(r));let m=new gc("lnd");await d.unlockWallet(h).catch(g=>{m.error(`${g.message}`)}),hIe(l),Ma.set("tempPassword",e);try{await p0(!1)}catch{}}let p={msg:"Unlock success."};if(n){let _=await du();p.nodeInfo=_}return p}a(oLt,"unlock");async function cLt(t){let{withinfo:e}=t,{channelBackupPath:r,lndNodeOriginPath:n,targetNodeBackupPath:i}=VX(),s=Di(),o=await s.exportAllChannelBackups({});gIe.writeFileSync(r,o.multi_chan_backup.multi_chan_backup),await s.stopDaemon({});let c=pIe.dirname(n),u=pIe.basename(n),f={channelBakeup:"success.",nodeBackup:await new Promise((p,_)=>{xIe(`tar -zcvf "${i}" "${u}"`,{cwd:c},h=>{h?_(h):p("success.")})})};if(e){await GP(3e3);let p=await du();f.nodeInfo=p}return f}a(cLt,"bakeNode");async function uLt(t){let{withinfo:e}=t;await Di().stopDaemon({}).catch(u=>{new gc("lnd").error(`Lnd lndService stopDaemon error ${u?.message}`)});let{basePath:n,targetNodeBackupPath:i}=VX(),c={nodeRestore:await new Promise((u,l)=>{xIe(`tar -zxvf "${i}" -C "${n}"`,d=>{d?l(d):u("success.")})})};if(e){let u=await du();c.nodeInfo=u}return c}a(uLt,"restoreNode");async function lLt(){let t=Di(),{channelBackupPath:e}=VX(),n=gIe.readFileSync(e).toString("hex");return{channelRestore:await t.restoreChannelBackups({multi_chan_backup:yy.from(n,"hex")})}}a(lLt,"restoreChannels");async function dLt(t){let{msg:e}=t;return await Di().signMessage({msg:yy.from(`${e}`)})}a(dLt,"signMessage");async function fLt(t){let{msg:e,signature:r}=t;return await Di().verifyMessage({msg:yy.from(`${e}`),signature:r})}a(fLt,"nstVerifyMessage");async function pLt(t){let{node_type:e,transaction_kind:r,status:n,direction:i,asset_type:s,page_index:o=1,page_size:c=20,asset_id:u}=t;return await G5t({transaction_kind:r,direction:i?/out/.test(i)?g1.OUT:g1.IN:"",node_type:e?/litd|lnd/.test(e)?m1.LITD:m1.RGB:"",asset_type:s,status:n,limit:c,offset:(o-1)*c,asset_id:u})}a(pLt,"getTransactions");async function _Lt(t){let{lnlinkUser:e}=t,{LINK_ENABLE_TOR:r}=vy(),n=new gc("lnd"),i=r,s={};e&&KP({nostrAddress:e?.npub,tag:VP.EnableTaprootAssetNode});let o=await $5t(i);if(s.linkStatus=o,await L5t(p0,[!1],"getWalletState",10,3e3,n)!==void 0){let u=await du();s.nodeInfo=u}return s}a(_Lt,"startLink");async function hLt(t){let e=new gc("lnd"),{enable:r,lnlinkUser:n}=t;if(r==null)throw new Error("enable parameter is required (true or false)");let i=r===!0||r==="true";e.info(`Toggling Tor mode to: ${i}, requested by: ${n?.npub||"unknown"}`);try{let{getMainLnlinkConfig:s,updateMainLnlinkConfig:o}=Sr(),u=(await s())?.settings||{},l={...u,enableTor:i},d=await o({settings:l});d!==1&&e.warn(`Database update returned: ${d}, proceeding anyway`);let{reloadConfig:f}=Ht(),{isServiceRunning:p,startService:_,stopService:h,stopTerminal:m,startTerminal:g}=gf(),{buildTorArgs:y}=AA(),E=await p("litd"),S=await p("rgb"),N=await p("tor");if(e.info(`Current status - Litd: ${E}, RGB: ${S}, Tor: ${N}`),!E&&!S){await f();try{if(i&&!N){e.info("Starting Tor service standalone (litd/rgb not running)...");let $=y();await _("tor",$),e.info("Tor service started successfully")}else!i&&N?(e.info("Stopping Tor service (litd/rgb not running)..."),await h("tor"),e.info("Tor service stopped successfully")):e.info("Tor already in desired state, no action needed");return{enable_tor:i,status:"ok",message:"Tor toggled without restarting services (litd/rgb not running)"}}catch($){e.error(`Failed to ${i?"start":"stop"} Tor service: ${$.message}`);let F={...u,enableTor:!i};throw await o({settings:F}),await f(),new Error(`Failed to ${i?"start":"stop"} Tor service: ${$.message}`)}}if(e.info("Stopping litd before config reload (to free ports)..."),await m({lnlinkUser:n,waitForStopped:!0}),!i&&N){e.info("Stopping Tor service (was running standalone)...");try{await h("tor"),e.info("Tor service stopped successfully")}catch($){e.warn(`Failed to stop Tor service: ${$.message}`)}}e.info("Reloading config after services stopped..."),await f(),e.info("Starting litd with new Tor configuration...");let C=await g({waitForRunning:!0}),R=await du();return e.info(`Tor mode toggled successfully. Tor enabled: ${i}`),{enable_tor:i,status:"ok",terminal_status:C,node_info:R}}catch(s){throw e.error(`Failed to toggle Tor: ${s.message}`),s}}a(hLt,"toggleTor");SIe.exports={startLink:_Lt,toggleTor:hLt,getWalletState:p0,sendPaymentSync:Q5t,createLnInvoice:Y5t,getNodeInfo:du,getNodeState:W5t,getChannelList:z5t,getOpenedChannelList:vIe,getPendingChannelList:X5t,getClosedChannelList:wIe,openChannel:Z5t,listPeers:eLt,decodePayReq:J5t,wrapperInitWallet:TIe,initWallet:iLt,genseed:nLt,isConnectPeer:UP,sendCoins:K5t,closeChannel:aLt,connectPeer:sLt,unlock:oLt,bakeNode:cLt,restoreNode:uLt,restoreChannels:lLt,bakeLoopMacaroon:rLt,signMessage:dLt,nstVerifyMessage:fLt,getCacheNodeInfo:EIe,getTransactions:pLt,newAddress:V5t}});var OIe=v((kHr,NIe)=>{var mLt=jH(),by=mLt.Router(),{getConfig:zX,reloadConfig:kIe}=Ht(),{getInfo:gLt,initConfig:yLt,updateNodeName:vLt}=DX(),{sendResponse:fu}=bi(),AIe=MX();by.get("/health",async(t,e)=>{try{let r={status:"healthy",timestamp:new Date().toISOString(),uptime:process.uptime(),memory:process.memoryUsage()};fu(e,200,"Server is healthy",r)}catch(r){fu(e,500,"Server health check failed",{error:r.message})}});by.post("/update-name",async(t,e)=>{try{let{nodeName:r}=t?.body,n=await vLt(r);await kIe(),fu(e,200,"lnlink node_name update success",n)}catch(r){fu(e,500,r.message,null)}});by.post("/init",async(t,e)=>{try{let{owner:r,settings:n,nodeName:i,enableTor:s}=t?.body,o=await yLt({owner:r,settings:n,nodeName:i,enableTor:s});await kIe();let{LINK_READY:c}=zX();if(c){let u=FX(),l=UX(),{isServiceRunning:d}=SX(),f=await d("litd"),p=await d("rgb");f||await u({waitForRunning:!1}),p||await l({waitForRunning:!1});let{LINK_ENABLE_TOR:_}=zX(),h=_===!0||_==="true",m=6e4,g=1e3,y=Date.now();for(;Date.now()-y<m;){let E=await d("tor"),S=await d("litd"),N=await d("rgb");if(S&&N&&(!h||E))break;if(S&&N&&h&&!E&&Date.now()-y>5e3){console.warn("[init] Tor is not running while litd and rgb are ready, skipping Tor wait");break}await new Promise($=>setTimeout($,g))}}AIe.emit("initAccount"),AIe.emit("listenNostrEvent"),fu(e,200,"lnlink config init success",o)}catch(r){fu(e,500,r.message,null)}});by.get("/info",async(t,e)=>{try{let{owner:r,nodeAddr:n,relayUri:i,linkStatus:s,settings:o,enableTor:c}=await gLt(),u={};s.forEach(d=>{u[d.service_name]=d.status});let{LINK_LNFI_NODE_SITE_URL:l}=zX();fu(e,200,"success",{owner:r,nodeAddr:n,relayUri:i,...u,manageUrl:`${l.replace(/\/#\/|\/#|\/$/,"")}/#/?owner=${r}&npub=${n}`,settings:o,enableTor:c})}catch(r){fu(e,500,r.message,null)}});by.get("/tor/check",async(t,e)=>{try{let o=function(l,d){return new Promise((f,p)=>{let _=new n.Socket;_.setTimeout(s),_.once("connect",()=>{_.destroy(),f({host:l,port:d,reachable:!0})}),_.once("timeout",()=>{_.destroy(),p(new Error(`timeout ${l}:${d}`))}),_.once("error",h=>{_.destroy(),p(new Error(`error ${l}:${d}: ${h.message}`))}),_.connect(d,l)})};var r=o;a(o,"tryConnect");let n=require("node:net"),i=[{host:"128.31.0.34",port:9131,name:"moria1"},{host:"193.23.244.244",port:443,name:"dannenberg"},{host:"199.58.81.140",port:80,name:"Faravahar"},{host:"86.59.21.38",port:443,name:"gabelmoo"}],s=5e3,c=!1,u=null;try{let l=await Promise.any(i.map(({host:d,port:f})=>o(d,f)));c=!0,u=`${l.host}:${l.port}`}catch{c=!1}fu(e,200,c?"Tor network is reachable":"Tor network is not reachable",{reachable:c,...u&&{connected_to:u}})}catch{fu(e,200,"Tor network check failed",{reachable:!1})}});by.post("/tor/toggle",async(t,e)=>{try{let{enable:r}=t?.body,{toggleTor:n}=_0(),i=await n({enable:r});fu(e,200,"Tor toggled successfully",i)}catch(r){fu(e,500,r.message,null)}});NIe.exports=by});var JX=v((OHr,CIe)=>{var{Buffer:IIe}=require("node:buffer"),bLt=require("node:crypto");function xLt(t,e){let r=bLt.createHash("sha256");r.update(t);let n=r.digest();if(e<n.length)return n.slice(0,e);if(e>n.length){let i=IIe.alloc(e-n.length);return IIe.concat([n,i])}return n}a(xLt,"stringToFixedBytes");CIe.exports={stringToFixedBytes:xLt}});var MIe=v((CHr,DIe)=>{var WX=BigInt(Number.MAX_SAFE_INTEGER),RIe=BigInt("9223372036854775807"),zP=BigInt("1000000000000000000000000000"),JP=zP,PIe=+"4102444800",QX=2147483647,LIe=RIe,XX=JP,BIe=QX,wLt={isUnlimited:a(t=>{if(!t)return!1;if(typeof t=="bigint")return t===XX||t===zP||t===JP;if(typeof t=="string"){let e=XX.toString(),r=zP.toString(),n=JP.toString();return t===e||t===r||t===n}return!1},"isUnlimited"),isNeverExpire:a(t=>t?t===BIe||t===LIe||t===PIe||t===QX:!1,"isNeverExpire"),isSafeInteger:a(t=>t<=WX&&t>=-WX,"isSafeInteger"),toDbString:a(t=>t?typeof t=="string"?t:typeof t=="bigint"?t.toString():String(t):null,"toDbString"),fromDbString:a(t=>{if(!t)return null;try{return BigInt(t)}catch(e){return console.warn(`Failed to convert string to BigInt: ${t} ${e.message}`),null}},"fromDbString"),toSafeString:a(t=>t?t.toString():null,"toSafeString"),fromString:a(t=>t?BigInt(t):null,"fromString"),formatLargeNumber:a(t=>{if(!t)return"0";let e=t.toString(),r=e.length;return r<=6?e:r<=9?`${(Number(e)/1e6).toFixed(1)}M`:r<=12?`${(Number(e)/1e9).toFixed(1)}B`:r<=15?`${(Number(e)/1e12).toFixed(1)}T`:Number(e).toExponential(2)},"formatLargeNumber"),createTokenAmount:a((t,e=18)=>{let r=BigInt(10)**BigInt(e);return BigInt(t)*r},"createTokenAmount")};DIe.exports={MAX_SAFE_INTEGER:WX,MAX_SQLITE_INTEGER:RIe,MAX_TOKEN_AMOUNT:zP,UNLIMITED_AUTH_LIMIT:JP,UNLIMITED_AMOUNT:XX,NEVER_EXPIRE_MAX:LIe,NEVER_EXPIRE_2100:PIe,NEVER_EXPIRE_2038:QX,NEVER_EXPIRE:BIe,BigIntUtils:wLt}});var HIe=v((PHr,qIe)=>{var{getMainLnlinkConfig:WP}=Sr(),{insertLnlinkUser:YX,getLNDOwner:ELt,getFlashRegister:TLt,getReadOnly:SLt}=Sr(),ZX=Ke(),{stringToFixedBytes:FIe}=JX(),{UNLIMITED_AMOUNT:ALt,NEVER_EXPIRE:eQ,BigIntUtils:kLt}=MIe(),{ACCOUNT_TYPE:tQ,FLASH_REGISTER_PERMISSIONS:NLt,OWNER_PERMISSIONS:OLt,READ_ONLY_PERMISSIONS:ILt}=ot(),rQ=eu(),{nip19:y1,getPublicKey:UIe}=oc();async function CLt(){let t=new ZX("init");try{if(!await ELt()){let r=await WP(),n="owner",{owner_npub:i,settings:s,node_npub:o}=r,c=s?.nostrRelays?s?.nostrRelays?.[0]:null;await YX({name:n,pubkey:y1.decode(i).data,sk:null,node_pubkey:y1.decode(o).data,relay:c,asset_id:null,account_type:tQ.OWNER,social_id:null,auth_limit:kLt.toDbString(ALt),permissions:JSON.stringify(OLt),create_at:rQ().unix(),expire_time:eQ,parent_pubkey:null})&&t.info(`init owner to DB owner ${i} init success.`)}}catch(e){t.error(`init owner error: ${e.message}`)}}a(CLt,"initOwner");async function RLt(){let t=new ZX("init");try{let e=await WP(),{node_npub:r,settings:n}=e,i=n?.nostrRelays?n?.nostrRelays?.[0]:null,s=FIe(`${r}`).toString("hex"),o=UIe(s),c=y1.npubEncode(o);await TLt()||await YX({name:"flash_register",pubkey:o,sk:s,node_pubkey:y1.decode(r).data,relay:i,asset_id:null,account_type:tQ.FLASH_REGISTER,social_id:null,social_type:null,auth_limit:"0",permissions:JSON.stringify(NLt),create_at:rQ().unix(),expire_time:eQ,parent_pubkey:null})&&t.info(`init flash_register to DB flash_register ${c} init success.`)}catch(e){t.error(`init flash_register error: ${e.message}`)}}a(RLt,"initFlashRegister");async function PLt(){let t=new ZX("init");try{let e=await WP(),{node_npub:r,settings:n}=e,i=n?.nostrRelays?n?.nostrRelays?.[0]:null,o=FIe(`${r}:lnlink_readonly_v1`).toString("hex"),c=UIe(o),u=y1.npubEncode(c);await SLt()||await YX({name:"readonly",pubkey:c,sk:o,node_pubkey:y1.decode(r).data,relay:i,asset_id:null,account_type:tQ.READ_ONLY,social_id:null,social_type:null,auth_limit:"0",permissions:JSON.stringify(ILt),create_at:rQ().unix(),expire_time:eQ,parent_pubkey:null})&&t.info(`init readonly to DB readonly ${u} init success.`)}catch(e){t.error(`init readonly error: ${e.message}`)}}a(PLt,"initReadOnly");async function LLt(){(await WP())?.owner_npub&&(await CLt(),await PLt(),await RLt())}a(LLt,"initAccount");qIe.exports={initAccount:LLt}});var $Ie=v((BHr,jIe)=>{jIe.exports=require("crypto").createHash});var zIe=v((DHr,KIe)=>{"use strict";var QP="qpzry9x8gf2tvdw0s3jn54khce6mua7l",nQ={};for(RA=0;RA<QP.length;RA++){if(XP=QP.charAt(RA),nQ[XP]!==void 0)throw new TypeError(XP+" is ambiguous");nQ[XP]=RA}var XP,RA;function v1(t){var e=t>>25;return(t&33554431)<<5^-(e>>0&1)&996825010^-(e>>1&1)&642813549^-(e>>2&1)&513874426^-(e>>3&1)&1027748829^-(e>>4&1)&705979059}a(v1,"polymodStep");function GIe(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=v1(e)^n>>5}for(e=v1(e),r=0;r<t.length;++r){var i=t.charCodeAt(r);e=v1(e)^i&31}return e}a(GIe,"prefixChk");function BLt(t,e,r){if(r=r||90,t.length+7+e.length>r)throw new TypeError("Exceeds length limit");t=t.toLowerCase();var n=GIe(t);if(typeof n=="string")throw new Error(n);for(var i=t+"1",s=0;s<e.length;++s){var o=e[s];if(o>>5!==0)throw new Error("Non 5-bit word");n=v1(n)^o,i+=QP.charAt(o)}for(s=0;s<6;++s)n=v1(n);for(n^=1,s=0;s<6;++s){var c=n>>(5-s)*5&31;i+=QP.charAt(c)}return i}a(BLt,"encode");function VIe(t,e){if(e=e||90,t.length<8)return t+" too short";if(t.length>e)return"Exceeds length limit";var r=t.toLowerCase(),n=t.toUpperCase();if(t!==r&&t!==n)return"Mixed-case string "+t;t=r;var i=t.lastIndexOf("1");if(i===-1)return"No separator character for "+t;if(i===0)return"Missing prefix for "+t;var s=t.slice(0,i),o=t.slice(i+1);if(o.length<6)return"Data too short";var c=GIe(s);if(typeof c=="string")return c;for(var u=[],l=0;l<o.length;++l){var d=o.charAt(l),f=nQ[d];if(f===void 0)return"Unknown character "+d;c=v1(c)^f,!(l+6>=o.length)&&u.push(f)}return c!==1?"Invalid checksum for "+t:{prefix:s,words:u}}a(VIe,"__decode");function DLt(){var t=VIe.apply(null,arguments);if(typeof t=="object")return t}a(DLt,"decodeUnsafe");function MLt(t){var e=VIe.apply(null,arguments);if(typeof e=="object")return e;throw new Error(e)}a(MLt,"decode");function YP(t,e,r,n){for(var i=0,s=0,o=(1<<r)-1,c=[],u=0;u<t.length;++u)for(i=i<<e|t[u],s+=e;s>=r;)s-=r,c.push(i>>s&o);if(n)s>0&&c.push(i<<r-s&o);else{if(s>=e)return"Excess padding";if(i<<r-s&o)return"Non-zero padding"}return c}a(YP,"convert");function FLt(t){var e=YP(t,8,5,!0);if(Array.isArray(e))return e}a(FLt,"toWordsUnsafe");function ULt(t){var e=YP(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)}a(ULt,"toWords");function qLt(t){var e=YP(t,5,8,!1);if(Array.isArray(e))return e}a(qLt,"fromWordsUnsafe");function HLt(t){var e=YP(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}a(HLt,"fromWords");KIe.exports={decodeUnsafe:DLt,decode:MLt,encode:BLt,toWordsUnsafe:FLt,toWords:ULt,fromWordsUnsafe:qLt,fromWords:HLt}});var u4e=v((FHr,c4e)=>{var QIe=require("fs"),Vp=require("path"),YIe=require("os"),ZIe=typeof __webpack_require__=="function"?__non_webpack_require__:require,jLt=process.config&&process.config.variables||{},$Lt=!!process.env.PREBUILDS_ONLY,JIe=process.versions.modules,iQ=KLt()?"electron":VLt()?"node-webkit":"node",aQ=process.env.npm_config_arch||YIe.arch(),sQ=process.env.npm_config_platform||YIe.platform(),e4e=process.env.LIBC||(zLt(sQ)?"musl":"glibc"),oQ=process.env.ARM_VERSION||(aQ==="arm64"?"8":jLt.arm_version)||"",t4e=(process.versions.uv||"").split(".")[0];c4e.exports=yf;function yf(t){return ZIe(yf.resolve(t))}a(yf,"load");yf.resolve=yf.path=function(t){t=Vp.resolve(t||".");try{var e=ZIe(Vp.join(t,"package.json")).name.toUpperCase().replace(/-/g,"_");process.env[e+"_PREBUILD"]&&(t=process.env[e+"_PREBUILD"])}catch{}if(!$Lt){var r=WIe(Vp.join(t,"build/Release"),XIe);if(r)return r;var n=WIe(Vp.join(t,"build/Debug"),XIe);if(n)return n}var i=c(t);if(i)return i;var s=c(Vp.dirname(process.execPath));if(s)return s;var o=["platform="+sQ,"arch="+aQ,"runtime="+iQ,"abi="+JIe,"uv="+t4e,oQ?"armv="+oQ:"","libc="+e4e,"node="+process.versions.node,process.versions.electron?"electron="+process.versions.electron:"",typeof __webpack_require__=="function"?"webpack=true":""].filter(Boolean).join(" ");throw new Error("No native build was found for "+o+`
2155
2155
  loaded from: `+t+`
2156
2156
  `);function c(u){var l=cQ(Vp.join(u,"prebuilds")).map(r4e),d=l.filter(n4e(sQ,aQ)).sort(i4e)[0];if(d){var f=Vp.join(u,"prebuilds",d.name),p=cQ(f).map(a4e),_=p.filter(s4e(iQ,JIe)),h=_.sort(o4e(iQ))[0];if(h)return Vp.join(f,h.file)}}};function cQ(t){try{return QIe.readdirSync(t)}catch{return[]}}a(cQ,"readdirSync");function WIe(t,e){var r=cQ(t).filter(e);return r[0]&&Vp.join(t,r[0])}a(WIe,"getFirst");function XIe(t){return/\.node$/.test(t)}a(XIe,"matchBuild");function r4e(t){var e=t.split("-");if(e.length===2){var r=e[0],n=e[1].split("+");if(r&&n.length&&n.every(Boolean))return{name:t,platform:r,architectures:n}}}a(r4e,"parseTuple");function n4e(t,e){return function(r){return r==null||r.platform!==t?!1:r.architectures.includes(e)}}a(n4e,"matchTuple");function i4e(t,e){return t.architectures.length-e.architectures.length}a(i4e,"compareTuples");function a4e(t){var e=t.split("."),r=e.pop(),n={file:t,specificity:0};if(r==="node"){for(var i=0;i<e.length;i++){var s=e[i];if(s==="node"||s==="electron"||s==="node-webkit")n.runtime=s;else if(s==="napi")n.napi=!0;else if(s.slice(0,3)==="abi")n.abi=s.slice(3);else if(s.slice(0,2)==="uv")n.uv=s.slice(2);else if(s.slice(0,4)==="armv")n.armv=s.slice(4);else if(s==="glibc"||s==="musl")n.libc=s;else continue;n.specificity++}return n}}a(a4e,"parseTags");function s4e(t,e){return function(r){return!(r==null||r.runtime&&r.runtime!==t&&!GLt(r)||r.abi&&r.abi!==e&&!r.napi||r.uv&&r.uv!==t4e||r.armv&&r.armv!==oQ||r.libc&&r.libc!==e4e)}}a(s4e,"matchTags");function GLt(t){return t.runtime==="node"&&t.napi}a(GLt,"runtimeAgnostic");function o4e(t){return function(e,r){return e.runtime!==r.runtime?e.runtime===t?-1:1:e.abi!==r.abi?e.abi?-1:1:e.specificity!==r.specificity?e.specificity>r.specificity?-1:1:0}}a(o4e,"compareTags");function VLt(){return!!(process.versions&&process.versions.nw)}a(VLt,"isNwjs");function KLt(){return process.versions&&process.versions.electron||process.env.ELECTRON_RUN_AS_NODE?!0:typeof window<"u"&&window.process&&window.process.type==="renderer"}a(KLt,"isElectron");function zLt(t){return t==="linux"&&QIe.existsSync("/etc/alpine-release")}a(zLt,"isAlpine");yf.parseTags=a4e;yf.matchTags=s4e;yf.compareTags=o4e;yf.parseTuple=r4e;yf.matchTuple=n4e;yf.compareTuples=i4e});var l4e=v((qHr,lQ)=>{var uQ=typeof __webpack_require__=="function"?__non_webpack_require__:require;typeof uQ.addon=="function"?lQ.exports=uQ.addon.bind(uQ):lQ.exports=u4e()});var dQ=v((HHr,d4e)=>{var mr={IMPOSSIBLE_CASE:"Impossible case. Please create issue.",TWEAK_ADD:"The tweak was out of range or the resulted private key is invalid",TWEAK_MUL:"The tweak was out of range or equal to zero",CONTEXT_RANDOMIZE_UNKNOW:"Unknow error on context randomization",SECKEY_INVALID:"Private Key is invalid",PUBKEY_PARSE:"Public Key could not be parsed",PUBKEY_SERIALIZE:"Public Key serialization error",PUBKEY_COMBINE:"The sum of the public keys is not valid",SIG_PARSE:"Signature could not be parsed",SIGN:"The nonce generation function failed, or the private key was invalid",RECOVER:"Public key could not be recover",ECDH:"Scalar was invalid (zero or overflow)"};function pu(t,e){if(!t)throw new Error(e)}a(pu,"assert");function dr(t,e,r){if(pu(e instanceof Uint8Array,`Expected ${t} to be an Uint8Array`),r!==void 0)if(Array.isArray(r)){let n=r.join(", "),i=`Expected ${t} to be an Uint8Array with length [${n}]`;pu(r.includes(e.length),i)}else{let n=`Expected ${t} to be an Uint8Array with length ${r}`;pu(e.length===r,n)}}a(dr,"isUint8Array");function xy(t){pu(b1(t)==="Boolean","Expected compressed to be a Boolean")}a(xy,"isCompressed");function Ml(t=r=>new Uint8Array(r),e){return typeof t=="function"&&(t=t(e)),dr("output",t,e),t}a(Ml,"getAssertedOutput");function b1(t){return Object.prototype.toString.call(t).slice(8,-1)}a(b1,"toTypeString");d4e.exports=t=>({contextRandomize(e){switch(pu(e===null||e instanceof Uint8Array,"Expected seed to be an Uint8Array or null"),e!==null&&dr("seed",e,32),t.contextRandomize(e)){case 1:throw new Error(mr.CONTEXT_RANDOMIZE_UNKNOW)}},privateKeyVerify(e){return dr("private key",e,32),t.privateKeyVerify(e)===0},privateKeyNegate(e){switch(dr("private key",e,32),t.privateKeyNegate(e)){case 0:return e;case 1:throw new Error(mr.IMPOSSIBLE_CASE)}},privateKeyTweakAdd(e,r){switch(dr("private key",e,32),dr("tweak",r,32),t.privateKeyTweakAdd(e,r)){case 0:return e;case 1:throw new Error(mr.TWEAK_ADD)}},privateKeyTweakMul(e,r){switch(dr("private key",e,32),dr("tweak",r,32),t.privateKeyTweakMul(e,r)){case 0:return e;case 1:throw new Error(mr.TWEAK_MUL)}},publicKeyVerify(e){return dr("public key",e,[33,65]),t.publicKeyVerify(e)===0},publicKeyCreate(e,r=!0,n){switch(dr("private key",e,32),xy(r),n=Ml(n,r?33:65),t.publicKeyCreate(n,e)){case 0:return n;case 1:throw new Error(mr.SECKEY_INVALID);case 2:throw new Error(mr.PUBKEY_SERIALIZE)}},publicKeyConvert(e,r=!0,n){switch(dr("public key",e,[33,65]),xy(r),n=Ml(n,r?33:65),t.publicKeyConvert(n,e)){case 0:return n;case 1:throw new Error(mr.PUBKEY_PARSE);case 2:throw new Error(mr.PUBKEY_SERIALIZE)}},publicKeyNegate(e,r=!0,n){switch(dr("public key",e,[33,65]),xy(r),n=Ml(n,r?33:65),t.publicKeyNegate(n,e)){case 0:return n;case 1:throw new Error(mr.PUBKEY_PARSE);case 2:throw new Error(mr.IMPOSSIBLE_CASE);case 3:throw new Error(mr.PUBKEY_SERIALIZE)}},publicKeyCombine(e,r=!0,n){pu(Array.isArray(e),"Expected public keys to be an Array"),pu(e.length>0,"Expected public keys array will have more than zero items");for(let i of e)dr("public key",i,[33,65]);switch(xy(r),n=Ml(n,r?33:65),t.publicKeyCombine(n,e)){case 0:return n;case 1:throw new Error(mr.PUBKEY_PARSE);case 2:throw new Error(mr.PUBKEY_COMBINE);case 3:throw new Error(mr.PUBKEY_SERIALIZE)}},publicKeyTweakAdd(e,r,n=!0,i){switch(dr("public key",e,[33,65]),dr("tweak",r,32),xy(n),i=Ml(i,n?33:65),t.publicKeyTweakAdd(i,e,r)){case 0:return i;case 1:throw new Error(mr.PUBKEY_PARSE);case 2:throw new Error(mr.TWEAK_ADD)}},publicKeyTweakMul(e,r,n=!0,i){switch(dr("public key",e,[33,65]),dr("tweak",r,32),xy(n),i=Ml(i,n?33:65),t.publicKeyTweakMul(i,e,r)){case 0:return i;case 1:throw new Error(mr.PUBKEY_PARSE);case 2:throw new Error(mr.TWEAK_MUL)}},signatureNormalize(e){switch(dr("signature",e,64),t.signatureNormalize(e)){case 0:return e;case 1:throw new Error(mr.SIG_PARSE)}},signatureExport(e,r){dr("signature",e,64),r=Ml(r,72);let n={output:r,outputlen:72};switch(t.signatureExport(n,e)){case 0:return r.slice(0,n.outputlen);case 1:throw new Error(mr.SIG_PARSE);case 2:throw new Error(mr.IMPOSSIBLE_CASE)}},signatureImport(e,r){switch(dr("signature",e),r=Ml(r,64),t.signatureImport(r,e)){case 0:return r;case 1:throw new Error(mr.SIG_PARSE);case 2:throw new Error(mr.IMPOSSIBLE_CASE)}},ecdsaSign(e,r,n={},i){dr("message",e,32),dr("private key",r,32),pu(b1(n)==="Object","Expected options to be an Object"),n.data!==void 0&&dr("options.data",n.data),n.noncefn!==void 0&&pu(b1(n.noncefn)==="Function","Expected options.noncefn to be a Function"),i=Ml(i,64);let s={signature:i,recid:null};switch(t.ecdsaSign(s,e,r,n.data,n.noncefn)){case 0:return s;case 1:throw new Error(mr.SIGN);case 2:throw new Error(mr.IMPOSSIBLE_CASE)}},ecdsaVerify(e,r,n){switch(dr("signature",e,64),dr("message",r,32),dr("public key",n,[33,65]),t.ecdsaVerify(e,r,n)){case 0:return!0;case 3:return!1;case 1:throw new Error(mr.SIG_PARSE);case 2:throw new Error(mr.PUBKEY_PARSE)}},ecdsaRecover(e,r,n,i=!0,s){switch(dr("signature",e,64),pu(b1(r)==="Number"&&r>=0&&r<=3,"Expected recovery id to be a Number within interval [0, 3]"),dr("message",n,32),xy(i),s=Ml(s,i?33:65),t.ecdsaRecover(s,e,r,n)){case 0:return s;case 1:throw new Error(mr.SIG_PARSE);case 2:throw new Error(mr.RECOVER);case 3:throw new Error(mr.IMPOSSIBLE_CASE)}},ecdh(e,r,n={},i){switch(dr("public key",e,[33,65]),dr("private key",r,32),pu(b1(n)==="Object","Expected options to be an Object"),n.data!==void 0&&dr("options.data",n.data),n.hashfn!==void 0?(pu(b1(n.hashfn)==="Function","Expected options.hashfn to be a Function"),n.xbuf!==void 0&&dr("options.xbuf",n.xbuf,32),n.ybuf!==void 0&&dr("options.ybuf",n.ybuf,32),dr("output",i)):i=Ml(i,32),t.ecdh(i,e,r,n.data,n.hashfn,n.xbuf,n.ybuf)){case 0:return i;case 1:throw new Error(mr.PUBKEY_PARSE);case 2:throw new Error(mr.ECDH)}}})});var p4e=v(($Hr,f4e)=>{var JLt=l4e()(__dirname);f4e.exports=dQ()(new JLt.Secp256k1)});var _4e=v((GHr,WLt)=>{WLt.exports={name:"elliptic",version:"6.6.1",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny <fedor@indutny.com>",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var Fl=v((h4e,fQ)=>{(function(t,e){"use strict";function r(B,b){if(!B)throw new Error(b||"Assertion failed")}a(r,"assert");function n(B,b){B.super_=b;var T=a(function(){},"TempCtor");T.prototype=b.prototype,B.prototype=new T,B.prototype.constructor=B}a(n,"inherits");function i(B,b,T){if(i.isBN(B))return B;this.negative=0,this.words=null,this.length=0,this.red=null,B!==null&&((b==="le"||b==="be")&&(T=b,b=10),this._init(B||0,b||10,T||"be"))}a(i,"BN"),typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var s;try{typeof window<"u"&&typeof window.Buffer<"u"?s=window.Buffer:s=require("buffer").Buffer}catch{}i.isBN=a(function(b){return b instanceof i?!0:b!==null&&typeof b=="object"&&b.constructor.wordSize===i.wordSize&&Array.isArray(b.words)},"isBN"),i.max=a(function(b,T){return b.cmp(T)>0?b:T},"max"),i.min=a(function(b,T){return b.cmp(T)<0?b:T},"min"),i.prototype._init=a(function(b,T,A){if(typeof b=="number")return this._initNumber(b,T,A);if(typeof b=="object")return this._initArray(b,T,A);T==="hex"&&(T=16),r(T===(T|0)&&T>=2&&T<=36),b=b.toString().replace(/\s+/g,"");var w=0;b[0]==="-"&&(w++,this.negative=1),w<b.length&&(T===16?this._parseHex(b,w,A):(this._parseBase(b,T,w),A==="le"&&this._initArray(this.toArray(),T,A)))},"init"),i.prototype._initNumber=a(function(b,T,A){b<0&&(this.negative=1,b=-b),b<67108864?(this.words=[b&67108863],this.length=1):b<4503599627370496?(this.words=[b&67108863,b/67108864&67108863],this.length=2):(r(b<9007199254740992),this.words=[b&67108863,b/67108864&67108863,1],this.length=3),A==="le"&&this._initArray(this.toArray(),T,A)},"_initNumber"),i.prototype._initArray=a(function(b,T,A){if(r(typeof b.length=="number"),b.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(b.length/3),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var k,I,D=0;if(A==="be")for(w=b.length-1,k=0;w>=0;w-=3)I=b[w]|b[w-1]<<8|b[w-2]<<16,this.words[k]|=I<<D&67108863,this.words[k+1]=I>>>26-D&67108863,D+=24,D>=26&&(D-=26,k++);else if(A==="le")for(w=0,k=0;w<b.length;w+=3)I=b[w]|b[w+1]<<8|b[w+2]<<16,this.words[k]|=I<<D&67108863,this.words[k+1]=I>>>26-D&67108863,D+=24,D>=26&&(D-=26,k++);return this.strip()},"_initArray");function o(B,b){var T=B.charCodeAt(b);return T>=65&&T<=70?T-55:T>=97&&T<=102?T-87:T-48&15}a(o,"parseHex4Bits");function c(B,b,T){var A=o(B,T);return T-1>=b&&(A|=o(B,T-1)<<4),A}a(c,"parseHexByte"),i.prototype._parseHex=a(function(b,T,A){this.length=Math.ceil((b.length-T)/6),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var k=0,I=0,D;if(A==="be")for(w=b.length-1;w>=T;w-=2)D=c(b,T,w)<<k,this.words[I]|=D&67108863,k>=18?(k-=18,I+=1,this.words[I]|=D>>>26):k+=8;else{var L=b.length-T;for(w=L%2===0?T+1:T;w<b.length;w+=2)D=c(b,T,w)<<k,this.words[I]|=D&67108863,k>=18?(k-=18,I+=1,this.words[I]|=D>>>26):k+=8}this.strip()},"_parseHex");function u(B,b,T,A){for(var w=0,k=Math.min(B.length,T),I=b;I<k;I++){var D=B.charCodeAt(I)-48;w*=A,D>=49?w+=D-49+10:D>=17?w+=D-17+10:w+=D}return w}a(u,"parseBase"),i.prototype._parseBase=a(function(b,T,A){this.words=[0],this.length=1;for(var w=0,k=1;k<=67108863;k*=T)w++;w--,k=k/T|0;for(var I=b.length-A,D=I%w,L=Math.min(I,I-D)+A,x=0,O=A;O<L;O+=w)x=u(b,O,O+w,T),this.imuln(k),this.words[0]+x<67108864?this.words[0]+=x:this._iaddn(x);if(D!==0){var H=1;for(x=u(b,O,b.length,T),O=0;O<D;O++)H*=T;this.imuln(H),this.words[0]+x<67108864?this.words[0]+=x:this._iaddn(x)}this.strip()},"_parseBase"),i.prototype.copy=a(function(b){b.words=new Array(this.length);for(var T=0;T<this.length;T++)b.words[T]=this.words[T];b.length=this.length,b.negative=this.negative,b.red=this.red},"copy"),i.prototype.clone=a(function(){var b=new i(null);return this.copy(b),b},"clone"),i.prototype._expand=a(function(b){for(;this.length<b;)this.words[this.length++]=0;return this},"_expand"),i.prototype.strip=a(function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},"strip"),i.prototype._normSign=a(function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},"_normSign"),i.prototype.inspect=a(function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"},"inspect");var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=a(function(b,T){b=b||10,T=T|0||1;var A;if(b===16||b==="hex"){A="";for(var w=0,k=0,I=0;I<this.length;I++){var D=this.words[I],L=((D<<w|k)&16777215).toString(16);k=D>>>24-w&16777215,w+=2,w>=26&&(w-=26,I--),k!==0||I!==this.length-1?A=l[6-L.length]+L+A:A=L+A}for(k!==0&&(A=k.toString(16)+A);A.length%T!==0;)A="0"+A;return this.negative!==0&&(A="-"+A),A}if(b===(b|0)&&b>=2&&b<=36){var x=d[b],O=f[b];A="";var H=this.clone();for(H.negative=0;!H.isZero();){var M=H.modn(O).toString(b);H=H.idivn(O),H.isZero()?A=M+A:A=l[x-M.length]+M+A}for(this.isZero()&&(A="0"+A);A.length%T!==0;)A="0"+A;return this.negative!==0&&(A="-"+A),A}r(!1,"Base should be between 2 and 36")},"toString"),i.prototype.toNumber=a(function(){var b=this.words[0];return this.length===2?b+=this.words[1]*67108864:this.length===3&&this.words[2]===1?b+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-b:b},"toNumber"),i.prototype.toJSON=a(function(){return this.toString(16)},"toJSON"),i.prototype.toBuffer=a(function(b,T){return r(typeof s<"u"),this.toArrayLike(s,b,T)},"toBuffer"),i.prototype.toArray=a(function(b,T){return this.toArrayLike(Array,b,T)},"toArray"),i.prototype.toArrayLike=a(function(b,T,A){var w=this.byteLength(),k=A||Math.max(1,w);r(w<=k,"byte array longer than desired length"),r(k>0,"Requested array length <= 0"),this.strip();var I=T==="le",D=new b(k),L,x,O=this.clone();if(I){for(x=0;!O.isZero();x++)L=O.andln(255),O.iushrn(8),D[x]=L;for(;x<k;x++)D[x]=0}else{for(x=0;x<k-w;x++)D[x]=0;for(x=0;!O.isZero();x++)L=O.andln(255),O.iushrn(8),D[k-x-1]=L}return D},"toArrayLike"),Math.clz32?i.prototype._countBits=a(function(b){return 32-Math.clz32(b)},"_countBits"):i.prototype._countBits=a(function(b){var T=b,A=0;return T>=4096&&(A+=13,T>>>=13),T>=64&&(A+=7,T>>>=7),T>=8&&(A+=4,T>>>=4),T>=2&&(A+=2,T>>>=2),A+T},"_countBits"),i.prototype._zeroBits=a(function(b){if(b===0)return 26;var T=b,A=0;return(T&8191)===0&&(A+=13,T>>>=13),(T&127)===0&&(A+=7,T>>>=7),(T&15)===0&&(A+=4,T>>>=4),(T&3)===0&&(A+=2,T>>>=2),(T&1)===0&&A++,A},"_zeroBits"),i.prototype.bitLength=a(function(){var b=this.words[this.length-1],T=this._countBits(b);return(this.length-1)*26+T},"bitLength");function p(B){for(var b=new Array(B.bitLength()),T=0;T<b.length;T++){var A=T/26|0,w=T%26;b[T]=(B.words[A]&1<<w)>>>w}return b}a(p,"toBitArray"),i.prototype.zeroBits=a(function(){if(this.isZero())return 0;for(var b=0,T=0;T<this.length;T++){var A=this._zeroBits(this.words[T]);if(b+=A,A!==26)break}return b},"zeroBits"),i.prototype.byteLength=a(function(){return Math.ceil(this.bitLength()/8)},"byteLength"),i.prototype.toTwos=a(function(b){return this.negative!==0?this.abs().inotn(b).iaddn(1):this.clone()},"toTwos"),i.prototype.fromTwos=a(function(b){return this.testn(b-1)?this.notn(b).iaddn(1).ineg():this.clone()},"fromTwos"),i.prototype.isNeg=a(function(){return this.negative!==0},"isNeg"),i.prototype.neg=a(function(){return this.clone().ineg()},"neg"),i.prototype.ineg=a(function(){return this.isZero()||(this.negative^=1),this},"ineg"),i.prototype.iuor=a(function(b){for(;this.length<b.length;)this.words[this.length++]=0;for(var T=0;T<b.length;T++)this.words[T]=this.words[T]|b.words[T];return this.strip()},"iuor"),i.prototype.ior=a(function(b){return r((this.negative|b.negative)===0),this.iuor(b)},"ior"),i.prototype.or=a(function(b){return this.length>b.length?this.clone().ior(b):b.clone().ior(this)},"or"),i.prototype.uor=a(function(b){return this.length>b.length?this.clone().iuor(b):b.clone().iuor(this)},"uor"),i.prototype.iuand=a(function(b){var T;this.length>b.length?T=b:T=this;for(var A=0;A<T.length;A++)this.words[A]=this.words[A]&b.words[A];return this.length=T.length,this.strip()},"iuand"),i.prototype.iand=a(function(b){return r((this.negative|b.negative)===0),this.iuand(b)},"iand"),i.prototype.and=a(function(b){return this.length>b.length?this.clone().iand(b):b.clone().iand(this)},"and"),i.prototype.uand=a(function(b){return this.length>b.length?this.clone().iuand(b):b.clone().iuand(this)},"uand"),i.prototype.iuxor=a(function(b){var T,A;this.length>b.length?(T=this,A=b):(T=b,A=this);for(var w=0;w<A.length;w++)this.words[w]=T.words[w]^A.words[w];if(this!==T)for(;w<T.length;w++)this.words[w]=T.words[w];return this.length=T.length,this.strip()},"iuxor"),i.prototype.ixor=a(function(b){return r((this.negative|b.negative)===0),this.iuxor(b)},"ixor"),i.prototype.xor=a(function(b){return this.length>b.length?this.clone().ixor(b):b.clone().ixor(this)},"xor"),i.prototype.uxor=a(function(b){return this.length>b.length?this.clone().iuxor(b):b.clone().iuxor(this)},"uxor"),i.prototype.inotn=a(function(b){r(typeof b=="number"&&b>=0);var T=Math.ceil(b/26)|0,A=b%26;this._expand(T),A>0&&T--;for(var w=0;w<T;w++)this.words[w]=~this.words[w]&67108863;return A>0&&(this.words[w]=~this.words[w]&67108863>>26-A),this.strip()},"inotn"),i.prototype.notn=a(function(b){return this.clone().inotn(b)},"notn"),i.prototype.setn=a(function(b,T){r(typeof b=="number"&&b>=0);var A=b/26|0,w=b%26;return this._expand(A+1),T?this.words[A]=this.words[A]|1<<w:this.words[A]=this.words[A]&~(1<<w),this.strip()},"setn"),i.prototype.iadd=a(function(b){var T;if(this.negative!==0&&b.negative===0)return this.negative=0,T=this.isub(b),this.negative^=1,this._normSign();if(this.negative===0&&b.negative!==0)return b.negative=0,T=this.isub(b),b.negative=1,T._normSign();var A,w;this.length>b.length?(A=this,w=b):(A=b,w=this);for(var k=0,I=0;I<w.length;I++)T=(A.words[I]|0)+(w.words[I]|0)+k,this.words[I]=T&67108863,k=T>>>26;for(;k!==0&&I<A.length;I++)T=(A.words[I]|0)+k,this.words[I]=T&67108863,k=T>>>26;if(this.length=A.length,k!==0)this.words[this.length]=k,this.length++;else if(A!==this)for(;I<A.length;I++)this.words[I]=A.words[I];return this},"iadd"),i.prototype.add=a(function(b){var T;return b.negative!==0&&this.negative===0?(b.negative=0,T=this.sub(b),b.negative^=1,T):b.negative===0&&this.negative!==0?(this.negative=0,T=b.sub(this),this.negative=1,T):this.length>b.length?this.clone().iadd(b):b.clone().iadd(this)},"add"),i.prototype.isub=a(function(b){if(b.negative!==0){b.negative=0;var T=this.iadd(b);return b.negative=1,T._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(b),this.negative=1,this._normSign();var A=this.cmp(b);if(A===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,k;A>0?(w=this,k=b):(w=b,k=this);for(var I=0,D=0;D<k.length;D++)T=(w.words[D]|0)-(k.words[D]|0)+I,I=T>>26,this.words[D]=T&67108863;for(;I!==0&&D<w.length;D++)T=(w.words[D]|0)+I,I=T>>26,this.words[D]=T&67108863;if(I===0&&D<w.length&&w!==this)for(;D<w.length;D++)this.words[D]=w.words[D];return this.length=Math.max(this.length,D),w!==this&&(this.negative=1),this.strip()},"isub"),i.prototype.sub=a(function(b){return this.clone().isub(b)},"sub");function _(B,b,T){T.negative=b.negative^B.negative;var A=B.length+b.length|0;T.length=A,A=A-1|0;var w=B.words[0]|0,k=b.words[0]|0,I=w*k,D=I&67108863,L=I/67108864|0;T.words[0]=D;for(var x=1;x<A;x++){for(var O=L>>>26,H=L&67108863,M=Math.min(x,b.length-1),z=Math.max(0,x-B.length+1);z<=M;z++){var X=x-z|0;w=B.words[X]|0,k=b.words[z]|0,I=w*k+H,O+=I/67108864|0,H=I&67108863}T.words[x]=H|0,L=O|0}return L!==0?T.words[x]=L|0:T.length--,T.strip()}a(_,"smallMulTo");var h=a(function(b,T,A){var w=b.words,k=T.words,I=A.words,D=0,L,x,O,H=w[0]|0,M=H&8191,z=H>>>13,X=w[1]|0,Q=X&8191,ee=X>>>13,le=w[2]|0,_e=le&8191,me=le>>>13,Se=w[3]|0,Ae=Se&8191,ne=Se>>>13,oe=w[4]|0,de=oe&8191,ye=oe>>>13,Ee=w[5]|0,Ce=Ee&8191,Ve=Ee>>>13,or=w[6]|0,Qe=or&8191,Jt=or>>>13,Ad=w[7]|0,Ur=Ad&8191,qr=Ad>>>13,kd=w[8]|0,$n=kd&8191,Tn=kd>>>13,Ym=w[9]|0,Hr=Ym&8191,$r=Ym>>>13,fb=k[0]|0,Sn=fb&8191,An=fb>>>13,pb=k[1]|0,kn=pb&8191,Nn=pb>>>13,_b=k[2]|0,On=_b&8191,Gn=_b>>>13,rh=k[3]|0,Vn=rh&8191,Kn=rh>>>13,hb=k[4]|0,In=hb&8191,zn=hb>>>13,mb=k[5]|0,Cn=mb&8191,Jn=mb>>>13,Zm=k[6]|0,Wt=Zm&8191,Er=Zm>>>13,eg=k[7]|0,Wn=eg&8191,li=eg>>>13,WO=k[8]|0,di=WO&8191,fi=WO>>>13,XO=k[9]|0,pi=XO&8191,_i=XO>>>13;A.negative=b.negative^T.negative,A.length=19,L=Math.imul(M,Sn),x=Math.imul(M,An),x=x+Math.imul(z,Sn)|0,O=Math.imul(z,An);var P=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(P>>>26)|0,P&=67108863,L=Math.imul(Q,Sn),x=Math.imul(Q,An),x=x+Math.imul(ee,Sn)|0,O=Math.imul(ee,An),L=L+Math.imul(M,kn)|0,x=x+Math.imul(M,Nn)|0,x=x+Math.imul(z,kn)|0,O=O+Math.imul(z,Nn)|0;var j=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(j>>>26)|0,j&=67108863,L=Math.imul(_e,Sn),x=Math.imul(_e,An),x=x+Math.imul(me,Sn)|0,O=Math.imul(me,An),L=L+Math.imul(Q,kn)|0,x=x+Math.imul(Q,Nn)|0,x=x+Math.imul(ee,kn)|0,O=O+Math.imul(ee,Nn)|0,L=L+Math.imul(M,On)|0,x=x+Math.imul(M,Gn)|0,x=x+Math.imul(z,On)|0,O=O+Math.imul(z,Gn)|0;var G=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(G>>>26)|0,G&=67108863,L=Math.imul(Ae,Sn),x=Math.imul(Ae,An),x=x+Math.imul(ne,Sn)|0,O=Math.imul(ne,An),L=L+Math.imul(_e,kn)|0,x=x+Math.imul(_e,Nn)|0,x=x+Math.imul(me,kn)|0,O=O+Math.imul(me,Nn)|0,L=L+Math.imul(Q,On)|0,x=x+Math.imul(Q,Gn)|0,x=x+Math.imul(ee,On)|0,O=O+Math.imul(ee,Gn)|0,L=L+Math.imul(M,Vn)|0,x=x+Math.imul(M,Kn)|0,x=x+Math.imul(z,Vn)|0,O=O+Math.imul(z,Kn)|0;var V=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(V>>>26)|0,V&=67108863,L=Math.imul(de,Sn),x=Math.imul(de,An),x=x+Math.imul(ye,Sn)|0,O=Math.imul(ye,An),L=L+Math.imul(Ae,kn)|0,x=x+Math.imul(Ae,Nn)|0,x=x+Math.imul(ne,kn)|0,O=O+Math.imul(ne,Nn)|0,L=L+Math.imul(_e,On)|0,x=x+Math.imul(_e,Gn)|0,x=x+Math.imul(me,On)|0,O=O+Math.imul(me,Gn)|0,L=L+Math.imul(Q,Vn)|0,x=x+Math.imul(Q,Kn)|0,x=x+Math.imul(ee,Vn)|0,O=O+Math.imul(ee,Kn)|0,L=L+Math.imul(M,In)|0,x=x+Math.imul(M,zn)|0,x=x+Math.imul(z,In)|0,O=O+Math.imul(z,zn)|0;var W=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(W>>>26)|0,W&=67108863,L=Math.imul(Ce,Sn),x=Math.imul(Ce,An),x=x+Math.imul(Ve,Sn)|0,O=Math.imul(Ve,An),L=L+Math.imul(de,kn)|0,x=x+Math.imul(de,Nn)|0,x=x+Math.imul(ye,kn)|0,O=O+Math.imul(ye,Nn)|0,L=L+Math.imul(Ae,On)|0,x=x+Math.imul(Ae,Gn)|0,x=x+Math.imul(ne,On)|0,O=O+Math.imul(ne,Gn)|0,L=L+Math.imul(_e,Vn)|0,x=x+Math.imul(_e,Kn)|0,x=x+Math.imul(me,Vn)|0,O=O+Math.imul(me,Kn)|0,L=L+Math.imul(Q,In)|0,x=x+Math.imul(Q,zn)|0,x=x+Math.imul(ee,In)|0,O=O+Math.imul(ee,zn)|0,L=L+Math.imul(M,Cn)|0,x=x+Math.imul(M,Jn)|0,x=x+Math.imul(z,Cn)|0,O=O+Math.imul(z,Jn)|0;var J=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(J>>>26)|0,J&=67108863,L=Math.imul(Qe,Sn),x=Math.imul(Qe,An),x=x+Math.imul(Jt,Sn)|0,O=Math.imul(Jt,An),L=L+Math.imul(Ce,kn)|0,x=x+Math.imul(Ce,Nn)|0,x=x+Math.imul(Ve,kn)|0,O=O+Math.imul(Ve,Nn)|0,L=L+Math.imul(de,On)|0,x=x+Math.imul(de,Gn)|0,x=x+Math.imul(ye,On)|0,O=O+Math.imul(ye,Gn)|0,L=L+Math.imul(Ae,Vn)|0,x=x+Math.imul(Ae,Kn)|0,x=x+Math.imul(ne,Vn)|0,O=O+Math.imul(ne,Kn)|0,L=L+Math.imul(_e,In)|0,x=x+Math.imul(_e,zn)|0,x=x+Math.imul(me,In)|0,O=O+Math.imul(me,zn)|0,L=L+Math.imul(Q,Cn)|0,x=x+Math.imul(Q,Jn)|0,x=x+Math.imul(ee,Cn)|0,O=O+Math.imul(ee,Jn)|0,L=L+Math.imul(M,Wt)|0,x=x+Math.imul(M,Er)|0,x=x+Math.imul(z,Wt)|0,O=O+Math.imul(z,Er)|0;var Y=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(Y>>>26)|0,Y&=67108863,L=Math.imul(Ur,Sn),x=Math.imul(Ur,An),x=x+Math.imul(qr,Sn)|0,O=Math.imul(qr,An),L=L+Math.imul(Qe,kn)|0,x=x+Math.imul(Qe,Nn)|0,x=x+Math.imul(Jt,kn)|0,O=O+Math.imul(Jt,Nn)|0,L=L+Math.imul(Ce,On)|0,x=x+Math.imul(Ce,Gn)|0,x=x+Math.imul(Ve,On)|0,O=O+Math.imul(Ve,Gn)|0,L=L+Math.imul(de,Vn)|0,x=x+Math.imul(de,Kn)|0,x=x+Math.imul(ye,Vn)|0,O=O+Math.imul(ye,Kn)|0,L=L+Math.imul(Ae,In)|0,x=x+Math.imul(Ae,zn)|0,x=x+Math.imul(ne,In)|0,O=O+Math.imul(ne,zn)|0,L=L+Math.imul(_e,Cn)|0,x=x+Math.imul(_e,Jn)|0,x=x+Math.imul(me,Cn)|0,O=O+Math.imul(me,Jn)|0,L=L+Math.imul(Q,Wt)|0,x=x+Math.imul(Q,Er)|0,x=x+Math.imul(ee,Wt)|0,O=O+Math.imul(ee,Er)|0,L=L+Math.imul(M,Wn)|0,x=x+Math.imul(M,li)|0,x=x+Math.imul(z,Wn)|0,O=O+Math.imul(z,li)|0;var te=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(te>>>26)|0,te&=67108863,L=Math.imul($n,Sn),x=Math.imul($n,An),x=x+Math.imul(Tn,Sn)|0,O=Math.imul(Tn,An),L=L+Math.imul(Ur,kn)|0,x=x+Math.imul(Ur,Nn)|0,x=x+Math.imul(qr,kn)|0,O=O+Math.imul(qr,Nn)|0,L=L+Math.imul(Qe,On)|0,x=x+Math.imul(Qe,Gn)|0,x=x+Math.imul(Jt,On)|0,O=O+Math.imul(Jt,Gn)|0,L=L+Math.imul(Ce,Vn)|0,x=x+Math.imul(Ce,Kn)|0,x=x+Math.imul(Ve,Vn)|0,O=O+Math.imul(Ve,Kn)|0,L=L+Math.imul(de,In)|0,x=x+Math.imul(de,zn)|0,x=x+Math.imul(ye,In)|0,O=O+Math.imul(ye,zn)|0,L=L+Math.imul(Ae,Cn)|0,x=x+Math.imul(Ae,Jn)|0,x=x+Math.imul(ne,Cn)|0,O=O+Math.imul(ne,Jn)|0,L=L+Math.imul(_e,Wt)|0,x=x+Math.imul(_e,Er)|0,x=x+Math.imul(me,Wt)|0,O=O+Math.imul(me,Er)|0,L=L+Math.imul(Q,Wn)|0,x=x+Math.imul(Q,li)|0,x=x+Math.imul(ee,Wn)|0,O=O+Math.imul(ee,li)|0,L=L+Math.imul(M,di)|0,x=x+Math.imul(M,fi)|0,x=x+Math.imul(z,di)|0,O=O+Math.imul(z,fi)|0;var ie=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(ie>>>26)|0,ie&=67108863,L=Math.imul(Hr,Sn),x=Math.imul(Hr,An),x=x+Math.imul($r,Sn)|0,O=Math.imul($r,An),L=L+Math.imul($n,kn)|0,x=x+Math.imul($n,Nn)|0,x=x+Math.imul(Tn,kn)|0,O=O+Math.imul(Tn,Nn)|0,L=L+Math.imul(Ur,On)|0,x=x+Math.imul(Ur,Gn)|0,x=x+Math.imul(qr,On)|0,O=O+Math.imul(qr,Gn)|0,L=L+Math.imul(Qe,Vn)|0,x=x+Math.imul(Qe,Kn)|0,x=x+Math.imul(Jt,Vn)|0,O=O+Math.imul(Jt,Kn)|0,L=L+Math.imul(Ce,In)|0,x=x+Math.imul(Ce,zn)|0,x=x+Math.imul(Ve,In)|0,O=O+Math.imul(Ve,zn)|0,L=L+Math.imul(de,Cn)|0,x=x+Math.imul(de,Jn)|0,x=x+Math.imul(ye,Cn)|0,O=O+Math.imul(ye,Jn)|0,L=L+Math.imul(Ae,Wt)|0,x=x+Math.imul(Ae,Er)|0,x=x+Math.imul(ne,Wt)|0,O=O+Math.imul(ne,Er)|0,L=L+Math.imul(_e,Wn)|0,x=x+Math.imul(_e,li)|0,x=x+Math.imul(me,Wn)|0,O=O+Math.imul(me,li)|0,L=L+Math.imul(Q,di)|0,x=x+Math.imul(Q,fi)|0,x=x+Math.imul(ee,di)|0,O=O+Math.imul(ee,fi)|0,L=L+Math.imul(M,pi)|0,x=x+Math.imul(M,_i)|0,x=x+Math.imul(z,pi)|0,O=O+Math.imul(z,_i)|0;var re=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(re>>>26)|0,re&=67108863,L=Math.imul(Hr,kn),x=Math.imul(Hr,Nn),x=x+Math.imul($r,kn)|0,O=Math.imul($r,Nn),L=L+Math.imul($n,On)|0,x=x+Math.imul($n,Gn)|0,x=x+Math.imul(Tn,On)|0,O=O+Math.imul(Tn,Gn)|0,L=L+Math.imul(Ur,Vn)|0,x=x+Math.imul(Ur,Kn)|0,x=x+Math.imul(qr,Vn)|0,O=O+Math.imul(qr,Kn)|0,L=L+Math.imul(Qe,In)|0,x=x+Math.imul(Qe,zn)|0,x=x+Math.imul(Jt,In)|0,O=O+Math.imul(Jt,zn)|0,L=L+Math.imul(Ce,Cn)|0,x=x+Math.imul(Ce,Jn)|0,x=x+Math.imul(Ve,Cn)|0,O=O+Math.imul(Ve,Jn)|0,L=L+Math.imul(de,Wt)|0,x=x+Math.imul(de,Er)|0,x=x+Math.imul(ye,Wt)|0,O=O+Math.imul(ye,Er)|0,L=L+Math.imul(Ae,Wn)|0,x=x+Math.imul(Ae,li)|0,x=x+Math.imul(ne,Wn)|0,O=O+Math.imul(ne,li)|0,L=L+Math.imul(_e,di)|0,x=x+Math.imul(_e,fi)|0,x=x+Math.imul(me,di)|0,O=O+Math.imul(me,fi)|0,L=L+Math.imul(Q,pi)|0,x=x+Math.imul(Q,_i)|0,x=x+Math.imul(ee,pi)|0,O=O+Math.imul(ee,_i)|0;var se=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(se>>>26)|0,se&=67108863,L=Math.imul(Hr,On),x=Math.imul(Hr,Gn),x=x+Math.imul($r,On)|0,O=Math.imul($r,Gn),L=L+Math.imul($n,Vn)|0,x=x+Math.imul($n,Kn)|0,x=x+Math.imul(Tn,Vn)|0,O=O+Math.imul(Tn,Kn)|0,L=L+Math.imul(Ur,In)|0,x=x+Math.imul(Ur,zn)|0,x=x+Math.imul(qr,In)|0,O=O+Math.imul(qr,zn)|0,L=L+Math.imul(Qe,Cn)|0,x=x+Math.imul(Qe,Jn)|0,x=x+Math.imul(Jt,Cn)|0,O=O+Math.imul(Jt,Jn)|0,L=L+Math.imul(Ce,Wt)|0,x=x+Math.imul(Ce,Er)|0,x=x+Math.imul(Ve,Wt)|0,O=O+Math.imul(Ve,Er)|0,L=L+Math.imul(de,Wn)|0,x=x+Math.imul(de,li)|0,x=x+Math.imul(ye,Wn)|0,O=O+Math.imul(ye,li)|0,L=L+Math.imul(Ae,di)|0,x=x+Math.imul(Ae,fi)|0,x=x+Math.imul(ne,di)|0,O=O+Math.imul(ne,fi)|0,L=L+Math.imul(_e,pi)|0,x=x+Math.imul(_e,_i)|0,x=x+Math.imul(me,pi)|0,O=O+Math.imul(me,_i)|0;var pe=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(pe>>>26)|0,pe&=67108863,L=Math.imul(Hr,Vn),x=Math.imul(Hr,Kn),x=x+Math.imul($r,Vn)|0,O=Math.imul($r,Kn),L=L+Math.imul($n,In)|0,x=x+Math.imul($n,zn)|0,x=x+Math.imul(Tn,In)|0,O=O+Math.imul(Tn,zn)|0,L=L+Math.imul(Ur,Cn)|0,x=x+Math.imul(Ur,Jn)|0,x=x+Math.imul(qr,Cn)|0,O=O+Math.imul(qr,Jn)|0,L=L+Math.imul(Qe,Wt)|0,x=x+Math.imul(Qe,Er)|0,x=x+Math.imul(Jt,Wt)|0,O=O+Math.imul(Jt,Er)|0,L=L+Math.imul(Ce,Wn)|0,x=x+Math.imul(Ce,li)|0,x=x+Math.imul(Ve,Wn)|0,O=O+Math.imul(Ve,li)|0,L=L+Math.imul(de,di)|0,x=x+Math.imul(de,fi)|0,x=x+Math.imul(ye,di)|0,O=O+Math.imul(ye,fi)|0,L=L+Math.imul(Ae,pi)|0,x=x+Math.imul(Ae,_i)|0,x=x+Math.imul(ne,pi)|0,O=O+Math.imul(ne,_i)|0;var he=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(he>>>26)|0,he&=67108863,L=Math.imul(Hr,In),x=Math.imul(Hr,zn),x=x+Math.imul($r,In)|0,O=Math.imul($r,zn),L=L+Math.imul($n,Cn)|0,x=x+Math.imul($n,Jn)|0,x=x+Math.imul(Tn,Cn)|0,O=O+Math.imul(Tn,Jn)|0,L=L+Math.imul(Ur,Wt)|0,x=x+Math.imul(Ur,Er)|0,x=x+Math.imul(qr,Wt)|0,O=O+Math.imul(qr,Er)|0,L=L+Math.imul(Qe,Wn)|0,x=x+Math.imul(Qe,li)|0,x=x+Math.imul(Jt,Wn)|0,O=O+Math.imul(Jt,li)|0,L=L+Math.imul(Ce,di)|0,x=x+Math.imul(Ce,fi)|0,x=x+Math.imul(Ve,di)|0,O=O+Math.imul(Ve,fi)|0,L=L+Math.imul(de,pi)|0,x=x+Math.imul(de,_i)|0,x=x+Math.imul(ye,pi)|0,O=O+Math.imul(ye,_i)|0;var qe=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(qe>>>26)|0,qe&=67108863,L=Math.imul(Hr,Cn),x=Math.imul(Hr,Jn),x=x+Math.imul($r,Cn)|0,O=Math.imul($r,Jn),L=L+Math.imul($n,Wt)|0,x=x+Math.imul($n,Er)|0,x=x+Math.imul(Tn,Wt)|0,O=O+Math.imul(Tn,Er)|0,L=L+Math.imul(Ur,Wn)|0,x=x+Math.imul(Ur,li)|0,x=x+Math.imul(qr,Wn)|0,O=O+Math.imul(qr,li)|0,L=L+Math.imul(Qe,di)|0,x=x+Math.imul(Qe,fi)|0,x=x+Math.imul(Jt,di)|0,O=O+Math.imul(Jt,fi)|0,L=L+Math.imul(Ce,pi)|0,x=x+Math.imul(Ce,_i)|0,x=x+Math.imul(Ve,pi)|0,O=O+Math.imul(Ve,_i)|0;var Gt=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,L=Math.imul(Hr,Wt),x=Math.imul(Hr,Er),x=x+Math.imul($r,Wt)|0,O=Math.imul($r,Er),L=L+Math.imul($n,Wn)|0,x=x+Math.imul($n,li)|0,x=x+Math.imul(Tn,Wn)|0,O=O+Math.imul(Tn,li)|0,L=L+Math.imul(Ur,di)|0,x=x+Math.imul(Ur,fi)|0,x=x+Math.imul(qr,di)|0,O=O+Math.imul(qr,fi)|0,L=L+Math.imul(Qe,pi)|0,x=x+Math.imul(Qe,_i)|0,x=x+Math.imul(Jt,pi)|0,O=O+Math.imul(Jt,_i)|0;var et=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(et>>>26)|0,et&=67108863,L=Math.imul(Hr,Wn),x=Math.imul(Hr,li),x=x+Math.imul($r,Wn)|0,O=Math.imul($r,li),L=L+Math.imul($n,di)|0,x=x+Math.imul($n,fi)|0,x=x+Math.imul(Tn,di)|0,O=O+Math.imul(Tn,fi)|0,L=L+Math.imul(Ur,pi)|0,x=x+Math.imul(Ur,_i)|0,x=x+Math.imul(qr,pi)|0,O=O+Math.imul(qr,_i)|0;var ca=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(ca>>>26)|0,ca&=67108863,L=Math.imul(Hr,di),x=Math.imul(Hr,fi),x=x+Math.imul($r,di)|0,O=Math.imul($r,fi),L=L+Math.imul($n,pi)|0,x=x+Math.imul($n,_i)|0,x=x+Math.imul(Tn,pi)|0,O=O+Math.imul(Tn,_i)|0;var Yr=(D+L|0)+((x&8191)<<13)|0;D=(O+(x>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,L=Math.imul(Hr,pi),x=Math.imul(Hr,_i),x=x+Math.imul($r,pi)|0,O=Math.imul($r,_i);var Ms=(D+L|0)+((x&8191)<<13)|0;return D=(O+(x>>>13)|0)+(Ms>>>26)|0,Ms&=67108863,I[0]=P,I[1]=j,I[2]=G,I[3]=V,I[4]=W,I[5]=J,I[6]=Y,I[7]=te,I[8]=ie,I[9]=re,I[10]=se,I[11]=pe,I[12]=he,I[13]=qe,I[14]=Gt,I[15]=et,I[16]=ca,I[17]=Yr,I[18]=Ms,D!==0&&(I[19]=D,A.length++),A},"comb10MulTo");Math.imul||(h=_);function m(B,b,T){T.negative=b.negative^B.negative,T.length=B.length+b.length;for(var A=0,w=0,k=0;k<T.length-1;k++){var I=w;w=0;for(var D=A&67108863,L=Math.min(k,b.length-1),x=Math.max(0,k-B.length+1);x<=L;x++){var O=k-x,H=B.words[O]|0,M=b.words[x]|0,z=H*M,X=z&67108863;I=I+(z/67108864|0)|0,X=X+D|0,D=X&67108863,I=I+(X>>>26)|0,w+=I>>>26,I&=67108863}T.words[k]=D,A=I,I=w}return A!==0?T.words[k]=A:T.length--,T.strip()}a(m,"bigMulTo");function g(B,b,T){var A=new y;return A.mulp(B,b,T)}a(g,"jumboMulTo"),i.prototype.mulTo=a(function(b,T){var A,w=this.length+b.length;return this.length===10&&b.length===10?A=h(this,b,T):w<63?A=_(this,b,T):w<1024?A=m(this,b,T):A=g(this,b,T),A},"mulTo");function y(B,b){this.x=B,this.y=b}a(y,"FFTM"),y.prototype.makeRBT=a(function(b){for(var T=new Array(b),A=i.prototype._countBits(b)-1,w=0;w<b;w++)T[w]=this.revBin(w,A,b);return T},"makeRBT"),y.prototype.revBin=a(function(b,T,A){if(b===0||b===A-1)return b;for(var w=0,k=0;k<T;k++)w|=(b&1)<<T-k-1,b>>=1;return w},"revBin"),y.prototype.permute=a(function(b,T,A,w,k,I){for(var D=0;D<I;D++)w[D]=T[b[D]],k[D]=A[b[D]]},"permute"),y.prototype.transform=a(function(b,T,A,w,k,I){this.permute(I,b,T,A,w,k);for(var D=1;D<k;D<<=1)for(var L=D<<1,x=Math.cos(2*Math.PI/L),O=Math.sin(2*Math.PI/L),H=0;H<k;H+=L)for(var M=x,z=O,X=0;X<D;X++){var Q=A[H+X],ee=w[H+X],le=A[H+X+D],_e=w[H+X+D],me=M*le-z*_e;_e=M*_e+z*le,le=me,A[H+X]=Q+le,w[H+X]=ee+_e,A[H+X+D]=Q-le,w[H+X+D]=ee-_e,X!==L&&(me=x*M-O*z,z=x*z+O*M,M=me)}},"transform"),y.prototype.guessLen13b=a(function(b,T){var A=Math.max(T,b)|1,w=A&1,k=0;for(A=A/2|0;A;A=A>>>1)k++;return 1<<k+1+w},"guessLen13b"),y.prototype.conjugate=a(function(b,T,A){if(!(A<=1))for(var w=0;w<A/2;w++){var k=b[w];b[w]=b[A-w-1],b[A-w-1]=k,k=T[w],T[w]=-T[A-w-1],T[A-w-1]=-k}},"conjugate"),y.prototype.normalize13b=a(function(b,T){for(var A=0,w=0;w<T/2;w++){var k=Math.round(b[2*w+1]/T)*8192+Math.round(b[2*w]/T)+A;b[w]=k&67108863,k<67108864?A=0:A=k/67108864|0}return b},"normalize13b"),y.prototype.convert13b=a(function(b,T,A,w){for(var k=0,I=0;I<T;I++)k=k+(b[I]|0),A[2*I]=k&8191,k=k>>>13,A[2*I+1]=k&8191,k=k>>>13;for(I=2*T;I<w;++I)A[I]=0;r(k===0),r((k&-8192)===0)},"convert13b"),y.prototype.stub=a(function(b){for(var T=new Array(b),A=0;A<b;A++)T[A]=0;return T},"stub"),y.prototype.mulp=a(function(b,T,A){var w=2*this.guessLen13b(b.length,T.length),k=this.makeRBT(w),I=this.stub(w),D=new Array(w),L=new Array(w),x=new Array(w),O=new Array(w),H=new Array(w),M=new Array(w),z=A.words;z.length=w,this.convert13b(b.words,b.length,D,w),this.convert13b(T.words,T.length,O,w),this.transform(D,I,L,x,w,k),this.transform(O,I,H,M,w,k);for(var X=0;X<w;X++){var Q=L[X]*H[X]-x[X]*M[X];x[X]=L[X]*M[X]+x[X]*H[X],L[X]=Q}return this.conjugate(L,x,w),this.transform(L,x,z,I,w,k),this.conjugate(z,I,w),this.normalize13b(z,w),A.negative=b.negative^T.negative,A.length=b.length+T.length,A.strip()},"mulp"),i.prototype.mul=a(function(b){var T=new i(null);return T.words=new Array(this.length+b.length),this.mulTo(b,T)},"mul"),i.prototype.mulf=a(function(b){var T=new i(null);return T.words=new Array(this.length+b.length),g(this,b,T)},"mulf"),i.prototype.imul=a(function(b){return this.clone().mulTo(b,this)},"imul"),i.prototype.imuln=a(function(b){r(typeof b=="number"),r(b<67108864);for(var T=0,A=0;A<this.length;A++){var w=(this.words[A]|0)*b,k=(w&67108863)+(T&67108863);T>>=26,T+=w/67108864|0,T+=k>>>26,this.words[A]=k&67108863}return T!==0&&(this.words[A]=T,this.length++),this.length=b===0?1:this.length,this},"imuln"),i.prototype.muln=a(function(b){return this.clone().imuln(b)},"muln"),i.prototype.sqr=a(function(){return this.mul(this)},"sqr"),i.prototype.isqr=a(function(){return this.imul(this.clone())},"isqr"),i.prototype.pow=a(function(b){var T=p(b);if(T.length===0)return new i(1);for(var A=this,w=0;w<T.length&&T[w]===0;w++,A=A.sqr());if(++w<T.length)for(var k=A.sqr();w<T.length;w++,k=k.sqr())T[w]!==0&&(A=A.mul(k));return A},"pow"),i.prototype.iushln=a(function(b){r(typeof b=="number"&&b>=0);var T=b%26,A=(b-T)/26,w=67108863>>>26-T<<26-T,k;if(T!==0){var I=0;for(k=0;k<this.length;k++){var D=this.words[k]&w,L=(this.words[k]|0)-D<<T;this.words[k]=L|I,I=D>>>26-T}I&&(this.words[k]=I,this.length++)}if(A!==0){for(k=this.length-1;k>=0;k--)this.words[k+A]=this.words[k];for(k=0;k<A;k++)this.words[k]=0;this.length+=A}return this.strip()},"iushln"),i.prototype.ishln=a(function(b){return r(this.negative===0),this.iushln(b)},"ishln"),i.prototype.iushrn=a(function(b,T,A){r(typeof b=="number"&&b>=0);var w;T?w=(T-T%26)/26:w=0;var k=b%26,I=Math.min((b-k)/26,this.length),D=67108863^67108863>>>k<<k,L=A;if(w-=I,w=Math.max(0,w),L){for(var x=0;x<I;x++)L.words[x]=this.words[x];L.length=I}if(I!==0)if(this.length>I)for(this.length-=I,x=0;x<this.length;x++)this.words[x]=this.words[x+I];else this.words[0]=0,this.length=1;var O=0;for(x=this.length-1;x>=0&&(O!==0||x>=w);x--){var H=this.words[x]|0;this.words[x]=O<<26-k|H>>>k,O=H&D}return L&&O!==0&&(L.words[L.length++]=O),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},"iushrn"),i.prototype.ishrn=a(function(b,T,A){return r(this.negative===0),this.iushrn(b,T,A)},"ishrn"),i.prototype.shln=a(function(b){return this.clone().ishln(b)},"shln"),i.prototype.ushln=a(function(b){return this.clone().iushln(b)},"ushln"),i.prototype.shrn=a(function(b){return this.clone().ishrn(b)},"shrn"),i.prototype.ushrn=a(function(b){return this.clone().iushrn(b)},"ushrn"),i.prototype.testn=a(function(b){r(typeof b=="number"&&b>=0);var T=b%26,A=(b-T)/26,w=1<<T;if(this.length<=A)return!1;var k=this.words[A];return!!(k&w)},"testn"),i.prototype.imaskn=a(function(b){r(typeof b=="number"&&b>=0);var T=b%26,A=(b-T)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=A)return this;if(T!==0&&A++,this.length=Math.min(A,this.length),T!==0){var w=67108863^67108863>>>T<<T;this.words[this.length-1]&=w}return this.strip()},"imaskn"),i.prototype.maskn=a(function(b){return this.clone().imaskn(b)},"maskn"),i.prototype.iaddn=a(function(b){return r(typeof b=="number"),r(b<67108864),b<0?this.isubn(-b):this.negative!==0?this.length===1&&(this.words[0]|0)<b?(this.words[0]=b-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(b),this.negative=1,this):this._iaddn(b)},"iaddn"),i.prototype._iaddn=a(function(b){this.words[0]+=b;for(var T=0;T<this.length&&this.words[T]>=67108864;T++)this.words[T]-=67108864,T===this.length-1?this.words[T+1]=1:this.words[T+1]++;return this.length=Math.max(this.length,T+1),this},"_iaddn"),i.prototype.isubn=a(function(b){if(r(typeof b=="number"),r(b<67108864),b<0)return this.iaddn(-b);if(this.negative!==0)return this.negative=0,this.iaddn(b),this.negative=1,this;if(this.words[0]-=b,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var T=0;T<this.length&&this.words[T]<0;T++)this.words[T]+=67108864,this.words[T+1]-=1;return this.strip()},"isubn"),i.prototype.addn=a(function(b){return this.clone().iaddn(b)},"addn"),i.prototype.subn=a(function(b){return this.clone().isubn(b)},"subn"),i.prototype.iabs=a(function(){return this.negative=0,this},"iabs"),i.prototype.abs=a(function(){return this.clone().iabs()},"abs"),i.prototype._ishlnsubmul=a(function(b,T,A){var w=b.length+A,k;this._expand(w);var I,D=0;for(k=0;k<b.length;k++){I=(this.words[k+A]|0)+D;var L=(b.words[k]|0)*T;I-=L&67108863,D=(I>>26)-(L/67108864|0),this.words[k+A]=I&67108863}for(;k<this.length-A;k++)I=(this.words[k+A]|0)+D,D=I>>26,this.words[k+A]=I&67108863;if(D===0)return this.strip();for(r(D===-1),D=0,k=0;k<this.length;k++)I=-(this.words[k]|0)+D,D=I>>26,this.words[k]=I&67108863;return this.negative=1,this.strip()},"_ishlnsubmul"),i.prototype._wordDiv=a(function(b,T){var A=this.length-b.length,w=this.clone(),k=b,I=k.words[k.length-1]|0,D=this._countBits(I);A=26-D,A!==0&&(k=k.ushln(A),w.iushln(A),I=k.words[k.length-1]|0);var L=w.length-k.length,x;if(T!=="mod"){x=new i(null),x.length=L+1,x.words=new Array(x.length);for(var O=0;O<x.length;O++)x.words[O]=0}var H=w.clone()._ishlnsubmul(k,1,L);H.negative===0&&(w=H,x&&(x.words[L]=1));for(var M=L-1;M>=0;M--){var z=(w.words[k.length+M]|0)*67108864+(w.words[k.length+M-1]|0);for(z=Math.min(z/I|0,67108863),w._ishlnsubmul(k,z,M);w.negative!==0;)z--,w.negative=0,w._ishlnsubmul(k,1,M),w.isZero()||(w.negative^=1);x&&(x.words[M]=z)}return x&&x.strip(),w.strip(),T!=="div"&&A!==0&&w.iushrn(A),{div:x||null,mod:w}},"_wordDiv"),i.prototype.divmod=a(function(b,T,A){if(r(!b.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var w,k,I;return this.negative!==0&&b.negative===0?(I=this.neg().divmod(b,T),T!=="mod"&&(w=I.div.neg()),T!=="div"&&(k=I.mod.neg(),A&&k.negative!==0&&k.iadd(b)),{div:w,mod:k}):this.negative===0&&b.negative!==0?(I=this.divmod(b.neg(),T),T!=="mod"&&(w=I.div.neg()),{div:w,mod:I.mod}):(this.negative&b.negative)!==0?(I=this.neg().divmod(b.neg(),T),T!=="div"&&(k=I.mod.neg(),A&&k.negative!==0&&k.isub(b)),{div:I.div,mod:k}):b.length>this.length||this.cmp(b)<0?{div:new i(0),mod:this}:b.length===1?T==="div"?{div:this.divn(b.words[0]),mod:null}:T==="mod"?{div:null,mod:new i(this.modn(b.words[0]))}:{div:this.divn(b.words[0]),mod:new i(this.modn(b.words[0]))}:this._wordDiv(b,T)},"divmod"),i.prototype.div=a(function(b){return this.divmod(b,"div",!1).div},"div"),i.prototype.mod=a(function(b){return this.divmod(b,"mod",!1).mod},"mod"),i.prototype.umod=a(function(b){return this.divmod(b,"mod",!0).mod},"umod"),i.prototype.divRound=a(function(b){var T=this.divmod(b);if(T.mod.isZero())return T.div;var A=T.div.negative!==0?T.mod.isub(b):T.mod,w=b.ushrn(1),k=b.andln(1),I=A.cmp(w);return I<0||k===1&&I===0?T.div:T.div.negative!==0?T.div.isubn(1):T.div.iaddn(1)},"divRound"),i.prototype.modn=a(function(b){r(b<=67108863);for(var T=(1<<26)%b,A=0,w=this.length-1;w>=0;w--)A=(T*A+(this.words[w]|0))%b;return A},"modn"),i.prototype.idivn=a(function(b){r(b<=67108863);for(var T=0,A=this.length-1;A>=0;A--){var w=(this.words[A]|0)+T*67108864;this.words[A]=w/b|0,T=w%b}return this.strip()},"idivn"),i.prototype.divn=a(function(b){return this.clone().idivn(b)},"divn"),i.prototype.egcd=a(function(b){r(b.negative===0),r(!b.isZero());var T=this,A=b.clone();T.negative!==0?T=T.umod(b):T=T.clone();for(var w=new i(1),k=new i(0),I=new i(0),D=new i(1),L=0;T.isEven()&&A.isEven();)T.iushrn(1),A.iushrn(1),++L;for(var x=A.clone(),O=T.clone();!T.isZero();){for(var H=0,M=1;(T.words[0]&M)===0&&H<26;++H,M<<=1);if(H>0)for(T.iushrn(H);H-- >0;)(w.isOdd()||k.isOdd())&&(w.iadd(x),k.isub(O)),w.iushrn(1),k.iushrn(1);for(var z=0,X=1;(A.words[0]&X)===0&&z<26;++z,X<<=1);if(z>0)for(A.iushrn(z);z-- >0;)(I.isOdd()||D.isOdd())&&(I.iadd(x),D.isub(O)),I.iushrn(1),D.iushrn(1);T.cmp(A)>=0?(T.isub(A),w.isub(I),k.isub(D)):(A.isub(T),I.isub(w),D.isub(k))}return{a:I,b:D,gcd:A.iushln(L)}},"egcd"),i.prototype._invmp=a(function(b){r(b.negative===0),r(!b.isZero());var T=this,A=b.clone();T.negative!==0?T=T.umod(b):T=T.clone();for(var w=new i(1),k=new i(0),I=A.clone();T.cmpn(1)>0&&A.cmpn(1)>0;){for(var D=0,L=1;(T.words[0]&L)===0&&D<26;++D,L<<=1);if(D>0)for(T.iushrn(D);D-- >0;)w.isOdd()&&w.iadd(I),w.iushrn(1);for(var x=0,O=1;(A.words[0]&O)===0&&x<26;++x,O<<=1);if(x>0)for(A.iushrn(x);x-- >0;)k.isOdd()&&k.iadd(I),k.iushrn(1);T.cmp(A)>=0?(T.isub(A),w.isub(k)):(A.isub(T),k.isub(w))}var H;return T.cmpn(1)===0?H=w:H=k,H.cmpn(0)<0&&H.iadd(b),H},"_invmp"),i.prototype.gcd=a(function(b){if(this.isZero())return b.abs();if(b.isZero())return this.abs();var T=this.clone(),A=b.clone();T.negative=0,A.negative=0;for(var w=0;T.isEven()&&A.isEven();w++)T.iushrn(1),A.iushrn(1);do{for(;T.isEven();)T.iushrn(1);for(;A.isEven();)A.iushrn(1);var k=T.cmp(A);if(k<0){var I=T;T=A,A=I}else if(k===0||A.cmpn(1)===0)break;T.isub(A)}while(!0);return A.iushln(w)},"gcd"),i.prototype.invm=a(function(b){return this.egcd(b).a.umod(b)},"invm"),i.prototype.isEven=a(function(){return(this.words[0]&1)===0},"isEven"),i.prototype.isOdd=a(function(){return(this.words[0]&1)===1},"isOdd"),i.prototype.andln=a(function(b){return this.words[0]&b},"andln"),i.prototype.bincn=a(function(b){r(typeof b=="number");var T=b%26,A=(b-T)/26,w=1<<T;if(this.length<=A)return this._expand(A+1),this.words[A]|=w,this;for(var k=w,I=A;k!==0&&I<this.length;I++){var D=this.words[I]|0;D+=k,k=D>>>26,D&=67108863,this.words[I]=D}return k!==0&&(this.words[I]=k,this.length++),this},"bincn"),i.prototype.isZero=a(function(){return this.length===1&&this.words[0]===0},"isZero"),i.prototype.cmpn=a(function(b){var T=b<0;if(this.negative!==0&&!T)return-1;if(this.negative===0&&T)return 1;this.strip();var A;if(this.length>1)A=1;else{T&&(b=-b),r(b<=67108863,"Number is too big");var w=this.words[0]|0;A=w===b?0:w<b?-1:1}return this.negative!==0?-A|0:A},"cmpn"),i.prototype.cmp=a(function(b){if(this.negative!==0&&b.negative===0)return-1;if(this.negative===0&&b.negative!==0)return 1;var T=this.ucmp(b);return this.negative!==0?-T|0:T},"cmp"),i.prototype.ucmp=a(function(b){if(this.length>b.length)return 1;if(this.length<b.length)return-1;for(var T=0,A=this.length-1;A>=0;A--){var w=this.words[A]|0,k=b.words[A]|0;if(w!==k){w<k?T=-1:w>k&&(T=1);break}}return T},"ucmp"),i.prototype.gtn=a(function(b){return this.cmpn(b)===1},"gtn"),i.prototype.gt=a(function(b){return this.cmp(b)===1},"gt"),i.prototype.gten=a(function(b){return this.cmpn(b)>=0},"gten"),i.prototype.gte=a(function(b){return this.cmp(b)>=0},"gte"),i.prototype.ltn=a(function(b){return this.cmpn(b)===-1},"ltn"),i.prototype.lt=a(function(b){return this.cmp(b)===-1},"lt"),i.prototype.lten=a(function(b){return this.cmpn(b)<=0},"lten"),i.prototype.lte=a(function(b){return this.cmp(b)<=0},"lte"),i.prototype.eqn=a(function(b){return this.cmpn(b)===0},"eqn"),i.prototype.eq=a(function(b){return this.cmp(b)===0},"eq"),i.red=a(function(b){return new F(b)},"red"),i.prototype.toRed=a(function(b){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),b.convertTo(this)._forceRed(b)},"toRed"),i.prototype.fromRed=a(function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},"fromRed"),i.prototype._forceRed=a(function(b){return this.red=b,this},"_forceRed"),i.prototype.forceRed=a(function(b){return r(!this.red,"Already a number in reduction context"),this._forceRed(b)},"forceRed"),i.prototype.redAdd=a(function(b){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,b)},"redAdd"),i.prototype.redIAdd=a(function(b){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,b)},"redIAdd"),i.prototype.redSub=a(function(b){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,b)},"redSub"),i.prototype.redISub=a(function(b){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,b)},"redISub"),i.prototype.redShl=a(function(b){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,b)},"redShl"),i.prototype.redMul=a(function(b){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,b),this.red.mul(this,b)},"redMul"),i.prototype.redIMul=a(function(b){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,b),this.red.imul(this,b)},"redIMul"),i.prototype.redSqr=a(function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},"redSqr"),i.prototype.redISqr=a(function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},"redISqr"),i.prototype.redSqrt=a(function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},"redSqrt"),i.prototype.redInvm=a(function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},"redInvm"),i.prototype.redNeg=a(function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},"redNeg"),i.prototype.redPow=a(function(b){return r(this.red&&!b.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,b)},"redPow");var E={k256:null,p224:null,p192:null,p25519:null};function S(B,b){this.name=B,this.p=new i(b,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}a(S,"MPrime"),S.prototype._tmp=a(function(){var b=new i(null);return b.words=new Array(Math.ceil(this.n/13)),b},"_tmp"),S.prototype.ireduce=a(function(b){var T=b,A;do this.split(T,this.tmp),T=this.imulK(T),T=T.iadd(this.tmp),A=T.bitLength();while(A>this.n);var w=A<this.n?-1:T.ucmp(this.p);return w===0?(T.words[0]=0,T.length=1):w>0?T.isub(this.p):T.strip!==void 0?T.strip():T._strip(),T},"ireduce"),S.prototype.split=a(function(b,T){b.iushrn(this.n,0,T)},"split"),S.prototype.imulK=a(function(b){return b.imul(this.k)},"imulK");function N(){S.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(N,"K256"),n(N,S),N.prototype.split=a(function(b,T){for(var A=4194303,w=Math.min(b.length,9),k=0;k<w;k++)T.words[k]=b.words[k];if(T.length=w,b.length<=9){b.words[0]=0,b.length=1;return}var I=b.words[9];for(T.words[T.length++]=I&A,k=10;k<b.length;k++){var D=b.words[k]|0;b.words[k-10]=(D&A)<<4|I>>>22,I=D}I>>>=22,b.words[k-10]=I,I===0&&b.length>10?b.length-=10:b.length-=9},"split"),N.prototype.imulK=a(function(b){b.words[b.length]=0,b.words[b.length+1]=0,b.length+=2;for(var T=0,A=0;A<b.length;A++){var w=b.words[A]|0;T+=w*977,b.words[A]=T&67108863,T=w*64+(T/67108864|0)}return b.words[b.length-1]===0&&(b.length--,b.words[b.length-1]===0&&b.length--),b},"imulK");function C(){S.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(C,"P224"),n(C,S);function R(){S.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(R,"P192"),n(R,S);function $(){S.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a($,"P25519"),n($,S),$.prototype.imulK=a(function(b){for(var T=0,A=0;A<b.length;A++){var w=(b.words[A]|0)*19+T,k=w&67108863;w>>>=26,b.words[A]=k,T=w}return T!==0&&(b.words[b.length++]=T),b},"imulK"),i._prime=a(function(b){if(E[b])return E[b];var T;if(b==="k256")T=new N;else if(b==="p224")T=new C;else if(b==="p192")T=new R;else if(b==="p25519")T=new $;else throw new Error("Unknown prime "+b);return E[b]=T,T},"prime");function F(B){if(typeof B=="string"){var b=i._prime(B);this.m=b.p,this.prime=b}else r(B.gtn(1),"modulus must be greater than 1"),this.m=B,this.prime=null}a(F,"Red"),F.prototype._verify1=a(function(b){r(b.negative===0,"red works only with positives"),r(b.red,"red works only with red numbers")},"_verify1"),F.prototype._verify2=a(function(b,T){r((b.negative|T.negative)===0,"red works only with positives"),r(b.red&&b.red===T.red,"red works only with red numbers")},"_verify2"),F.prototype.imod=a(function(b){return this.prime?this.prime.ireduce(b)._forceRed(this):b.umod(this.m)._forceRed(this)},"imod"),F.prototype.neg=a(function(b){return b.isZero()?b.clone():this.m.sub(b)._forceRed(this)},"neg"),F.prototype.add=a(function(b,T){this._verify2(b,T);var A=b.add(T);return A.cmp(this.m)>=0&&A.isub(this.m),A._forceRed(this)},"add"),F.prototype.iadd=a(function(b,T){this._verify2(b,T);var A=b.iadd(T);return A.cmp(this.m)>=0&&A.isub(this.m),A},"iadd"),F.prototype.sub=a(function(b,T){this._verify2(b,T);var A=b.sub(T);return A.cmpn(0)<0&&A.iadd(this.m),A._forceRed(this)},"sub"),F.prototype.isub=a(function(b,T){this._verify2(b,T);var A=b.isub(T);return A.cmpn(0)<0&&A.iadd(this.m),A},"isub"),F.prototype.shl=a(function(b,T){return this._verify1(b),this.imod(b.ushln(T))},"shl"),F.prototype.imul=a(function(b,T){return this._verify2(b,T),this.imod(b.imul(T))},"imul"),F.prototype.mul=a(function(b,T){return this._verify2(b,T),this.imod(b.mul(T))},"mul"),F.prototype.isqr=a(function(b){return this.imul(b,b.clone())},"isqr"),F.prototype.sqr=a(function(b){return this.mul(b,b)},"sqr"),F.prototype.sqrt=a(function(b){if(b.isZero())return b.clone();var T=this.m.andln(3);if(r(T%2===1),T===3){var A=this.m.add(new i(1)).iushrn(2);return this.pow(b,A)}for(var w=this.m.subn(1),k=0;!w.isZero()&&w.andln(1)===0;)k++,w.iushrn(1);r(!w.isZero());var I=new i(1).toRed(this),D=I.redNeg(),L=this.m.subn(1).iushrn(1),x=this.m.bitLength();for(x=new i(2*x*x).toRed(this);this.pow(x,L).cmp(D)!==0;)x.redIAdd(D);for(var O=this.pow(x,w),H=this.pow(b,w.addn(1).iushrn(1)),M=this.pow(b,w),z=k;M.cmp(I)!==0;){for(var X=M,Q=0;X.cmp(I)!==0;Q++)X=X.redSqr();r(Q<z);var ee=this.pow(O,new i(1).iushln(z-Q-1));H=H.redMul(ee),O=ee.redSqr(),M=M.redMul(O),z=Q}return H},"sqrt"),F.prototype.invm=a(function(b){var T=b._invmp(this.m);return T.negative!==0?(T.negative=0,this.imod(T).redNeg()):this.imod(T)},"invm"),F.prototype.pow=a(function(b,T){if(T.isZero())return new i(1).toRed(this);if(T.cmpn(1)===0)return b.clone();var A=4,w=new Array(1<<A);w[0]=new i(1).toRed(this),w[1]=b;for(var k=2;k<w.length;k++)w[k]=this.mul(w[k-1],b);var I=w[0],D=0,L=0,x=T.bitLength()%26;for(x===0&&(x=26),k=T.length-1;k>=0;k--){for(var O=T.words[k],H=x-1;H>=0;H--){var M=O>>H&1;if(I!==w[0]&&(I=this.sqr(I)),M===0&&D===0){L=0;continue}D<<=1,D|=M,L++,!(L!==A&&(k!==0||H!==0))&&(I=this.mul(I,w[D]),L=0,D=0)}x=26}return I},"pow"),F.prototype.convertTo=a(function(b){var T=b.umod(this.m);return T===b?T.clone():T},"convertTo"),F.prototype.convertFrom=a(function(b){var T=b.clone();return T.red=null,T},"convertFrom"),i.mont=a(function(b){return new U(b)},"mont");function U(B){F.call(this,B),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(U,"Mont"),n(U,F),U.prototype.convertTo=a(function(b){return this.imod(b.ushln(this.shift))},"convertTo"),U.prototype.convertFrom=a(function(b){var T=this.imod(b.mul(this.rinv));return T.red=null,T},"convertFrom"),U.prototype.imul=a(function(b,T){if(b.isZero()||T.isZero())return b.words[0]=0,b.length=1,b;var A=b.imul(T),w=A.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),k=A.isub(w).iushrn(this.shift),I=k;return k.cmp(this.m)>=0?I=k.isub(this.m):k.cmpn(0)<0&&(I=k.iadd(this.m)),I._forceRed(this)},"imul"),U.prototype.mul=a(function(b,T){if(b.isZero()||T.isZero())return new i(0)._forceRed(this);var A=b.mul(T),w=A.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),k=A.isub(w).iushrn(this.shift),I=k;return k.cmp(this.m)>=0?I=k.isub(this.m):k.cmpn(0)<0&&(I=k.iadd(this.m)),I._forceRed(this)},"mul"),U.prototype.invm=a(function(b){var T=this.imod(b._invmp(this.m).mul(this.r2));return T._forceRed(this)},"invm")})(typeof fQ>"u"||fQ,h4e)});var h0=v((KHr,g4e)=>{g4e.exports=m4e;function m4e(t,e){if(!t)throw new Error(e||"Assertion failed")}a(m4e,"assert");m4e.equal=a(function(e,r,n){if(e!=r)throw new Error(n||"Assertion failed: "+e+" != "+r)},"assertEqual")});var pQ=v(b4e=>{"use strict";var ZP=b4e;function XLt(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t!="string"){for(var n=0;n<t.length;n++)r[n]=t[n]|0;return r}if(e==="hex"){t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t);for(var n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(var n=0;n<t.length;n++){var i=t.charCodeAt(n),s=i>>8,o=i&255;s?r.push(s,o):r.push(o)}return r}a(XLt,"toArray");ZP.toArray=XLt;function y4e(t){return t.length===1?"0"+t:t}a(y4e,"zero2");ZP.zero2=y4e;function v4e(t){for(var e="",r=0;r<t.length;r++)e+=y4e(t[r].toString(16));return e}a(v4e,"toHex");ZP.toHex=v4e;ZP.encode=a(function(e,r){return r==="hex"?v4e(e):e},"encode")});var yc=v(x4e=>{"use strict";var Ul=x4e,QLt=Fl(),YLt=h0(),e5=pQ();Ul.assert=YLt;Ul.toArray=e5.toArray;Ul.zero2=e5.zero2;Ul.toHex=e5.toHex;Ul.encode=e5.encode;function ZLt(t,e,r){var n=new Array(Math.max(t.bitLength(),r)+1),i;for(i=0;i<n.length;i+=1)n[i]=0;var s=1<<e+1,o=t.clone();for(i=0;i<n.length;i++){var c,u=o.andln(s-1);o.isOdd()?(u>(s>>1)-1?c=(s>>1)-u:c=u,o.isubn(c)):c=0,n[i]=c,o.iushrn(1)}return n}a(ZLt,"getNAF");Ul.getNAF=ZLt;function eBt(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n=0,i=0,s;t.cmpn(-n)>0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,c=e.andln(3)+i&3;o===3&&(o=-1),c===3&&(c=-1);var u;(o&1)===0?u=0:(s=t.andln(7)+n&7,(s===3||s===5)&&c===2?u=-o:u=o),r[0].push(u);var l;(c&1)===0?l=0:(s=e.andln(7)+i&7,(s===3||s===5)&&o===2?l=-c:l=c),r[1].push(l),2*n===u+1&&(n=1-n),2*i===l+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}a(eBt,"getJSF");Ul.getJSF=eBt;function tBt(t,e,r){var n="_"+e;t.prototype[e]=a(function(){return this[n]!==void 0?this[n]:this[n]=r.call(this)},"cachedProperty")}a(tBt,"cachedProperty");Ul.cachedProperty=tBt;function rBt(t){return typeof t=="string"?Ul.toArray(t,"hex"):t}a(rBt,"parseBytes");Ul.parseBytes=rBt;function nBt(t){return new QLt(t,"hex","le")}a(nBt,"intFromLE");Ul.intFromLE=nBt});var gQ=v((YHr,mQ)=>{var _Q;mQ.exports=a(function(e){return _Q||(_Q=new m0(null)),_Q.generate(e)},"rand");function m0(t){this.rand=t}a(m0,"Rand");mQ.exports.Rand=m0;m0.prototype.generate=a(function(e){return this._rand(e)},"generate");m0.prototype._rand=a(function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),n=0;n<r.length;n++)r[n]=this.rand.getByte();return r},"_rand");if(typeof self=="object")self.crypto&&self.crypto.getRandomValues?m0.prototype._rand=a(function(e){var r=new Uint8Array(e);return self.crypto.getRandomValues(r),r},"_rand"):self.msCrypto&&self.msCrypto.getRandomValues?m0.prototype._rand=a(function(e){var r=new Uint8Array(e);return self.msCrypto.getRandomValues(r),r},"_rand"):typeof window=="object"&&(m0.prototype._rand=function(){throw new Error("Not implemented yet")});else try{if(hQ=require("crypto"),typeof hQ.randomBytes!="function")throw new Error("Not supported");m0.prototype._rand=a(function(e){return hQ.randomBytes(e)},"_rand")}catch{}var hQ});var LA=v((ejr,w4e)=>{"use strict";var wy=Fl(),PA=yc(),t5=PA.getNAF,iBt=PA.getJSF,r5=PA.assert;function g0(t,e){this.type=t,this.p=new wy(e.p,16),this.red=e.prime?wy.red(e.prime):wy.mont(this.p),this.zero=new wy(0).toRed(this.red),this.one=new wy(1).toRed(this.red),this.two=new wy(2).toRed(this.red),this.n=e.n&&new wy(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}a(g0,"BaseCurve");w4e.exports=g0;g0.prototype.point=a(function(){throw new Error("Not implemented")},"point");g0.prototype.validate=a(function(){throw new Error("Not implemented")},"validate");g0.prototype._fixedNafMul=a(function(e,r){r5(e.precomputed);var n=e._getDoubles(),i=t5(r,1,this._bitLength),s=(1<<n.step+1)-(n.step%2===0?2:1);s/=3;var o=[],c,u;for(c=0;c<i.length;c+=n.step){u=0;for(var l=c+n.step-1;l>=c;l--)u=(u<<1)+i[l];o.push(u)}for(var d=this.jpoint(null,null,null),f=this.jpoint(null,null,null),p=s;p>0;p--){for(c=0;c<o.length;c++)u=o[c],u===p?f=f.mixedAdd(n.points[c]):u===-p&&(f=f.mixedAdd(n.points[c].neg()));d=d.add(f)}return d.toP()},"_fixedNafMul");g0.prototype._wnafMul=a(function(e,r){var n=4,i=e._getNAFPoints(n);n=i.wnd;for(var s=i.points,o=t5(r,n,this._bitLength),c=this.jpoint(null,null,null),u=o.length-1;u>=0;u--){for(var l=0;u>=0&&o[u]===0;u--)l++;if(u>=0&&l++,c=c.dblp(l),u<0)break;var d=o[u];r5(d!==0),e.type==="affine"?d>0?c=c.mixedAdd(s[d-1>>1]):c=c.mixedAdd(s[-d-1>>1].neg()):d>0?c=c.add(s[d-1>>1]):c=c.add(s[-d-1>>1].neg())}return e.type==="affine"?c.toP():c},"_wnafMul");g0.prototype._wnafMulAdd=a(function(e,r,n,i,s){var o=this._wnafT1,c=this._wnafT2,u=this._wnafT3,l=0,d,f,p;for(d=0;d<i;d++){p=r[d];var _=p._getNAFPoints(e);o[d]=_.wnd,c[d]=_.points}for(d=i-1;d>=1;d-=2){var h=d-1,m=d;if(o[h]!==1||o[m]!==1){u[h]=t5(n[h],o[h],this._bitLength),u[m]=t5(n[m],o[m],this._bitLength),l=Math.max(u[h].length,l),l=Math.max(u[m].length,l);continue}var g=[r[h],null,null,r[m]];r[h].y.cmp(r[m].y)===0?(g[1]=r[h].add(r[m]),g[2]=r[h].toJ().mixedAdd(r[m].neg())):r[h].y.cmp(r[m].y.redNeg())===0?(g[1]=r[h].toJ().mixedAdd(r[m]),g[2]=r[h].add(r[m].neg())):(g[1]=r[h].toJ().mixedAdd(r[m]),g[2]=r[h].toJ().mixedAdd(r[m].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],E=iBt(n[h],n[m]);for(l=Math.max(E[0].length,l),u[h]=new Array(l),u[m]=new Array(l),f=0;f<l;f++){var S=E[0][f]|0,N=E[1][f]|0;u[h][f]=y[(S+1)*3+(N+1)],u[m][f]=0,c[h]=g}}var C=this.jpoint(null,null,null),R=this._wnafT4;for(d=l;d>=0;d--){for(var $=0;d>=0;){var F=!0;for(f=0;f<i;f++)R[f]=u[f][d]|0,R[f]!==0&&(F=!1);if(!F)break;$++,d--}if(d>=0&&$++,C=C.dblp($),d<0)break;for(f=0;f<i;f++){var U=R[f];U!==0&&(U>0?p=c[f][U-1>>1]:U<0&&(p=c[f][-U-1>>1].neg()),p.type==="affine"?C=C.mixedAdd(p):C=C.add(p))}}for(d=0;d<i;d++)c[d]=null;return s?C:C.toP()},"_wnafMulAdd");function _u(t,e){this.curve=t,this.type=e,this.precomputed=null}a(_u,"BasePoint");g0.BasePoint=_u;_u.prototype.eq=a(function(){throw new Error("Not implemented")},"eq");_u.prototype.validate=a(function(){return this.curve.validate(this)},"validate");g0.prototype.decodePoint=a(function(e,r){e=PA.toArray(e,r);var n=this.p.byteLength();if((e[0]===4||e[0]===6||e[0]===7)&&e.length-1===2*n){e[0]===6?r5(e[e.length-1]%2===0):e[0]===7&&r5(e[e.length-1]%2===1);var i=this.point(e.slice(1,1+n),e.slice(1+n,1+2*n));return i}else if((e[0]===2||e[0]===3)&&e.length-1===n)return this.pointFromX(e.slice(1,1+n),e[0]===3);throw new Error("Unknown point format")},"decodePoint");_u.prototype.encodeCompressed=a(function(e){return this.encode(e,!0)},"encodeCompressed");_u.prototype._encode=a(function(e){var r=this.curve.p.byteLength(),n=this.getX().toArray("be",r);return e?[this.getY().isEven()?2:3].concat(n):[4].concat(n,this.getY().toArray("be",r))},"_encode");_u.prototype.encode=a(function(e,r){return PA.encode(this._encode(r),e)},"encode");_u.prototype.precompute=a(function(e){if(this.precomputed)return this;var r={doubles:null,naf:null,beta:null};return r.naf=this._getNAFPoints(8),r.doubles=this._getDoubles(4,e),r.beta=this._getBeta(),this.precomputed=r,this},"precompute");_u.prototype._hasDoubles=a(function(e){if(!this.precomputed)return!1;var r=this.precomputed.doubles;return r?r.points.length>=Math.ceil((e.bitLength()+1)/r.step):!1},"_hasDoubles");_u.prototype._getDoubles=a(function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],i=this,s=0;s<r;s+=e){for(var o=0;o<e;o++)i=i.dbl();n.push(i)}return{step:e,points:n}},"_getDoubles");_u.prototype._getNAFPoints=a(function(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var r=[this],n=(1<<e)-1,i=n===1?null:this.dbl(),s=1;s<n;s++)r[s]=r[s-1].add(i);return{wnd:e,points:r}},"_getNAFPoints");_u.prototype._getBeta=a(function(){return null},"_getBeta");_u.prototype.dblp=a(function(e){for(var r=this,n=0;n<e;n++)r=r.dbl();return r},"dblp")});var T4e=v((rjr,E4e)=>{"use strict";var aBt=yc(),Ei=Fl(),yQ=hp(),x1=LA(),sBt=aBt.assert;function hu(t){x1.call(this,"short",t),this.a=new Ei(t.a,16).toRed(this.red),this.b=new Ei(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}a(hu,"ShortCurve");yQ(hu,x1);E4e.exports=hu;hu.prototype._getEndomorphism=a(function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,n;if(e.beta)r=new Ei(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);r=i[0].cmp(i[1])<0?i[0]:i[1],r=r.toRed(this.red)}if(e.lambda)n=new Ei(e.lambda,16);else{var s=this._getEndoRoots(this.n);this.g.mul(s[0]).x.cmp(this.g.x.redMul(r))===0?n=s[0]:(n=s[1],sBt(this.g.mul(n).x.cmp(this.g.x.redMul(r))===0))}var o;return e.basis?o=e.basis.map(function(c){return{a:new Ei(c.a,16),b:new Ei(c.b,16)}}):o=this._getEndoBasis(n),{beta:r,lambda:n,basis:o}}},"_getEndomorphism");hu.prototype._getEndoRoots=a(function(e){var r=e===this.p?this.red:Ei.mont(e),n=new Ei(2).toRed(r).redInvm(),i=n.redNeg(),s=new Ei(3).toRed(r).redNeg().redSqrt().redMul(n),o=i.redAdd(s).fromRed(),c=i.redSub(s).fromRed();return[o,c]},"_getEndoRoots");hu.prototype._getEndoBasis=a(function(e){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),n=e,i=this.n.clone(),s=new Ei(1),o=new Ei(0),c=new Ei(0),u=new Ei(1),l,d,f,p,_,h,m,g=0,y,E;n.cmpn(0)!==0;){var S=i.div(n);y=i.sub(S.mul(n)),E=c.sub(S.mul(s));var N=u.sub(S.mul(o));if(!f&&y.cmp(r)<0)l=m.neg(),d=s,f=y.neg(),p=E;else if(f&&++g===2)break;m=y,i=n,n=y,c=s,s=E,u=o,o=N}_=y.neg(),h=E;var C=f.sqr().add(p.sqr()),R=_.sqr().add(h.sqr());return R.cmp(C)>=0&&(_=l,h=d),f.negative&&(f=f.neg(),p=p.neg()),_.negative&&(_=_.neg(),h=h.neg()),[{a:f,b:p},{a:_,b:h}]},"_getEndoBasis");hu.prototype._endoSplit=a(function(e){var r=this.endo.basis,n=r[0],i=r[1],s=i.b.mul(e).divRound(this.n),o=n.b.neg().mul(e).divRound(this.n),c=s.mul(n.a),u=o.mul(i.a),l=s.mul(n.b),d=o.mul(i.b),f=e.sub(c).sub(u),p=l.add(d).neg();return{k1:f,k2:p}},"_endoSplit");hu.prototype.pointFromX=a(function(e,r){e=new Ei(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=n.redSqrt();if(i.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var s=i.fromRed().isOdd();return(r&&!s||!r&&s)&&(i=i.redNeg()),this.point(e,i)},"pointFromX");hu.prototype.validate=a(function(e){if(e.inf)return!0;var r=e.x,n=e.y,i=this.a.redMul(r),s=r.redSqr().redMul(r).redIAdd(i).redIAdd(this.b);return n.redSqr().redISub(s).cmpn(0)===0},"validate");hu.prototype._endoWnafMulAdd=a(function(e,r,n){for(var i=this._endoWnafT1,s=this._endoWnafT2,o=0;o<e.length;o++){var c=this._endoSplit(r[o]),u=e[o],l=u._getBeta();c.k1.negative&&(c.k1.ineg(),u=u.neg(!0)),c.k2.negative&&(c.k2.ineg(),l=l.neg(!0)),i[o*2]=u,i[o*2+1]=l,s[o*2]=c.k1,s[o*2+1]=c.k2}for(var d=this._wnafMulAdd(1,i,s,o*2,n),f=0;f<o*2;f++)i[f]=null,s[f]=null;return d},"_endoWnafMulAdd");function Fa(t,e,r,n){x1.BasePoint.call(this,t,"affine"),e===null&&r===null?(this.x=null,this.y=null,this.inf=!0):(this.x=new Ei(e,16),this.y=new Ei(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}a(Fa,"Point");yQ(Fa,x1.BasePoint);hu.prototype.point=a(function(e,r,n){return new Fa(this,e,r,n)},"point");hu.prototype.pointFromJSON=a(function(e,r){return Fa.fromJSON(this,e,r)},"pointFromJSON");Fa.prototype._getBeta=a(function(){if(this.curve.endo){var e=this.precomputed;if(e&&e.beta)return e.beta;var r=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var n=this.curve,i=a(function(s){return n.point(s.x.redMul(n.endo.beta),s.y)},"endoMul");e.beta=r,r.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(i)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(i)}}}return r}},"_getBeta");Fa.prototype.toJSON=a(function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},"toJSON");Fa.fromJSON=a(function(e,r,n){typeof r=="string"&&(r=JSON.parse(r));var i=e.point(r[0],r[1],n);if(!r[2])return i;function s(c){return e.point(c[0],c[1],n)}a(s,"obj2point");var o=r[2];return i.precomputed={beta:null,doubles:o.doubles&&{step:o.doubles.step,points:[i].concat(o.doubles.points.map(s))},naf:o.naf&&{wnd:o.naf.wnd,points:[i].concat(o.naf.points.map(s))}},i},"fromJSON");Fa.prototype.inspect=a(function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},"inspect");Fa.prototype.isInfinity=a(function(){return this.inf},"isInfinity");Fa.prototype.add=a(function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var n=r.redSqr().redISub(this.x).redISub(e.x),i=r.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,i)},"add");Fa.prototype.dbl=a(function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,n=this.x.redSqr(),i=e.redInvm(),s=n.redAdd(n).redIAdd(n).redIAdd(r).redMul(i),o=s.redSqr().redISub(this.x.redAdd(this.x)),c=s.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,c)},"dbl");Fa.prototype.getX=a(function(){return this.x.fromRed()},"getX");Fa.prototype.getY=a(function(){return this.y.fromRed()},"getY");Fa.prototype.mul=a(function(e){return e=new Ei(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},"mul");Fa.prototype.mulAdd=a(function(e,r,n){var i=[this,r],s=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,s):this.curve._wnafMulAdd(1,i,s,2)},"mulAdd");Fa.prototype.jmulAdd=a(function(e,r,n){var i=[this,r],s=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,s,!0):this.curve._wnafMulAdd(1,i,s,2,!0)},"jmulAdd");Fa.prototype.eq=a(function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},"eq");Fa.prototype.neg=a(function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var n=this.precomputed,i=a(function(s){return s.neg()},"negate");r.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(i)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(i)}}}return r},"neg");Fa.prototype.toJ=a(function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e},"toJ");function es(t,e,r,n){x1.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&n===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new Ei(0)):(this.x=new Ei(e,16),this.y=new Ei(r,16),this.z=new Ei(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}a(es,"JPoint");yQ(es,x1.BasePoint);hu.prototype.jpoint=a(function(e,r,n){return new es(this,e,r,n)},"jpoint");es.prototype.toP=a(function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),n=this.x.redMul(r),i=this.y.redMul(r).redMul(e);return this.curve.point(n,i)},"toP");es.prototype.neg=a(function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},"neg");es.prototype.add=a(function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),n=this.z.redSqr(),i=this.x.redMul(r),s=e.x.redMul(n),o=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(n.redMul(this.z)),u=i.redSub(s),l=o.redSub(c);if(u.cmpn(0)===0)return l.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var d=u.redSqr(),f=d.redMul(u),p=i.redMul(d),_=l.redSqr().redIAdd(f).redISub(p).redISub(p),h=l.redMul(p.redISub(_)).redISub(o.redMul(f)),m=this.z.redMul(e.z).redMul(u);return this.curve.jpoint(_,h,m)},"add");es.prototype.mixedAdd=a(function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),n=this.x,i=e.x.redMul(r),s=this.y,o=e.y.redMul(r).redMul(this.z),c=n.redSub(i),u=s.redSub(o);if(c.cmpn(0)===0)return u.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var l=c.redSqr(),d=l.redMul(c),f=n.redMul(l),p=u.redSqr().redIAdd(d).redISub(f).redISub(f),_=u.redMul(f.redISub(p)).redISub(s.redMul(d)),h=this.z.redMul(c);return this.curve.jpoint(p,_,h)},"mixedAdd");es.prototype.dblp=a(function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var n=this;for(r=0;r<e;r++)n=n.dbl();return n}var i=this.curve.a,s=this.curve.tinv,o=this.x,c=this.y,u=this.z,l=u.redSqr().redSqr(),d=c.redAdd(c);for(r=0;r<e;r++){var f=o.redSqr(),p=d.redSqr(),_=p.redSqr(),h=f.redAdd(f).redIAdd(f).redIAdd(i.redMul(l)),m=o.redMul(p),g=h.redSqr().redISub(m.redAdd(m)),y=m.redISub(g),E=h.redMul(y);E=E.redIAdd(E).redISub(_);var S=d.redMul(u);r+1<e&&(l=l.redMul(_)),o=g,u=S,d=E}return this.curve.jpoint(o,d.redMul(s),u)},"dblp");es.prototype.dbl=a(function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},"dbl");es.prototype._zeroDbl=a(function(){var e,r,n;if(this.zOne){var i=this.x.redSqr(),s=this.y.redSqr(),o=s.redSqr(),c=this.x.redAdd(s).redSqr().redISub(i).redISub(o);c=c.redIAdd(c);var u=i.redAdd(i).redIAdd(i),l=u.redSqr().redISub(c).redISub(c),d=o.redIAdd(o);d=d.redIAdd(d),d=d.redIAdd(d),e=l,r=u.redMul(c.redISub(l)).redISub(d),n=this.y.redAdd(this.y)}else{var f=this.x.redSqr(),p=this.y.redSqr(),_=p.redSqr(),h=this.x.redAdd(p).redSqr().redISub(f).redISub(_);h=h.redIAdd(h);var m=f.redAdd(f).redIAdd(f),g=m.redSqr(),y=_.redIAdd(_);y=y.redIAdd(y),y=y.redIAdd(y),e=g.redISub(h).redISub(h),r=m.redMul(h.redISub(e)).redISub(y),n=this.y.redMul(this.z),n=n.redIAdd(n)}return this.curve.jpoint(e,r,n)},"_zeroDbl");es.prototype._threeDbl=a(function(){var e,r,n;if(this.zOne){var i=this.x.redSqr(),s=this.y.redSqr(),o=s.redSqr(),c=this.x.redAdd(s).redSqr().redISub(i).redISub(o);c=c.redIAdd(c);var u=i.redAdd(i).redIAdd(i).redIAdd(this.curve.a),l=u.redSqr().redISub(c).redISub(c);e=l;var d=o.redIAdd(o);d=d.redIAdd(d),d=d.redIAdd(d),r=u.redMul(c.redISub(l)).redISub(d),n=this.y.redAdd(this.y)}else{var f=this.z.redSqr(),p=this.y.redSqr(),_=this.x.redMul(p),h=this.x.redSub(f).redMul(this.x.redAdd(f));h=h.redAdd(h).redIAdd(h);var m=_.redIAdd(_);m=m.redIAdd(m);var g=m.redAdd(m);e=h.redSqr().redISub(g),n=this.y.redAdd(this.z).redSqr().redISub(p).redISub(f);var y=p.redSqr();y=y.redIAdd(y),y=y.redIAdd(y),y=y.redIAdd(y),r=h.redMul(m.redISub(e)).redISub(y)}return this.curve.jpoint(e,r,n)},"_threeDbl");es.prototype._dbl=a(function(){var e=this.curve.a,r=this.x,n=this.y,i=this.z,s=i.redSqr().redSqr(),o=r.redSqr(),c=n.redSqr(),u=o.redAdd(o).redIAdd(o).redIAdd(e.redMul(s)),l=r.redAdd(r);l=l.redIAdd(l);var d=l.redMul(c),f=u.redSqr().redISub(d.redAdd(d)),p=d.redISub(f),_=c.redSqr();_=_.redIAdd(_),_=_.redIAdd(_),_=_.redIAdd(_);var h=u.redMul(p).redISub(_),m=n.redAdd(n).redMul(i);return this.curve.jpoint(f,h,m)},"_dbl");es.prototype.trpl=a(function(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr(),r=this.y.redSqr(),n=this.z.redSqr(),i=r.redSqr(),s=e.redAdd(e).redIAdd(e),o=s.redSqr(),c=this.x.redAdd(r).redSqr().redISub(e).redISub(i);c=c.redIAdd(c),c=c.redAdd(c).redIAdd(c),c=c.redISub(o);var u=c.redSqr(),l=i.redIAdd(i);l=l.redIAdd(l),l=l.redIAdd(l),l=l.redIAdd(l);var d=s.redIAdd(c).redSqr().redISub(o).redISub(u).redISub(l),f=r.redMul(d);f=f.redIAdd(f),f=f.redIAdd(f);var p=this.x.redMul(u).redISub(f);p=p.redIAdd(p),p=p.redIAdd(p);var _=this.y.redMul(d.redMul(l.redISub(d)).redISub(c.redMul(u)));_=_.redIAdd(_),_=_.redIAdd(_),_=_.redIAdd(_);var h=this.z.redAdd(c).redSqr().redISub(n).redISub(u);return this.curve.jpoint(p,_,h)},"trpl");es.prototype.mul=a(function(e,r){return e=new Ei(e,r),this.curve._wnafMul(this,e)},"mul");es.prototype.eq=a(function(e){if(e.type==="affine")return this.eq(e.toJ());if(this===e)return!0;var r=this.z.redSqr(),n=e.z.redSqr();if(this.x.redMul(n).redISub(e.x.redMul(r)).cmpn(0)!==0)return!1;var i=r.redMul(this.z),s=n.redMul(e.z);return this.y.redMul(s).redISub(e.y.redMul(i)).cmpn(0)===0},"eq");es.prototype.eqXToP=a(function(e){var r=this.z.redSqr(),n=e.toRed(this.curve.red).redMul(r);if(this.x.cmp(n)===0)return!0;for(var i=e.clone(),s=this.curve.redN.redMul(r);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(s),this.x.cmp(n)===0)return!0}},"eqXToP");es.prototype.inspect=a(function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},"inspect");es.prototype.isInfinity=a(function(){return this.z.cmpn(0)===0},"isInfinity")});var k4e=v((ijr,A4e)=>{"use strict";var w1=Fl(),S4e=hp(),n5=LA(),oBt=yc();function E1(t){n5.call(this,"mont",t),this.a=new w1(t.a,16).toRed(this.red),this.b=new w1(t.b,16).toRed(this.red),this.i4=new w1(4).toRed(this.red).redInvm(),this.two=new w1(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}a(E1,"MontCurve");S4e(E1,n5);A4e.exports=E1;E1.prototype.validate=a(function(e){var r=e.normalize().x,n=r.redSqr(),i=n.redMul(r).redAdd(n.redMul(this.a)).redAdd(r),s=i.redSqrt();return s.redSqr().cmp(i)===0},"validate");function Ua(t,e,r){n5.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new w1(e,16),this.z=new w1(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}a(Ua,"Point");S4e(Ua,n5.BasePoint);E1.prototype.decodePoint=a(function(e,r){return this.point(oBt.toArray(e,r),1)},"decodePoint");E1.prototype.point=a(function(e,r){return new Ua(this,e,r)},"point");E1.prototype.pointFromJSON=a(function(e){return Ua.fromJSON(this,e)},"pointFromJSON");Ua.prototype.precompute=a(function(){},"precompute");Ua.prototype._encode=a(function(){return this.getX().toArray("be",this.curve.p.byteLength())},"_encode");Ua.fromJSON=a(function(e,r){return new Ua(e,r[0],r[1]||e.one)},"fromJSON");Ua.prototype.inspect=a(function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},"inspect");Ua.prototype.isInfinity=a(function(){return this.z.cmpn(0)===0},"isInfinity");Ua.prototype.dbl=a(function(){var e=this.x.redAdd(this.z),r=e.redSqr(),n=this.x.redSub(this.z),i=n.redSqr(),s=r.redSub(i),o=r.redMul(i),c=s.redMul(i.redAdd(this.curve.a24.redMul(s)));return this.curve.point(o,c)},"dbl");Ua.prototype.add=a(function(){throw new Error("Not supported on Montgomery curve")},"add");Ua.prototype.diffAdd=a(function(e,r){var n=this.x.redAdd(this.z),i=this.x.redSub(this.z),s=e.x.redAdd(e.z),o=e.x.redSub(e.z),c=o.redMul(n),u=s.redMul(i),l=r.z.redMul(c.redAdd(u).redSqr()),d=r.x.redMul(c.redISub(u).redSqr());return this.curve.point(l,d)},"diffAdd");Ua.prototype.mul=a(function(e){for(var r=e.clone(),n=this,i=this.curve.point(null,null),s=this,o=[];r.cmpn(0)!==0;r.iushrn(1))o.push(r.andln(1));for(var c=o.length-1;c>=0;c--)o[c]===0?(n=n.diffAdd(i,s),i=i.dbl()):(i=n.diffAdd(i,s),n=n.dbl());return i},"mul");Ua.prototype.mulAdd=a(function(){throw new Error("Not supported on Montgomery curve")},"mulAdd");Ua.prototype.jumlAdd=a(function(){throw new Error("Not supported on Montgomery curve")},"jumlAdd");Ua.prototype.eq=a(function(e){return this.getX().cmp(e.getX())===0},"eq");Ua.prototype.normalize=a(function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},"normalize");Ua.prototype.getX=a(function(){return this.normalize(),this.x.fromRed()},"getX")});var I4e=v((sjr,O4e)=>{"use strict";var cBt=yc(),Kp=Fl(),N4e=hp(),i5=LA(),uBt=cBt.assert;function vf(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,i5.call(this,"edwards",t),this.a=new Kp(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Kp(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Kp(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),uBt(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}a(vf,"EdwardsCurve");N4e(vf,i5);O4e.exports=vf;vf.prototype._mulA=a(function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},"_mulA");vf.prototype._mulC=a(function(e){return this.oneC?e:this.c.redMul(e)},"_mulC");vf.prototype.jpoint=a(function(e,r,n,i){return this.point(e,r,n,i)},"jpoint");vf.prototype.pointFromX=a(function(e,r){e=new Kp(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr(),i=this.c2.redSub(this.a.redMul(n)),s=this.one.redSub(this.c2.redMul(this.d).redMul(n)),o=i.redMul(s.redInvm()),c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");var u=c.fromRed().isOdd();return(r&&!u||!r&&u)&&(c=c.redNeg()),this.point(e,c)},"pointFromX");vf.prototype.pointFromY=a(function(e,r){e=new Kp(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr(),i=n.redSub(this.c2),s=n.redMul(this.d).redMul(this.c2).redSub(this.a),o=i.redMul(s.redInvm());if(o.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)},"pointFromY");vf.prototype.validate=a(function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),n=e.y.redSqr(),i=r.redMul(this.a).redAdd(n),s=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(n)));return i.cmp(s)===0},"validate");function hn(t,e,r,n,i){i5.BasePoint.call(this,t,"projective"),e===null&&r===null&&n===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Kp(e,16),this.y=new Kp(r,16),this.z=n?new Kp(n,16):this.curve.one,this.t=i&&new Kp(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}a(hn,"Point");N4e(hn,i5.BasePoint);vf.prototype.pointFromJSON=a(function(e){return hn.fromJSON(this,e)},"pointFromJSON");vf.prototype.point=a(function(e,r,n,i){return new hn(this,e,r,n,i)},"point");hn.fromJSON=a(function(e,r){return new hn(e,r[0],r[1],r[2])},"fromJSON");hn.prototype.inspect=a(function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},"inspect");hn.prototype.isInfinity=a(function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},"isInfinity");hn.prototype._extDbl=a(function(){var e=this.x.redSqr(),r=this.y.redSqr(),n=this.z.redSqr();n=n.redIAdd(n);var i=this.curve._mulA(e),s=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),o=i.redAdd(r),c=o.redSub(n),u=i.redSub(r),l=s.redMul(c),d=o.redMul(u),f=s.redMul(u),p=c.redMul(o);return this.curve.point(l,d,p,f)},"_extDbl");hn.prototype._projDbl=a(function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),n=this.y.redSqr(),i,s,o,c,u,l;if(this.curve.twisted){c=this.curve._mulA(r);var d=c.redAdd(n);this.zOne?(i=e.redSub(r).redSub(n).redMul(d.redSub(this.curve.two)),s=d.redMul(c.redSub(n)),o=d.redSqr().redSub(d).redSub(d)):(u=this.z.redSqr(),l=d.redSub(u).redISub(u),i=e.redSub(r).redISub(n).redMul(l),s=d.redMul(c.redSub(n)),o=d.redMul(l))}else c=r.redAdd(n),u=this.curve._mulC(this.z).redSqr(),l=c.redSub(u).redSub(u),i=this.curve._mulC(e.redISub(c)).redMul(l),s=this.curve._mulC(c).redMul(r.redISub(n)),o=c.redMul(l);return this.curve.point(i,s,o)},"_projDbl");hn.prototype.dbl=a(function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},"dbl");hn.prototype._extAdd=a(function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),n=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),s=this.z.redMul(e.z.redAdd(e.z)),o=n.redSub(r),c=s.redSub(i),u=s.redAdd(i),l=n.redAdd(r),d=o.redMul(c),f=u.redMul(l),p=o.redMul(l),_=c.redMul(u);return this.curve.point(d,f,_,p)},"_extAdd");hn.prototype._projAdd=a(function(e){var r=this.z.redMul(e.z),n=r.redSqr(),i=this.x.redMul(e.x),s=this.y.redMul(e.y),o=this.curve.d.redMul(i).redMul(s),c=n.redSub(o),u=n.redAdd(o),l=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(s),d=r.redMul(c).redMul(l),f,p;return this.curve.twisted?(f=r.redMul(u).redMul(s.redSub(this.curve._mulA(i))),p=c.redMul(u)):(f=r.redMul(u).redMul(s.redSub(i)),p=this.curve._mulC(c).redMul(u)),this.curve.point(d,f,p)},"_projAdd");hn.prototype.add=a(function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},"add");hn.prototype.mul=a(function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},"mul");hn.prototype.mulAdd=a(function(e,r,n){return this.curve._wnafMulAdd(1,[this,r],[e,n],2,!1)},"mulAdd");hn.prototype.jmulAdd=a(function(e,r,n){return this.curve._wnafMulAdd(1,[this,r],[e,n],2,!0)},"jmulAdd");hn.prototype.normalize=a(function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},"normalize");hn.prototype.neg=a(function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},"neg");hn.prototype.getX=a(function(){return this.normalize(),this.x.fromRed()},"getX");hn.prototype.getY=a(function(){return this.normalize(),this.y.fromRed()},"getY");hn.prototype.eq=a(function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0},"eq");hn.prototype.eqXToP=a(function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var n=e.clone(),i=this.curve.redN.redMul(this.z);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),this.x.cmp(r)===0)return!0}},"eqXToP");hn.prototype.toP=hn.prototype.normalize;hn.prototype.mixedAdd=hn.prototype.add});var vQ=v(C4e=>{"use strict";var a5=C4e;a5.base=LA();a5.short=T4e();a5.mont=k4e();a5.edwards=I4e()});var ql=v(nn=>{"use strict";var lBt=h0(),dBt=hp();nn.inherits=dBt;function fBt(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}a(fBt,"isSurrogatePair");function pBt(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),i=0;i<t.length;i+=2)r.push(parseInt(t[i]+t[i+1],16))}else for(var n=0,i=0;i<t.length;i++){var s=t.charCodeAt(i);s<128?r[n++]=s:s<2048?(r[n++]=s>>6|192,r[n++]=s&63|128):fBt(t,i)?(s=65536+((s&1023)<<10)+(t.charCodeAt(++i)&1023),r[n++]=s>>18|240,r[n++]=s>>12&63|128,r[n++]=s>>6&63|128,r[n++]=s&63|128):(r[n++]=s>>12|224,r[n++]=s>>6&63|128,r[n++]=s&63|128)}else for(i=0;i<t.length;i++)r[i]=t[i]|0;return r}a(pBt,"toArray");nn.toArray=pBt;function _Bt(t){for(var e="",r=0;r<t.length;r++)e+=P4e(t[r].toString(16));return e}a(_Bt,"toHex");nn.toHex=_Bt;function R4e(t){var e=t>>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}a(R4e,"htonl");nn.htonl=R4e;function hBt(t,e){for(var r="",n=0;n<t.length;n++){var i=t[n];e==="little"&&(i=R4e(i)),r+=L4e(i.toString(16))}return r}a(hBt,"toHex32");nn.toHex32=hBt;function P4e(t){return t.length===1?"0"+t:t}a(P4e,"zero2");nn.zero2=P4e;function L4e(t){return t.length===7?"0"+t:t.length===6?"00"+t:t.length===5?"000"+t:t.length===4?"0000"+t:t.length===3?"00000"+t:t.length===2?"000000"+t:t.length===1?"0000000"+t:t}a(L4e,"zero8");nn.zero8=L4e;function mBt(t,e,r,n){var i=r-e;lBt(i%4===0);for(var s=new Array(i/4),o=0,c=e;o<s.length;o++,c+=4){var u;n==="big"?u=t[c]<<24|t[c+1]<<16|t[c+2]<<8|t[c+3]:u=t[c+3]<<24|t[c+2]<<16|t[c+1]<<8|t[c],s[o]=u>>>0}return s}a(mBt,"join32");nn.join32=mBt;function gBt(t,e){for(var r=new Array(t.length*4),n=0,i=0;n<t.length;n++,i+=4){var s=t[n];e==="big"?(r[i]=s>>>24,r[i+1]=s>>>16&255,r[i+2]=s>>>8&255,r[i+3]=s&255):(r[i+3]=s>>>24,r[i+2]=s>>>16&255,r[i+1]=s>>>8&255,r[i]=s&255)}return r}a(gBt,"split32");nn.split32=gBt;function yBt(t,e){return t>>>e|t<<32-e}a(yBt,"rotr32");nn.rotr32=yBt;function vBt(t,e){return t<<e|t>>>32-e}a(vBt,"rotl32");nn.rotl32=vBt;function bBt(t,e){return t+e>>>0}a(bBt,"sum32");nn.sum32=bBt;function xBt(t,e,r){return t+e+r>>>0}a(xBt,"sum32_3");nn.sum32_3=xBt;function wBt(t,e,r,n){return t+e+r+n>>>0}a(wBt,"sum32_4");nn.sum32_4=wBt;function EBt(t,e,r,n,i){return t+e+r+n+i>>>0}a(EBt,"sum32_5");nn.sum32_5=EBt;function TBt(t,e,r,n){var i=t[e],s=t[e+1],o=n+s>>>0,c=(o<n?1:0)+r+i;t[e]=c>>>0,t[e+1]=o}a(TBt,"sum64");nn.sum64=TBt;function SBt(t,e,r,n){var i=e+n>>>0,s=(i<e?1:0)+t+r;return s>>>0}a(SBt,"sum64_hi");nn.sum64_hi=SBt;function ABt(t,e,r,n){var i=e+n;return i>>>0}a(ABt,"sum64_lo");nn.sum64_lo=ABt;function kBt(t,e,r,n,i,s,o,c){var u=0,l=e;l=l+n>>>0,u+=l<e?1:0,l=l+s>>>0,u+=l<s?1:0,l=l+c>>>0,u+=l<c?1:0;var d=t+r+i+o+u;return d>>>0}a(kBt,"sum64_4_hi");nn.sum64_4_hi=kBt;function NBt(t,e,r,n,i,s,o,c){var u=e+n+s+c;return u>>>0}a(NBt,"sum64_4_lo");nn.sum64_4_lo=NBt;function OBt(t,e,r,n,i,s,o,c,u,l){var d=0,f=e;f=f+n>>>0,d+=f<e?1:0,f=f+s>>>0,d+=f<s?1:0,f=f+c>>>0,d+=f<c?1:0,f=f+l>>>0,d+=f<l?1:0;var p=t+r+i+o+u+d;return p>>>0}a(OBt,"sum64_5_hi");nn.sum64_5_hi=OBt;function IBt(t,e,r,n,i,s,o,c,u,l){var d=e+n+s+c+l;return d>>>0}a(IBt,"sum64_5_lo");nn.sum64_5_lo=IBt;function CBt(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}a(CBt,"rotr64_hi");nn.rotr64_hi=CBt;function RBt(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}a(RBt,"rotr64_lo");nn.rotr64_lo=RBt;function PBt(t,e,r){return t>>>r}a(PBt,"shr64_hi");nn.shr64_hi=PBt;function LBt(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}a(LBt,"shr64_lo");nn.shr64_lo=LBt});var T1=v(D4e=>{"use strict";var B4e=ql(),BBt=h0();function s5(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}a(s5,"BlockHash");D4e.BlockHash=s5;s5.prototype.update=a(function(e,r){if(e=B4e.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var n=e.length%this._delta8;this.pending=e.slice(e.length-n,e.length),this.pending.length===0&&(this.pending=null),e=B4e.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},"update");s5.prototype.digest=a(function(e){return this.update(this._pad()),BBt(this.pending===null),this._digest(e)},"digest");s5.prototype._pad=a(function(){var e=this.pendingTotal,r=this._delta8,n=r-(e+this.padLength)%r,i=new Array(n+this.padLength);i[0]=128;for(var s=1;s<n;s++)i[s]=0;if(e<<=3,this.endian==="big"){for(var o=8;o<this.padLength;o++)i[s++]=0;i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=e>>>24&255,i[s++]=e>>>16&255,i[s++]=e>>>8&255,i[s++]=e&255}else for(i[s++]=e&255,i[s++]=e>>>8&255,i[s++]=e>>>16&255,i[s++]=e>>>24&255,i[s++]=0,i[s++]=0,i[s++]=0,i[s++]=0,o=8;o<this.padLength;o++)i[s++]=0;return i},"pad")});var bQ=v(zp=>{"use strict";var DBt=ql(),bf=DBt.rotr32;function MBt(t,e,r,n){if(t===0)return M4e(e,r,n);if(t===1||t===3)return U4e(e,r,n);if(t===2)return F4e(e,r,n)}a(MBt,"ft_1");zp.ft_1=MBt;function M4e(t,e,r){return t&e^~t&r}a(M4e,"ch32");zp.ch32=M4e;function F4e(t,e,r){return t&e^t&r^e&r}a(F4e,"maj32");zp.maj32=F4e;function U4e(t,e,r){return t^e^r}a(U4e,"p32");zp.p32=U4e;function FBt(t){return bf(t,2)^bf(t,13)^bf(t,22)}a(FBt,"s0_256");zp.s0_256=FBt;function UBt(t){return bf(t,6)^bf(t,11)^bf(t,25)}a(UBt,"s1_256");zp.s1_256=UBt;function qBt(t){return bf(t,7)^bf(t,18)^t>>>3}a(qBt,"g0_256");zp.g0_256=qBt;function HBt(t){return bf(t,17)^bf(t,19)^t>>>10}a(HBt,"g1_256");zp.g1_256=HBt});var j4e=v((hjr,H4e)=>{"use strict";var S1=ql(),jBt=T1(),$Bt=bQ(),xQ=S1.rotl32,BA=S1.sum32,GBt=S1.sum32_5,VBt=$Bt.ft_1,q4e=jBt.BlockHash,KBt=[1518500249,1859775393,2400959708,3395469782];function xf(){if(!(this instanceof xf))return new xf;q4e.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}a(xf,"SHA1");S1.inherits(xf,q4e);H4e.exports=xf;xf.blockSize=512;xf.outSize=160;xf.hmacStrength=80;xf.padLength=64;xf.prototype._update=a(function(e,r){for(var n=this.W,i=0;i<16;i++)n[i]=e[r+i];for(;i<n.length;i++)n[i]=xQ(n[i-3]^n[i-8]^n[i-14]^n[i-16],1);var s=this.h[0],o=this.h[1],c=this.h[2],u=this.h[3],l=this.h[4];for(i=0;i<n.length;i++){var d=~~(i/20),f=GBt(xQ(s,5),VBt(d,o,c,u),l,n[i],KBt[d]);l=u,u=c,c=xQ(o,30),o=s,s=f}this.h[0]=BA(this.h[0],s),this.h[1]=BA(this.h[1],o),this.h[2]=BA(this.h[2],c),this.h[3]=BA(this.h[3],u),this.h[4]=BA(this.h[4],l)},"_update");xf.prototype._digest=a(function(e){return e==="hex"?S1.toHex32(this.h,"big"):S1.split32(this.h,"big")},"digest")});var wQ=v((gjr,G4e)=>{"use strict";var A1=ql(),zBt=T1(),k1=bQ(),JBt=h0(),Hl=A1.sum32,WBt=A1.sum32_4,XBt=A1.sum32_5,QBt=k1.ch32,YBt=k1.maj32,ZBt=k1.s0_256,eDt=k1.s1_256,tDt=k1.g0_256,rDt=k1.g1_256,$4e=zBt.BlockHash,nDt=[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];function wf(){if(!(this instanceof wf))return new wf;$4e.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=nDt,this.W=new Array(64)}a(wf,"SHA256");A1.inherits(wf,$4e);G4e.exports=wf;wf.blockSize=512;wf.outSize=256;wf.hmacStrength=192;wf.padLength=64;wf.prototype._update=a(function(e,r){for(var n=this.W,i=0;i<16;i++)n[i]=e[r+i];for(;i<n.length;i++)n[i]=WBt(rDt(n[i-2]),n[i-7],tDt(n[i-15]),n[i-16]);var s=this.h[0],o=this.h[1],c=this.h[2],u=this.h[3],l=this.h[4],d=this.h[5],f=this.h[6],p=this.h[7];for(JBt(this.k.length===n.length),i=0;i<n.length;i++){var _=XBt(p,eDt(l),QBt(l,d,f),this.k[i],n[i]),h=Hl(ZBt(s),YBt(s,o,c));p=f,f=d,d=l,l=Hl(u,_),u=c,c=o,o=s,s=Hl(_,h)}this.h[0]=Hl(this.h[0],s),this.h[1]=Hl(this.h[1],o),this.h[2]=Hl(this.h[2],c),this.h[3]=Hl(this.h[3],u),this.h[4]=Hl(this.h[4],l),this.h[5]=Hl(this.h[5],d),this.h[6]=Hl(this.h[6],f),this.h[7]=Hl(this.h[7],p)},"_update");wf.prototype._digest=a(function(e){return e==="hex"?A1.toHex32(this.h,"big"):A1.split32(this.h,"big")},"digest")});var z4e=v((vjr,K4e)=>{"use strict";var EQ=ql(),V4e=wQ();function Jp(){if(!(this instanceof Jp))return new Jp;V4e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}a(Jp,"SHA224");EQ.inherits(Jp,V4e);K4e.exports=Jp;Jp.blockSize=512;Jp.outSize=224;Jp.hmacStrength=192;Jp.padLength=64;Jp.prototype._digest=a(function(e){return e==="hex"?EQ.toHex32(this.h.slice(0,7),"big"):EQ.split32(this.h.slice(0,7),"big")},"digest")});var AQ=v((xjr,Q4e)=>{"use strict";var qo=ql(),iDt=T1(),aDt=h0(),Ef=qo.rotr64_hi,Tf=qo.rotr64_lo,J4e=qo.shr64_hi,W4e=qo.shr64_lo,y0=qo.sum64,TQ=qo.sum64_hi,SQ=qo.sum64_lo,sDt=qo.sum64_4_hi,oDt=qo.sum64_4_lo,cDt=qo.sum64_5_hi,uDt=qo.sum64_5_lo,X4e=iDt.BlockHash,lDt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function jl(){if(!(this instanceof jl))return new jl;X4e.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=lDt,this.W=new Array(160)}a(jl,"SHA512");qo.inherits(jl,X4e);Q4e.exports=jl;jl.blockSize=1024;jl.outSize=512;jl.hmacStrength=192;jl.padLength=128;jl.prototype._prepareBlock=a(function(e,r){for(var n=this.W,i=0;i<32;i++)n[i]=e[r+i];for(;i<n.length;i+=2){var s=xDt(n[i-4],n[i-3]),o=wDt(n[i-4],n[i-3]),c=n[i-14],u=n[i-13],l=vDt(n[i-30],n[i-29]),d=bDt(n[i-30],n[i-29]),f=n[i-32],p=n[i-31];n[i]=sDt(s,o,c,u,l,d,f,p),n[i+1]=oDt(s,o,c,u,l,d,f,p)}},"_prepareBlock");jl.prototype._update=a(function(e,r){this._prepareBlock(e,r);var n=this.W,i=this.h[0],s=this.h[1],o=this.h[2],c=this.h[3],u=this.h[4],l=this.h[5],d=this.h[6],f=this.h[7],p=this.h[8],_=this.h[9],h=this.h[10],m=this.h[11],g=this.h[12],y=this.h[13],E=this.h[14],S=this.h[15];aDt(this.k.length===n.length);for(var N=0;N<n.length;N+=2){var C=E,R=S,$=gDt(p,_),F=yDt(p,_),U=dDt(p,_,h,m,g,y),B=fDt(p,_,h,m,g,y),b=this.k[N],T=this.k[N+1],A=n[N],w=n[N+1],k=cDt(C,R,$,F,U,B,b,T,A,w),I=uDt(C,R,$,F,U,B,b,T,A,w);C=hDt(i,s),R=mDt(i,s),$=pDt(i,s,o,c,u,l),F=_Dt(i,s,o,c,u,l);var D=TQ(C,R,$,F),L=SQ(C,R,$,F);E=g,S=y,g=h,y=m,h=p,m=_,p=TQ(d,f,k,I),_=SQ(f,f,k,I),d=u,f=l,u=o,l=c,o=i,c=s,i=TQ(k,I,D,L),s=SQ(k,I,D,L)}y0(this.h,0,i,s),y0(this.h,2,o,c),y0(this.h,4,u,l),y0(this.h,6,d,f),y0(this.h,8,p,_),y0(this.h,10,h,m),y0(this.h,12,g,y),y0(this.h,14,E,S)},"_update");jl.prototype._digest=a(function(e){return e==="hex"?qo.toHex32(this.h,"big"):qo.split32(this.h,"big")},"digest");function dDt(t,e,r,n,i){var s=t&r^~t&i;return s<0&&(s+=4294967296),s}a(dDt,"ch64_hi");function fDt(t,e,r,n,i,s){var o=e&n^~e&s;return o<0&&(o+=4294967296),o}a(fDt,"ch64_lo");function pDt(t,e,r,n,i){var s=t&r^t&i^r&i;return s<0&&(s+=4294967296),s}a(pDt,"maj64_hi");function _Dt(t,e,r,n,i,s){var o=e&n^e&s^n&s;return o<0&&(o+=4294967296),o}a(_Dt,"maj64_lo");function hDt(t,e){var r=Ef(t,e,28),n=Ef(e,t,2),i=Ef(e,t,7),s=r^n^i;return s<0&&(s+=4294967296),s}a(hDt,"s0_512_hi");function mDt(t,e){var r=Tf(t,e,28),n=Tf(e,t,2),i=Tf(e,t,7),s=r^n^i;return s<0&&(s+=4294967296),s}a(mDt,"s0_512_lo");function gDt(t,e){var r=Ef(t,e,14),n=Ef(t,e,18),i=Ef(e,t,9),s=r^n^i;return s<0&&(s+=4294967296),s}a(gDt,"s1_512_hi");function yDt(t,e){var r=Tf(t,e,14),n=Tf(t,e,18),i=Tf(e,t,9),s=r^n^i;return s<0&&(s+=4294967296),s}a(yDt,"s1_512_lo");function vDt(t,e){var r=Ef(t,e,1),n=Ef(t,e,8),i=J4e(t,e,7),s=r^n^i;return s<0&&(s+=4294967296),s}a(vDt,"g0_512_hi");function bDt(t,e){var r=Tf(t,e,1),n=Tf(t,e,8),i=W4e(t,e,7),s=r^n^i;return s<0&&(s+=4294967296),s}a(bDt,"g0_512_lo");function xDt(t,e){var r=Ef(t,e,19),n=Ef(e,t,29),i=J4e(t,e,6),s=r^n^i;return s<0&&(s+=4294967296),s}a(xDt,"g1_512_hi");function wDt(t,e){var r=Tf(t,e,19),n=Tf(e,t,29),i=W4e(t,e,6),s=r^n^i;return s<0&&(s+=4294967296),s}a(wDt,"g1_512_lo")});var eCe=v((Ejr,Z4e)=>{"use strict";var kQ=ql(),Y4e=AQ();function Wp(){if(!(this instanceof Wp))return new Wp;Y4e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}a(Wp,"SHA384");kQ.inherits(Wp,Y4e);Z4e.exports=Wp;Wp.blockSize=1024;Wp.outSize=384;Wp.hmacStrength=192;Wp.padLength=128;Wp.prototype._digest=a(function(e){return e==="hex"?kQ.toHex32(this.h.slice(0,12),"big"):kQ.split32(this.h.slice(0,12),"big")},"digest")});var tCe=v(N1=>{"use strict";N1.sha1=j4e();N1.sha224=z4e();N1.sha256=wQ();N1.sha384=eCe();N1.sha512=AQ()});var oCe=v(sCe=>{"use strict";var Ey=ql(),EDt=T1(),o5=Ey.rotl32,rCe=Ey.sum32,DA=Ey.sum32_3,nCe=Ey.sum32_4,aCe=EDt.BlockHash;function Sf(){if(!(this instanceof Sf))return new Sf;aCe.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}a(Sf,"RIPEMD160");Ey.inherits(Sf,aCe);sCe.ripemd160=Sf;Sf.blockSize=512;Sf.outSize=160;Sf.hmacStrength=192;Sf.padLength=64;Sf.prototype._update=a(function(e,r){for(var n=this.h[0],i=this.h[1],s=this.h[2],o=this.h[3],c=this.h[4],u=n,l=i,d=s,f=o,p=c,_=0;_<80;_++){var h=rCe(o5(nCe(n,iCe(_,i,s,o),e[ADt[_]+r],TDt(_)),NDt[_]),c);n=c,c=o,o=o5(s,10),s=i,i=h,h=rCe(o5(nCe(u,iCe(79-_,l,d,f),e[kDt[_]+r],SDt(_)),ODt[_]),p),u=p,p=f,f=o5(d,10),d=l,l=h}h=DA(this.h[1],s,f),this.h[1]=DA(this.h[2],o,p),this.h[2]=DA(this.h[3],c,u),this.h[3]=DA(this.h[4],n,l),this.h[4]=DA(this.h[0],i,d),this.h[0]=h},"update");Sf.prototype._digest=a(function(e){return e==="hex"?Ey.toHex32(this.h,"little"):Ey.split32(this.h,"little")},"digest");function iCe(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}a(iCe,"f");function TDt(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}a(TDt,"K");function SDt(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}a(SDt,"Kh");var ADt=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],kDt=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],NDt=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],ODt=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var uCe=v((Njr,cCe)=>{"use strict";var IDt=ql(),CDt=h0();function O1(t,e,r){if(!(this instanceof O1))return new O1(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(IDt.toArray(e,r))}a(O1,"Hmac");cCe.exports=O1;O1.prototype._init=a(function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),CDt(e.length<=this.blockSize);for(var r=e.length;r<this.blockSize;r++)e.push(0);for(r=0;r<e.length;r++)e[r]^=54;for(this.inner=new this.Hash().update(e),r=0;r<e.length;r++)e[r]^=106;this.outer=new this.Hash().update(e)},"init");O1.prototype.update=a(function(e,r){return this.inner.update(e,r),this},"update");O1.prototype.digest=a(function(e){return this.outer.update(this.inner.digest()),this.outer.digest(e)},"digest")});var c5=v(lCe=>{var ts=lCe;ts.utils=ql();ts.common=T1();ts.sha=tCe();ts.ripemd=oCe();ts.hmac=uCe();ts.sha1=ts.sha.sha1;ts.sha256=ts.sha.sha256;ts.sha224=ts.sha.sha224;ts.sha384=ts.sha.sha384;ts.sha512=ts.sha.sha512;ts.ripemd160=ts.ripemd.ripemd160});var fCe=v((Cjr,dCe)=>{dCe.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var u5=v(hCe=>{"use strict";var OQ=hCe,v0=c5(),NQ=vQ(),RDt=yc(),pCe=RDt.assert;function _Ce(t){t.type==="short"?this.curve=new NQ.short(t):t.type==="edwards"?this.curve=new NQ.edwards(t):this.curve=new NQ.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,pCe(this.g.validate(),"Invalid curve"),pCe(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}a(_Ce,"PresetCurve");OQ.PresetCurve=_Ce;function b0(t,e){Object.defineProperty(OQ,t,{configurable:!0,enumerable:!0,get:a(function(){var r=new _Ce(e);return Object.defineProperty(OQ,t,{configurable:!0,enumerable:!0,value:r}),r},"get")})}a(b0,"defineCurve");b0("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:v0.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});b0("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:v0.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});b0("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:v0.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});b0("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:v0.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});b0("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:v0.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});b0("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:v0.sha256,gRed:!1,g:["9"]});b0("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:v0.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var IQ;try{IQ=fCe()}catch{IQ=void 0}b0("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:v0.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",IQ]})});var yCe=v((Ljr,gCe)=>{"use strict";var PDt=c5(),Ty=pQ(),mCe=h0();function x0(t){if(!(this instanceof x0))return new x0(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Ty.toArray(t.entropy,t.entropyEnc||"hex"),r=Ty.toArray(t.nonce,t.nonceEnc||"hex"),n=Ty.toArray(t.pers,t.persEnc||"hex");mCe(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}a(x0,"HmacDRBG");gCe.exports=x0;x0.prototype._init=a(function(e,r,n){var i=e.concat(r).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var s=0;s<this.V.length;s++)this.K[s]=0,this.V[s]=1;this._update(i),this._reseed=1,this.reseedInterval=281474976710656},"init");x0.prototype._hmac=a(function(){return new PDt.hmac(this.hash,this.K)},"hmac");x0.prototype._update=a(function(e){var r=this._hmac().update(this.V).update([0]);e&&(r=r.update(e)),this.K=r.digest(),this.V=this._hmac().update(this.V).digest(),e&&(this.K=this._hmac().update(this.V).update([1]).update(e).digest(),this.V=this._hmac().update(this.V).digest())},"update");x0.prototype.reseed=a(function(e,r,n,i){typeof r!="string"&&(i=n,n=r,r=null),e=Ty.toArray(e,r),n=Ty.toArray(n,i),mCe(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(n||[])),this._reseed=1},"reseed");x0.prototype.generate=a(function(e,r,n,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(i=n,n=r,r=null),n&&(n=Ty.toArray(n,i||"hex"),this._update(n));for(var s=[];s.length<e;)this.V=this._hmac().update(this.V).digest(),s=s.concat(this.V);var o=s.slice(0,e);return this._update(n),this._reseed++,Ty.encode(o,r)},"generate")});var bCe=v((Djr,vCe)=>{"use strict";var LDt=Fl(),BDt=yc(),CQ=BDt.assert;function xs(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}a(xs,"KeyPair");vCe.exports=xs;xs.fromPublic=a(function(e,r,n){return r instanceof xs?r:new xs(e,{pub:r,pubEnc:n})},"fromPublic");xs.fromPrivate=a(function(e,r,n){return r instanceof xs?r:new xs(e,{priv:r,privEnc:n})},"fromPrivate");xs.prototype.validate=a(function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},"validate");xs.prototype.getPublic=a(function(e,r){return typeof e=="string"&&(r=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,e):this.pub},"getPublic");xs.prototype.getPrivate=a(function(e){return e==="hex"?this.priv.toString(16,2):this.priv},"getPrivate");xs.prototype._importPrivate=a(function(e,r){this.priv=new LDt(e,r||16),this.priv=this.priv.umod(this.ec.curve.n)},"_importPrivate");xs.prototype._importPublic=a(function(e,r){if(e.x||e.y){this.ec.curve.type==="mont"?CQ(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&CQ(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,r)},"_importPublic");xs.prototype.derive=a(function(e){return e.validate()||CQ(e.validate(),"public point not validated"),e.mul(this.priv).getX()},"derive");xs.prototype.sign=a(function(e,r,n){return this.ec.sign(e,this,r,n)},"sign");xs.prototype.verify=a(function(e,r,n){return this.ec.verify(e,r,this,void 0,n)},"verify");xs.prototype.inspect=a(function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"},"inspect")});var ECe=v((Fjr,wCe)=>{"use strict";var l5=Fl(),LQ=yc(),DDt=LQ.assert;function d5(t,e){if(t instanceof d5)return t;this._importDER(t,e)||(DDt(t.r&&t.s,"Signature without r or s"),this.r=new l5(t.r,16),this.s=new l5(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}a(d5,"Signature");wCe.exports=d5;function MDt(){this.place=0}a(MDt,"Position");function RQ(t,e){var r=t[e.place++];if(!(r&128))return r;var n=r&15;if(n===0||n>4||t[e.place]===0)return!1;for(var i=0,s=0,o=e.place;s<n;s++,o++)i<<=8,i|=t[o],i>>>=0;return i<=127?!1:(e.place=o,i)}a(RQ,"getLength");function xCe(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e<r;)e++;return e===0?t:t.slice(e)}a(xCe,"rmPadding");d5.prototype._importDER=a(function(e,r){e=LQ.toArray(e,r);var n=new MDt;if(e[n.place++]!==48)return!1;var i=RQ(e,n);if(i===!1||i+n.place!==e.length||e[n.place++]!==2)return!1;var s=RQ(e,n);if(s===!1||(e[n.place]&128)!==0)return!1;var o=e.slice(n.place,s+n.place);if(n.place+=s,e[n.place++]!==2)return!1;var c=RQ(e,n);if(c===!1||e.length!==c+n.place||(e[n.place]&128)!==0)return!1;var u=e.slice(n.place,c+n.place);if(o[0]===0)if(o[1]&128)o=o.slice(1);else return!1;if(u[0]===0)if(u[1]&128)u=u.slice(1);else return!1;return this.r=new l5(o),this.s=new l5(u),this.recoveryParam=null,!0},"_importDER");function PQ(t,e){if(e<128){t.push(e);return}var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}a(PQ,"constructLength");d5.prototype.toDER=a(function(e){var r=this.r.toArray(),n=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),n[0]&128&&(n=[0].concat(n)),r=xCe(r),n=xCe(n);!n[0]&&!(n[1]&128);)n=n.slice(1);var i=[2];PQ(i,r.length),i=i.concat(r),i.push(2),PQ(i,n.length);var s=i.concat(n),o=[48];return PQ(o,s.length),o=o.concat(s),LQ.encode(o,e)},"toDER")});var ACe=v((qjr,SCe)=>{"use strict";var $l=Fl(),TCe=yCe(),FDt=yc(),BQ=u5(),UDt=gQ(),Sy=FDt.assert,DQ=bCe(),f5=ECe();function mu(t){if(!(this instanceof mu))return new mu(t);typeof t=="string"&&(Sy(Object.prototype.hasOwnProperty.call(BQ,t),"Unknown curve "+t),t=BQ[t]),t instanceof BQ.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}a(mu,"EC");SCe.exports=mu;mu.prototype.keyPair=a(function(e){return new DQ(this,e)},"keyPair");mu.prototype.keyFromPrivate=a(function(e,r){return DQ.fromPrivate(this,e,r)},"keyFromPrivate");mu.prototype.keyFromPublic=a(function(e,r){return DQ.fromPublic(this,e,r)},"keyFromPublic");mu.prototype.genKeyPair=a(function(e){e||(e={});for(var r=new TCe({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||UDt(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),i=this.n.sub(new $l(2));;){var s=new $l(r.generate(n));if(!(s.cmp(i)>0))return s.iaddn(1),this.keyFromPrivate(s)}},"genKeyPair");mu.prototype._truncateToN=a(function(e,r,n){var i;if($l.isBN(e)||typeof e=="number")e=new $l(e,16),i=e.byteLength();else if(typeof e=="object")i=e.length,e=new $l(e,16);else{var s=e.toString();i=s.length+1>>>1,e=new $l(s,16)}typeof n!="number"&&(n=i*8);var o=n-this.n.bitLength();return o>0&&(e=e.ushrn(o)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},"_truncateToN");mu.prototype.sign=a(function(e,r,n,i){if(typeof n=="object"&&(i=n,n=null),i||(i={}),typeof e!="string"&&typeof e!="number"&&!$l.isBN(e)){Sy(typeof e=="object"&&e&&typeof e.length=="number","Expected message to be an array-like, a hex string, or a BN instance"),Sy(e.length>>>0===e.length);for(var s=0;s<e.length;s++)Sy((e[s]&255)===e[s])}r=this.keyFromPrivate(r,n),e=this._truncateToN(e,!1,i.msgBitLength),Sy(!e.isNeg(),"Can not sign a negative message");var o=this.n.byteLength(),c=r.getPrivate().toArray("be",o),u=e.toArray("be",o);Sy(new $l(u).eq(e),"Can not sign message");for(var l=new TCe({hash:this.hash,entropy:c,nonce:u,pers:i.pers,persEnc:i.persEnc||"utf8"}),d=this.n.sub(new $l(1)),f=0;;f++){var p=i.k?i.k(f):new $l(l.generate(this.n.byteLength()));if(p=this._truncateToN(p,!0),!(p.cmpn(1)<=0||p.cmp(d)>=0)){var _=this.g.mul(p);if(!_.isInfinity()){var h=_.getX(),m=h.umod(this.n);if(m.cmpn(0)!==0){var g=p.invm(this.n).mul(m.mul(r.getPrivate()).iadd(e));if(g=g.umod(this.n),g.cmpn(0)!==0){var y=(_.getY().isOdd()?1:0)|(h.cmp(m)!==0?2:0);return i.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),y^=1),new f5({r:m,s:g,recoveryParam:y})}}}}}},"sign");mu.prototype.verify=a(function(e,r,n,i,s){s||(s={}),e=this._truncateToN(e,!1,s.msgBitLength),n=this.keyFromPublic(n,i),r=new f5(r,"hex");var o=r.r,c=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||c.cmpn(1)<0||c.cmp(this.n)>=0)return!1;var u=c.invm(this.n),l=u.mul(e).umod(this.n),d=u.mul(o).umod(this.n),f;return this.curve._maxwellTrick?(f=this.g.jmulAdd(l,n.getPublic(),d),f.isInfinity()?!1:f.eqXToP(o)):(f=this.g.mulAdd(l,n.getPublic(),d),f.isInfinity()?!1:f.getX().umod(this.n).cmp(o)===0)},"verify");mu.prototype.recoverPubKey=function(t,e,r,n){Sy((3&r)===r,"The recovery param is more than two bits"),e=new f5(e,n);var i=this.n,s=new $l(t),o=e.r,c=e.s,u=r&1,l=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&l)throw new Error("Unable to find sencond key candinate");l?o=this.curve.pointFromX(o.add(this.curve.n),u):o=this.curve.pointFromX(o,u);var d=e.r.invm(i),f=i.sub(s).mul(d).umod(i),p=c.mul(d).umod(i);return this.g.mulAdd(f,o,p)};mu.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new f5(e,n),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var s;try{s=this.recoverPubKey(t,e,i)}catch{continue}if(s.eq(r))return i}throw new Error("Unable to find valid recovery factor")}});var ICe=v((jjr,OCe)=>{"use strict";var MA=yc(),NCe=MA.assert,kCe=MA.parseBytes,I1=MA.cachedProperty;function qa(t,e){this.eddsa=t,this._secret=kCe(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=kCe(e.pub)}a(qa,"KeyPair");qa.fromPublic=a(function(e,r){return r instanceof qa?r:new qa(e,{pub:r})},"fromPublic");qa.fromSecret=a(function(e,r){return r instanceof qa?r:new qa(e,{secret:r})},"fromSecret");qa.prototype.secret=a(function(){return this._secret},"secret");I1(qa,"pubBytes",a(function(){return this.eddsa.encodePoint(this.pub())},"pubBytes"));I1(qa,"pub",a(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())},"pub"));I1(qa,"privBytes",a(function(){var e=this.eddsa,r=this.hash(),n=e.encodingLength-1,i=r.slice(0,e.encodingLength);return i[0]&=248,i[n]&=127,i[n]|=64,i},"privBytes"));I1(qa,"priv",a(function(){return this.eddsa.decodeInt(this.privBytes())},"priv"));I1(qa,"hash",a(function(){return this.eddsa.hash().update(this.secret()).digest()},"hash"));I1(qa,"messagePrefix",a(function(){return this.hash().slice(this.eddsa.encodingLength)},"messagePrefix"));qa.prototype.sign=a(function(e){return NCe(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},"sign");qa.prototype.verify=a(function(e,r){return this.eddsa.verify(e,r,this)},"verify");qa.prototype.getSecret=a(function(e){return NCe(this._secret,"KeyPair is public only"),MA.encode(this.secret(),e)},"getSecret");qa.prototype.getPublic=a(function(e){return MA.encode(this.pubBytes(),e)},"getPublic");OCe.exports=qa});var PCe=v((Gjr,RCe)=>{"use strict";var qDt=Fl(),p5=yc(),CCe=p5.assert,_5=p5.cachedProperty,HDt=p5.parseBytes;function Ay(t,e){this.eddsa=t,typeof e!="object"&&(e=HDt(e)),Array.isArray(e)&&(CCe(e.length===t.encodingLength*2,"Signature has invalid size"),e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),CCe(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof qDt&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}a(Ay,"Signature");_5(Ay,"S",a(function(){return this.eddsa.decodeInt(this.Sencoded())},"S"));_5(Ay,"R",a(function(){return this.eddsa.decodePoint(this.Rencoded())},"R"));_5(Ay,"Rencoded",a(function(){return this.eddsa.encodePoint(this.R())},"Rencoded"));_5(Ay,"Sencoded",a(function(){return this.eddsa.encodeInt(this.S())},"Sencoded"));Ay.prototype.toBytes=a(function(){return this.Rencoded().concat(this.Sencoded())},"toBytes");Ay.prototype.toHex=a(function(){return p5.encode(this.toBytes(),"hex").toUpperCase()},"toHex");RCe.exports=Ay});var FCe=v((Kjr,MCe)=>{"use strict";var jDt=c5(),$Dt=u5(),C1=yc(),GDt=C1.assert,BCe=C1.parseBytes,DCe=ICe(),LCe=PCe();function Ho(t){if(GDt(t==="ed25519","only tested with ed25519 so far"),!(this instanceof Ho))return new Ho(t);t=$Dt[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=jDt.sha512}a(Ho,"EDDSA");MCe.exports=Ho;Ho.prototype.sign=a(function(e,r){e=BCe(e);var n=this.keyFromSecret(r),i=this.hashInt(n.messagePrefix(),e),s=this.g.mul(i),o=this.encodePoint(s),c=this.hashInt(o,n.pubBytes(),e).mul(n.priv()),u=i.add(c).umod(this.curve.n);return this.makeSignature({R:s,S:u,Rencoded:o})},"sign");Ho.prototype.verify=a(function(e,r,n){if(e=BCe(e),r=this.makeSignature(r),r.S().gte(r.eddsa.curve.n)||r.S().isNeg())return!1;var i=this.keyFromPublic(n),s=this.hashInt(r.Rencoded(),i.pubBytes(),e),o=this.g.mul(r.S()),c=r.R().add(i.pub().mul(s));return c.eq(o)},"verify");Ho.prototype.hashInt=a(function(){for(var e=this.hash(),r=0;r<arguments.length;r++)e.update(arguments[r]);return C1.intFromLE(e.digest()).umod(this.curve.n)},"hashInt");Ho.prototype.keyFromPublic=a(function(e){return DCe.fromPublic(this,e)},"keyFromPublic");Ho.prototype.keyFromSecret=a(function(e){return DCe.fromSecret(this,e)},"keyFromSecret");Ho.prototype.makeSignature=a(function(e){return e instanceof LCe?e:new LCe(this,e)},"makeSignature");Ho.prototype.encodePoint=a(function(e){var r=e.getY().toArray("le",this.encodingLength);return r[this.encodingLength-1]|=e.getX().isOdd()?128:0,r},"encodePoint");Ho.prototype.decodePoint=a(function(e){e=C1.parseBytes(e);var r=e.length-1,n=e.slice(0,r).concat(e[r]&-129),i=(e[r]&128)!==0,s=C1.intFromLE(n);return this.curve.pointFromY(s,i)},"decodePoint");Ho.prototype.encodeInt=a(function(e){return e.toArray("le",this.encodingLength)},"encodeInt");Ho.prototype.decodeInt=a(function(e){return C1.intFromLE(e)},"decodeInt");Ho.prototype.isPoint=a(function(e){return e instanceof this.pointClass},"isPoint")});var qCe=v(UCe=>{"use strict";var ky=UCe;ky.version=_4e().version;ky.utils=yc();ky.rand=gQ();ky.curve=vQ();ky.curves=u5();ky.ec=ACe();ky.eddsa=FCe()});var jCe=v((Wjr,HCe)=>{var VDt=qCe().ec,Af=new VDt("secp256k1"),Yt=Af.curve,an=Yt.n.constructor;function KDt(t,e){let r=new an(e);if(r.cmp(Yt.p)>=0)return null;r=r.toRed(Yt.red);let n=r.redSqr().redIMul(r).redIAdd(Yt.b).redSqrt();t===3!==n.isOdd()&&(n=n.redNeg());let i=r.redSqr().redIMul(r);return n.redSqr().redISub(i.redIAdd(Yt.b)).isZero()?Af.keyPair({pub:{x:r,y:n}}):null}a(KDt,"loadCompressedPublicKey");function zDt(t,e,r){let n=new an(e),i=new an(r);if(n.cmp(Yt.p)>=0||i.cmp(Yt.p)>=0||(n=n.toRed(Yt.red),i=i.toRed(Yt.red),(t===6||t===7)&&i.isOdd()!==(t===7)))return null;let s=n.redSqr().redIMul(n);return i.redSqr().redISub(s.redIAdd(Yt.b)).isZero()?Af.keyPair({pub:{x:n,y:i}}):null}a(zDt,"loadUncompressedPublicKey");function w0(t){let e=t[0];switch(e){case 2:case 3:return t.length!==33?null:KDt(e,t.subarray(1,33));case 4:case 6:case 7:return t.length!==65?null:zDt(e,t.subarray(1,33),t.subarray(33,65));default:return null}}a(w0,"loadPublicKey");function Ny(t,e){let r=e.encode(null,t.length===33);for(let n=0;n<t.length;++n)t[n]=r[n]}a(Ny,"savePublicKey");HCe.exports={contextRandomize(){return 0},privateKeyVerify(t){let e=new an(t);return e.cmp(Yt.n)<0&&!e.isZero()?0:1},privateKeyNegate(t){let e=new an(t),r=Yt.n.sub(e).umod(Yt.n).toArrayLike(Uint8Array,"be",32);return t.set(r),0},privateKeyTweakAdd(t,e){let r=new an(e);if(r.cmp(Yt.n)>=0||(r.iadd(new an(t)),r.cmp(Yt.n)>=0&&r.isub(Yt.n),r.isZero()))return 1;let n=r.toArrayLike(Uint8Array,"be",32);return t.set(n),0},privateKeyTweakMul(t,e){let r=new an(e);if(r.cmp(Yt.n)>=0||r.isZero())return 1;r.imul(new an(t)),r.cmp(Yt.n)>=0&&(r=r.umod(Yt.n));let n=r.toArrayLike(Uint8Array,"be",32);return t.set(n),0},publicKeyVerify(t){return w0(t)===null?1:0},publicKeyCreate(t,e){let r=new an(e);if(r.cmp(Yt.n)>=0||r.isZero())return 1;let n=Af.keyFromPrivate(e).getPublic();return Ny(t,n),0},publicKeyConvert(t,e){let r=w0(e);if(r===null)return 1;let n=r.getPublic();return Ny(t,n),0},publicKeyNegate(t,e){let r=w0(e);if(r===null)return 1;let n=r.getPublic();return n.y=n.y.redNeg(),Ny(t,n),0},publicKeyCombine(t,e){let r=new Array(e.length);for(let i=0;i<e.length;++i)if(r[i]=w0(e[i]),r[i]===null)return 1;let n=r[0].getPublic();for(let i=1;i<r.length;++i)n=n.add(r[i].pub);return n.isInfinity()?2:(Ny(t,n),0)},publicKeyTweakAdd(t,e,r){let n=w0(e);if(n===null)return 1;if(r=new an(r),r.cmp(Yt.n)>=0)return 2;let i=n.getPublic().add(Yt.g.mul(r));return i.isInfinity()?2:(Ny(t,i),0)},publicKeyTweakMul(t,e,r){let n=w0(e);if(n===null)return 1;if(r=new an(r),r.cmp(Yt.n)>=0||r.isZero())return 2;let i=n.getPublic().mul(r);return Ny(t,i),0},signatureNormalize(t){let e=new an(t.subarray(0,32)),r=new an(t.subarray(32,64));return e.cmp(Yt.n)>=0||r.cmp(Yt.n)>=0?1:(r.cmp(Af.nh)===1&&t.set(Yt.n.sub(r).toArrayLike(Uint8Array,"be",32),32),0)},signatureExport(t,e){let r=e.subarray(0,32),n=e.subarray(32,64);if(new an(r).cmp(Yt.n)>=0||new an(n).cmp(Yt.n)>=0)return 1;let{output:i}=t,s=i.subarray(4,37);s[0]=0,s.set(r,1);let o=33,c=0;for(;o>1&&s[c]===0&&!(s[c+1]&128);--o,++c);if(s=s.subarray(c),s[0]&128||o>1&&s[0]===0&&!(s[1]&128))return 1;let u=i.subarray(39,72);u[0]=0,u.set(n,1);let l=33,d=0;for(;l>1&&u[d]===0&&!(u[d+1]&128);--l,++d);return u=u.subarray(d),u[0]&128||l>1&&u[0]===0&&!(u[1]&128)?1:(t.outputlen=6+o+l,i[0]=48,i[1]=t.outputlen-2,i[2]=2,i[3]=s.length,i.set(s,4),i[4+o]=2,i[5+o]=u.length,i.set(u,6+o),0)},signatureImport(t,e){if(e.length<8||e.length>72||e[0]!==48||e[1]!==e.length-2||e[2]!==2)return 1;let r=e[3];if(r===0||5+r>=e.length||e[4+r]!==2)return 1;let n=e[5+r];if(n===0||6+r+n!==e.length||e[4]&128||r>1&&e[4]===0&&!(e[5]&128)||e[r+6]&128||n>1&&e[r+6]===0&&!(e[r+7]&128))return 1;let i=e.subarray(4,4+r);if(i.length===33&&i[0]===0&&(i=i.subarray(1)),i.length>32)return 1;let s=e.subarray(6+r);if(s.length===33&&s[0]===0&&(s=s.slice(1)),s.length>32)throw new Error("S length is too long");let o=new an(i);o.cmp(Yt.n)>=0&&(o=new an(0));let c=new an(e.subarray(6+r));return c.cmp(Yt.n)>=0&&(c=new an(0)),t.set(o.toArrayLike(Uint8Array,"be",32),0),t.set(c.toArrayLike(Uint8Array,"be",32),32),0},ecdsaSign(t,e,r,n,i){if(i){let c=i;i=a(u=>{let l=c(e,r,null,n,u);if(!(l instanceof Uint8Array&&l.length===32))throw new Error("This is the way");return new an(l)},"noncefn")}let s=new an(r);if(s.cmp(Yt.n)>=0||s.isZero())return 1;let o;try{o=Af.sign(e,r,{canonical:!0,k:i,pers:n})}catch{return 1}return t.signature.set(o.r.toArrayLike(Uint8Array,"be",32),0),t.signature.set(o.s.toArrayLike(Uint8Array,"be",32),32),t.recid=o.recoveryParam,0},ecdsaVerify(t,e,r){let n={r:t.subarray(0,32),s:t.subarray(32,64)},i=new an(n.r),s=new an(n.s);if(i.cmp(Yt.n)>=0||s.cmp(Yt.n)>=0)return 1;if(s.cmp(Af.nh)===1||i.isZero()||s.isZero())return 3;let o=w0(r);if(o===null)return 2;let c=o.getPublic();return Af.verify(e,n,c)?0:3},ecdsaRecover(t,e,r,n){let i={r:e.slice(0,32),s:e.slice(32,64)},s=new an(i.r),o=new an(i.s);if(s.cmp(Yt.n)>=0||o.cmp(Yt.n)>=0)return 1;if(s.isZero()||o.isZero())return 2;let c;try{c=Af.recoverPubKey(n,i,r)}catch{return 2}return Ny(t,c),0},ecdh(t,e,r,n,i,s,o){let c=w0(e);if(c===null)return 1;let u=new an(r);if(u.cmp(Yt.n)>=0||u.isZero())return 2;let l=c.getPublic().mul(u);if(i===void 0){let d=l.encode(null,!0),f=Af.hash().update(d).digest();for(let p=0;p<32;++p)t[p]=f[p]}else{s||(s=new Uint8Array(32));let d=l.getX().toArray("be",32);for(let h=0;h<32;++h)s[h]=d[h];o||(o=new Uint8Array(32));let f=l.getY().toArray("be",32);for(let h=0;h<32;++h)o[h]=f[h];let p=i(s,o,n);if(!(p instanceof Uint8Array&&p.length===t.length))return 2;t.set(p)}return 0}}});var GCe=v((Qjr,$Ce)=>{$Ce.exports=dQ()(jCe())});var VCe=v((Yjr,MQ)=>{try{MQ.exports=p4e()}catch{MQ.exports=GCe()}});var gu=v(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});E0.testnet=E0.regtest=E0.bitcoin=void 0;E0.bitcoin={messagePrefix:`Bitcoin Signed Message:
2157
2157
  `,bech32:"bc",bip32:{public:76067358,private:76066276},pubKeyHash:0,scriptHash:5,wif:128};E0.regtest={messagePrefix:`Bitcoin Signed Message: