@swapkit/helpers 1.0.0-rc.7 → 1.0.0-rc.71
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/index.cjs +2 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +96 -73
- package/dist/index.es.js +1015 -502
- package/dist/index.es.js.map +1 -0
- package/package.json +16 -13
- package/src/helpers/__tests__/memo.test.ts +3 -3
- package/src/helpers/asset.ts +56 -56
- package/src/helpers/liquidity.ts +46 -38
- package/src/helpers/memo.ts +19 -16
- package/src/helpers/others.ts +6 -54
- package/src/helpers/validators.ts +4 -3
- package/src/index.ts +2 -0
- package/src/modules/__tests__/assetValue.test.ts +232 -38
- package/src/modules/__tests__/bigIntArithmetics.test.ts +30 -0
- package/src/modules/__tests__/swapKitNumber.test.ts +174 -48
- package/src/modules/assetValue.ts +203 -141
- package/src/modules/bigIntArithmetics.ts +185 -116
- package/src/modules/swapKitError.ts +13 -4
- package/src/modules/swapKitNumber.ts +8 -1
- package/src/types.ts +30 -0
package/dist/index.cjs
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";var oe=Object.create;var R=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var ue=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,de=Object.prototype.hasOwnProperty;var me=(n,e,t)=>e in n?R(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var ge=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ue(e))!de.call(n,a)&&a!==t&&R(n,a,{get:()=>e[a],enumerable:!(i=le(e,a))||i.enumerable});return n};var _e=(n,e,t)=>(t=n!=null?oe(he(n)):{},ge(e||!n||!n.__esModule?R(t,"default",{value:n,enumerable:!0}):t,n));var g=(n,e,t)=>(me(n,typeof e!="symbol"?e+"":e,t),t),pe=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)};var C=(n,e,t)=>{if(e.has(n))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(n):e.set(n,t)};var m=(n,e,t)=>(pe(n,e,"access private method"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@swapkit/types"),Ce=n=>{if(n<0)throw new Error("Invalid number of year");return 10+n},fe=n=>{if(n.length>30)return!1;const e=/^[a-zA-Z0-9+_-]+$/g;return!!n.match(e)},Ae=([n,e,t,i,a])=>`${n}'/${e}'/${t}'/${i}${typeof a!="number"?"":`/${a}`}`,Se=async(n,e)=>{try{const t=Object.entries(e||{}).reduce((a,[s,c])=>(c&&(a[s]=c),a),{});return(await fetch(`${n}${e?`?${new URLSearchParams(t).toString()}`:""}`,{method:"GET",mode:"cors",credentials:"omit",referrer:"https://sk.thorswap.net"})).json()}catch(t){return console.error(t),{}}},K=async(n,e,t,i=!1)=>{try{const a=await fetch(`${n}`,{body:e,headers:t,method:"POST",referrer:"https://sk.thorswap.net"});return i?a.text():a.json()}catch{return{}}},we="0x313ce567",Y=async({chain:n,to:e})=>{try{const t=await K(r.ChainToRPC[n],JSON.stringify({method:"eth_call",params:[{to:e.toLowerCase(),data:we},"latest"],id:44,jsonrpc:"2.0"}),{accept:"*/*","cache-control":"no-cache","content-type":"application/json"},!0),{result:i}=JSON.parse(t);return parseInt(BigInt(i).toString())}catch(t){return console.error(t),r.BaseDecimal[n]}},$e=async n=>{if(n===r.Chain.Ethereum)return r.BaseDecimal.ETH;const[,e]=n.split("-");return e!=null&&e.startsWith("0x")?Y({chain:r.Chain.Ethereum,to:e}):r.BaseDecimal.ETH},be=async n=>{const[,e]=n.split("-");return e!=null&&e.startsWith("0x")?Y({chain:r.Chain.Avalanche,to:e.toLowerCase()}):r.BaseDecimal.AVAX},Be=async n=>(n===r.Chain.BinanceSmartChain,r.BaseDecimal.BSC),q=async({chain:n,symbol:e})=>{switch(n){case r.Chain.Ethereum:return $e(e);case r.Chain.Avalanche:return be(e);case r.Chain.BinanceSmartChain:return Be(e);default:return r.BaseDecimal[n]}},ye={[r.FeeOption.Average]:1.2,[r.FeeOption.Fast]:1.5,[r.FeeOption.Fastest]:2},z=({chain:n,symbol:e})=>{switch(n){case r.Chain.Bitcoin:case r.Chain.BitcoinCash:case r.Chain.Litecoin:case r.Chain.Dogecoin:case r.Chain.Binance:case r.Chain.Ethereum:case r.Chain.Avalanche:return e===n;case r.Chain.Arbitrum:case r.Chain.Optimism:return e==="ETH";case r.Chain.Maya:return e==="CACAO";case r.Chain.Kujira:return e==="KUJI";case r.Chain.Cosmos:return e==="ATOM";case r.Chain.Polygon:return e==="MATIC";case r.Chain.BinanceSmartChain:return e==="BNB";case r.Chain.THORChain:return e==="RUNE"}},J=n=>{switch(n){case"ETH.THOR":return{identifier:"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044",decimal:18};case"ETH.vTHOR":return{identifier:"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d",decimal:18};case r.Chain.Cosmos:return{identifier:"GAIA.ATOM",decimal:r.BaseDecimal[n]};case r.Chain.THORChain:return{identifier:"THOR.RUNE",decimal:r.BaseDecimal[n]};case r.Chain.BinanceSmartChain:return{identifier:"BSC.BNB",decimal:r.BaseDecimal[n]};case r.Chain.Maya:return{identifier:"MAYA.CACAO",decimal:r.BaseDecimal.MAYA};case"MAYA.MAYA":return{identifier:"MAYA.MAYA",decimal:4};case r.Chain.Kujira:case r.Chain.Arbitrum:case r.Chain.Optimism:case r.Chain.BitcoinCash:case r.Chain.Litecoin:case r.Chain.Dogecoin:case r.Chain.Binance:case r.Chain.Avalanche:case r.Chain.Polygon:case r.Chain.Bitcoin:case r.Chain.Ethereum:return{identifier:`${n}.${n}`,decimal:r.BaseDecimal[n]}}},Q=({chain:n,symbol:e})=>{if(e.includes("/"))return"Synth";switch(n){case r.Chain.Bitcoin:case r.Chain.BitcoinCash:case r.Chain.Dogecoin:case r.Chain.Litecoin:case r.Chain.Maya:case r.Chain.THORChain:return"Native";case r.Chain.Cosmos:return e==="ATOM"?"Native":r.Chain.Cosmos;case r.Chain.Kujira:return e===r.Chain.Kujira?"Native":r.Chain.Kujira;case r.Chain.Binance:return e===r.Chain.Binance?"Native":"BEP2";case r.Chain.BinanceSmartChain:return e===r.Chain.Binance?"Native":"BEP20";case r.Chain.Ethereum:return e===r.Chain.Ethereum?"Native":"ERC20";case r.Chain.Avalanche:return e===r.Chain.Avalanche?"Native":r.Chain.Avalanche;case r.Chain.Polygon:return e===r.Chain.Polygon?"Native":"POLYGON";case r.Chain.Arbitrum:return[r.Chain.Ethereum,r.Chain.Arbitrum].includes(e)?"Native":"ARBITRUM";case r.Chain.Optimism:return[r.Chain.Ethereum,r.Chain.Optimism].includes(e)?"Native":"OPTIMISM"}},Ie=n=>{var c;const[e,...t]=n.split("."),i=n.includes("/"),a=t.join("."),s=(c=a==null?void 0:a.split("-"))==null?void 0:c[0];return{chain:e,symbol:a,ticker:s,synth:i}},Te=new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,"gmi"),ve=n=>n.filter(e=>!Te.test(e.toString())&&!e.toString().includes("undefined")),X=({liquidityUnits:n,poolUnits:e,runeDepth:t})=>{const i=d(n),a=d(e),s=d(t),c=i.mul(s),o=a.mul(a).mul(2),l=a.mul(i).mul(2),u=i.mul(i),h=a.mul(a).mul(a);return c.mul(o.sub(l).add(u)).div(h)},Z=({liquidityUnits:n,poolUnits:e,assetDepth:t})=>{const i=d(n),a=d(e),s=d(t),c=i.mul(s),o=a.mul(a).mul(2),l=a.mul(i).mul(2),u=i.mul(i),h=c.mul(o.sub(l).add(u)),p=a.mul(a).mul(a);return h.div(p)},Me=({percent:n,runeDepth:e,liquidityUnits:t,poolUnits:i})=>X({runeDepth:e,liquidityUnits:t,poolUnits:i}).mul(n),Ve=({percent:n,assetDepth:e,liquidityUnits:t,poolUnits:i})=>Z({assetDepth:e,liquidityUnits:t,poolUnits:i}).mul(n),d=n=>new ie({value:n,decimal:r.BaseDecimal.THOR}),ee=({liquidityUnits:n,poolUnits:e,runeDepth:t,assetDepth:i})=>({assetAmount:d(i).mul(n).div(e),runeAmount:d(t).mul(n).div(e)}),Oe=({liquidityUnits:n,poolUnits:e,runeDepth:t,assetDepth:i,percent:a})=>Object.fromEntries(Object.entries(ee({liquidityUnits:n,poolUnits:e,runeDepth:t,assetDepth:i})).map(([s,c])=>[s,c.mul(a)])),Ee=({runeDepth:n,poolUnits:e,assetDepth:t,liquidityUnits:i,runeAmount:a,assetAmount:s})=>{const c=d(n),o=d(t),l=d(e),u=d(a),h=d(s),p=u.mul(o),$=h.mul(c),E=u.mul(h),ae=c.mul(o),re=l.mul(p.add($.add(E.mul(2)))),se=p.add($.add(ae.mul(2))),W=re.div(se),N=d(i).add(W);if(W.baseValueNumber===0)return N.div(l).baseValueNumber;const ce=l.add(N);return N.div(ce).baseValueNumber},Ne=({runeAmount:n,assetAmount:e,runeDepth:t,assetDepth:i})=>{const a=d(t),s=d(i),c=d(e),o=d(n),l=c.mul(a).sub(s.mul(o)),u=s.mul(o).add(a.mul(s));return Math.abs(l.div(u).baseValueNumber)},Re=({symbol:n,ticker:e,chain:t})=>t==="ETH"&&e!=="ETH"?`${e}-${n.slice(-3)}`:n,De=(n,e)=>{switch(n){case r.MemoType.LEAVE:case r.MemoType.BOND:{const{address:t}=e;return`${n}:${t}`}case r.MemoType.UNBOND:{const{address:t,unbondAmount:i}=e;return`${n}:${t}:${i*10**8}`}case r.MemoType.THORNAME_REGISTER:{const{name:t,chain:i,address:a,owner:s}=e;return`${n}:${t}:${i}:${a}${s?`:${s}`:""}`}case r.MemoType.DEPOSIT:{const{chain:t,symbol:i,address:a,singleSide:s}=e;return s?`${n}:${t}/${i}::t:0`:`${n}:${t}.${i}:${a||""}:t:0`}case r.MemoType.WITHDRAW:{const{chain:t,ticker:i,symbol:a,basisPoints:s,targetAssetString:c,singleSide:o}=e,l=!o&&c?`:${c}`:"",u=Re({chain:t,symbol:a,ticker:i});return`${n}:${t}${o?"/":"."}${u}:${s}${l}`}case r.MemoType.OPEN_LOAN:case r.MemoType.CLOSE_LOAN:{const{asset:t,address:i}=e;return`${n}:${t}:${i}`}default:return""}},G=Object.values(r.Chain),Pe=(n="")=>{const e=n.toUpperCase(),[t]=e.split(".");if(G.includes(t))return!0;const[i]=e.split("/");if(G.includes(i))return!0;throw new Error(`Invalid identifier: ${n}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`)},I=8,S=n=>10n**BigInt(n),b=n=>Math.log10(parseFloat(n.toString()));function k({value:n,bigIntDecimal:e=I,decimal:t=I}){const i=n<0n;let a=n.toString().substring(i?1:0);const s=t-(a.length-1);s>0&&(a="0".repeat(s)+a);const c=a.length-t;let o=a.slice(-t);return parseInt(o[e])>=5?o=`${o.substring(0,e-1)}${(parseInt(o[e-1])+1).toString()}`:o=o.substring(0,e),`${i?"-":""}${a.slice(0,c)}.${o}`.replace(/\.?0*$/,"")}var f,B,V,te,O,ne,v,H,A,y,M,L;const T=class T{constructor(e){C(this,f);C(this,V);C(this,O);C(this,v);C(this,A);C(this,M);g(this,"decimalMultiplier",10n**8n);g(this,"bigIntValue",0n);g(this,"decimal");const t=D(e);this.decimal=typeof e=="object"?e.decimal:void 0,this.decimalMultiplier=S(Math.max(m(this,M,L).call(this,m(this,A,y).call(this,t)),this.decimal||0)),m(this,V,te).call(this,t)}static fromBigInt(e,t){return new T({decimal:t,value:k({value:e,bigIntDecimal:t,decimal:t})})}static shiftDecimals({value:e,from:t,to:i}){return T.fromBigInt(new T(e).bigIntValue*S(i)/S(t),i)}get baseValue(){return this.getBaseValue("string")}get baseValueNumber(){return this.getBaseValue("number")}get baseValueBigInt(){return this.getBaseValue("bigint")}set(e){return new this.constructor({decimal:this.decimal,value:e,identifier:this.toString()})}add(...e){return m(this,f,B).call(this,"add",...e)}sub(...e){return m(this,f,B).call(this,"sub",...e)}mul(...e){return m(this,f,B).call(this,"mul",...e)}div(...e){return m(this,f,B).call(this,"div",...e)}gt(e){return this.bigIntValue>this.getBigIntValue(e)}gte(e){return this.bigIntValue>=this.getBigIntValue(e)}lt(e){return this.bigIntValue<this.getBigIntValue(e)}lte(e){return this.bigIntValue<=this.getBigIntValue(e)}eqValue(e){return this.bigIntValue===this.getBigIntValue(e)}getValue(e){const t=this.formatBigIntToSafeValue(this.bigIntValue,this.decimal||b(this.decimalMultiplier));switch(e){case"number":return Number(t);case"string":return t;default:return this.bigIntValue}}getBaseValue(e){const t=this.decimalMultiplier/S(this.decimal||0),i=this.bigIntValue/t;switch(e){case"number":return Number(i);case"string":return i.toString();default:return this.bigIntValue}}getBigIntValue(e,t){if(!t&&typeof e=="object")return e.bigIntValue;const i=D(e),a=m(this,A,y).call(this,i);return a==="0"||a==="undefined"?0n:m(this,v,H).call(this,a,t)}formatBigIntToSafeValue(e,t){const i=t||this.decimal||I,a=Math.max(i,b(this.decimalMultiplier)),s=e<0n,c=e.toString().substring(s?1:0),o=a-(c.length-1),l=o>0?"0".repeat(o)+c:c,u=l.length-a;let h=l.slice(-a);return parseInt(h[i])>=5?h=`${h.substring(0,i-1)}${(parseInt(h[i-1])+1).toString()}`:h=h.substring(0,i),`${s?"-":""}${l.slice(0,u)}.${h}`.replace(/\.?0*$/,"")}toSignificant(e=6){const[t,i]=this.getValue("string").split("."),a=t||"",s=i||"",c=parseInt(a)?a.length+s.length:s.length;if(c<=e)return this.getValue("string");if(a.length>=e)return a.slice(0,e).padEnd(a.length,"0");if(parseInt(a))return`${a}.${s.slice(0,e-a.length)}`.padEnd(c-e,"0");const o=parseInt(s),l=`${o}`.slice(0,e);return`0.${l.padStart(s.length-`${o}`.length+l.length,"0")}`}};f=new WeakSet,B=function(e,...t){const i=m(this,O,ne).call(this,this,...t),a=S(i),s=t.reduce((o,l)=>{const u=this.getBigIntValue(l,i);switch(e){case"add":return o+u;case"sub":return o-u;case"mul":return o*u/a;case"div":{if(u===0n)throw new RangeError("Division by zero");return o*a/u}default:return o}},this.bigIntValue*a/this.decimalMultiplier),c=k({bigIntDecimal:i,decimal:Math.max(i,b(this.decimalMultiplier)),value:s});return new this.constructor({decimal:this.decimal,value:c,identifier:this.toString()})},V=new WeakSet,te=function(e){const t=m(this,A,y).call(this,e)||"0";this.bigIntValue=m(this,v,H).call(this,t)},O=new WeakSet,ne=function(...e){const t=e.map(i=>typeof i=="object"?i.decimal||b(i.decimalMultiplier):m(this,M,L).call(this,m(this,A,y).call(this,i))).filter(Boolean);return Math.max(...t,I)},v=new WeakSet,H=function(e,t){const i=t?S(t):this.decimalMultiplier,a=b(i),[s="",c=""]=e.split(".");return BigInt(`${s}${c.padEnd(a,"0")}`)},A=new WeakSet,y=function(e){const i=`${typeof e=="number"?Number(e).toLocaleString("fullwide",{useGrouping:!1,maximumFractionDigits:20}):D(e)}`.replaceAll(",",".").split(".");return i.length>1?`${i.slice(0,-1).join("")}.${i.at(-1)}`:i[0]},M=new WeakSet,L=function(e){var i;const t=((i=e.split(".")[1])==null?void 0:i.length)||0;return Math.max(t,I)};let w=T;function D(n){return typeof n=="object"?"getValue"in n?n.getValue("string"):n.value:n}let x;const P=n=>{if(!x)throw new Error("Static assets not loaded, call await AssetValue.loadStaticAssets() first");return x.get(n.toUpperCase())||{decimal:r.BaseDecimal.THOR,identifier:""}},U=async(n,e=0)=>{Pe(n);const t=await q(j(n));return new _({decimal:t,value:e,identifier:n})};class _ extends w{constructor(t){super(t.value instanceof w?t.value:{decimal:t.decimal,value:t.value});g(this,"address");g(this,"chain");g(this,"isSynthetic",!1);g(this,"isGasAsset",!1);g(this,"symbol");g(this,"ticker");g(this,"type");const i="identifier"in t?t.identifier:`${t.chain}.${t.symbol}`,a=j(i);this.type=Q(a),this.chain=a.chain,this.ticker=a.ticker,this.symbol=a.symbol,this.address=a.address,this.isSynthetic=a.isSynthetic,this.isGasAsset=a.isGasAsset}get assetValue(){return`${this.getValue("string")} ${this.ticker}`}toString(t=!1){const i=this.isSynthetic?this.ticker:`${this.chain}.${this.ticker}`;return t?i:`${this.chain}.${this.symbol}`}eq({chain:t,symbol:i}){return this.chain===t&&this.symbol===i}static async fromString(t,i=0){return U(t,i)}static fromStringSync(t,i=0){const{decimal:a,identifier:s}=P(t);return s?new _({decimal:a,identifier:s,value:i}):void 0}static async fromIdentifier(t,i=0){return U(t,i)}static fromIdentifierSync(t,i=0){const{decimal:a,identifier:s}=P(t);return new _({decimal:a,identifier:s,value:i})}static fromChainOrSignature(t,i=0){const{decimal:a,identifier:s}=J(t);return new _({value:i,decimal:a,identifier:s})}static async fromTCQuote(t,i=0){const a=await q(j(t)),s=this.shiftDecimals({value:i,from:r.BaseDecimal.THOR,to:a});return new _({value:s,identifier:t,decimal:a})}static fromTCQuoteStatic(t,i=0){const a=P(t),s=this.shiftDecimals({value:i,from:r.BaseDecimal.THOR,to:a.decimal});return new _({...a,value:s})}static async loadStaticAssets(){return new Promise(async(t,i)=>{try{const{ThorchainList:a,NativeList:s,...c}=await import("@swapkit/tokens");x=[s,...Object.values(c)].reduce((l,{tokens:u})=>(u.forEach(({identifier:h,chain:p,...$})=>{const E="decimals"in $?$.decimals:r.BaseDecimal[p];l.set(h,{identifier:h,decimal:E})}),l),new Map),t({ok:!0})}catch(a){console.error(a),i({ok:!1,error:a,message:"Couldn't load static assets. Ensure you have installed @swapkit/tokens package"})}})}}const ke=n=>{const e=_.fromChainOrSignature(n);switch(n){case r.Chain.Bitcoin:case r.Chain.Litecoin:case r.Chain.BitcoinCash:return e.add(10001);case r.Chain.Dogecoin:return e.add(100000001);case r.Chain.Avalanche:case r.Chain.Ethereum:return e.add(10*10**9);case r.Chain.THORChain:case r.Chain.Maya:return e.add(0);default:return e.add(1)}},j=n=>{const e=n.slice(0,14).includes("/"),t=n.includes(".")?n:`${r.Chain.THORChain}.${n}`,[i,a]=t.split("."),[s,c]=a.split("-");return{address:c==null?void 0:c.toLowerCase(),chain:i,isGasAsset:z({chain:i,symbol:a}),isSynthetic:e,symbol:c?`${s}-${(c==null?void 0:c.toLowerCase())??""}`:a,ticker:e?a:s}},He={core_wallet_connection_not_found:10001,core_estimated_max_spendable_chain_not_supported:10002,core_extend_error:10003,core_inbound_data_not_found:10004,core_approve_asset_address_or_from_not_found:10005,core_chain_halted:10099,core_wallet_xdefi_not_installed:10101,core_wallet_evmwallet_not_installed:10102,core_wallet_walletconnect_not_installed:10103,core_wallet_keystore_not_installed:10104,core_wallet_ledger_not_installed:10105,core_wallet_trezor_not_installed:10106,core_wallet_keplr_not_installed:10107,core_wallet_okx_not_installed:10108,core_swap_invalid_params:10200,core_swap_route_not_complete:10201,core_swap_asset_not_recognized:10202,core_swap_contract_not_found:10203,core_swap_route_transaction_not_found:10204,core_swap_contract_not_supported:10205,core_swap_transaction_error:10206,core_swap_quote_mode_not_supported:10207,core_transaction_deposit_error:10301,core_transaction_create_liquidity_rune_error:10302,core_transaction_create_liquidity_asset_error:10303,core_transaction_create_liquidity_invalid_params:10304,core_transaction_add_liquidity_invalid_params:10305,core_transaction_add_liquidity_no_rune_address:10306,core_transaction_add_liquidity_rune_error:10307,core_transaction_add_liquidity_asset_error:10308,core_transaction_withdraw_error:10309,core_transaction_deposit_to_pool_error:10310,core_transaction_deposit_insufficient_funds_error:10311,core_transaction_deposit_gas_error:10312,core_transaction_deposit_server_error:10313,wallet_ledger_connection_error:20001,helpers_number_different_decimals:99101};class F extends Error{constructor(e,t){console.error(t),super(e,{cause:{code:He[e],message:e}}),Object.setPrototypeOf(this,F.prototype)}}class ie extends w{eq(e){return this.eqValue(e)}}exports.AssetValue=_;exports.BigIntArithmetics=w;exports.SwapKitError=F;exports.SwapKitNumber=ie;exports.assetFromString=Ie;exports.derivationPathToString=Ae;exports.filterAssets=ve;exports.formatBigIntToSafeValue=k;exports.gasFeeMultiplier=ye;exports.getAssetType=Q;exports.getAsymmetricAssetShare=Z;exports.getAsymmetricAssetWithdrawAmount=Ve;exports.getAsymmetricRuneShare=X;exports.getAsymmetricRuneWithdrawAmount=Me;exports.getCommonAssetInfo=J;exports.getDecimal=q;exports.getEstimatedPoolShare=Ee;exports.getLiquiditySlippage=Ne;exports.getMemoFor=De;exports.getMinAmountByChain=ke;exports.getRequest=Se;exports.getSymmetricPoolShare=ee;exports.getSymmetricWithdraw=Oe;exports.getTHORNameCost=Ce;exports.isGasAsset=z;exports.postRequest=K;exports.validateTHORName=fe;
|
|
1
|
+
"use strict";var ve=Object.create;var q=Object.defineProperty;var $e=Object.getOwnPropertyDescriptor;var He=Object.getOwnPropertyNames;var Fe=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var xe=(e,t,n)=>t in e?q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ge=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of He(t))!We.call(e,s)&&s!==n&&q(e,s,{get:()=>t[s],enumerable:!(r=$e(t,s))||r.enumerable});return e};var ke=(e,t,n)=>(n=e!=null?ve(Fe(e)):{},Ge(t||!e||!e.__esModule?q(n,"default",{value:e,enumerable:!0}):n,e));var A=(e,t,n)=>(xe(e,typeof t!="symbol"?t+"":t,n),n),je=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var g=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)};var d=(e,t,n)=>(je(e,t,"access private method"),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@swapkit/types");var u=(e=>(e.INVALID_INPUT_PARAMETERS="1000",e.UNKNOWN_PROVIDERS="1001",e.CANNOT_FIND_INBOUND_ADDRESS="1002",e.NO_INBOUND_ADDRESSES="1003",e.CHAIN_HALTED_OR_UNSUPPORTED="1004",e.MISSING_INPUT_PARAMETER="1005",e.INVALID_TYPE_GENERIC="1100",e.INVALID_NUMBER_STRING="1101",e.INVALID_NUMBER="1102",e.INVALID_BOOLEAN="1103",e.INVALID_OBJECT="1104",e.INVALID_ARRAY="1105",e.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER="2000",e.SELL_BUY_ASSETS_ARE_THE_SAME="2001",e.MISSING_SOURCE_ADDRESS_FOR_SYNTH="2002",e.AFF_ADDRESS_AND_BPS_OR_NEITHER="2003",e.AFF_ADDRESS_TOO_LONG="2004",e.AFF_BPS_INTEGER_MAX_500="2005",e.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN="2006",e.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN="2007",e.PREFERRED_PROVIDER_NOT_SUPPORTED="2008",e.DESTINATION_ADDRESS_SMART_CONTRACT="2009",e.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER="2010",e.SOURCE_ADDRESS_SMART_CONTRACT="2011",e.SWAP_AMOUNT_TOO_LOW="2012",e.INVALID_PROVIDER="2100",e.MISSING_CROSS_CHAIN_PROVIDER="2101",e.MISSING_AVAX_PROVIDER="2102",e.MISSING_BSC_PROVIDER="2103",e.MISSING_ETH_PROVIDER="2104",e.INVALID_PROVIDER_FOR_SWAP_OUT="2105",e.MISSING_ARB_PROVIDER="2106",e.INVALID_CHAIN="2200",e.INVALID_ASSET="2201",e.INVALID_ASSET_IDENTIFIER="2202",e.UNSUPPORTED_CHAIN="2204",e.UNSUPPORTED_ASSET="2203",e.UNSUPPORTED_ASSET_FOR_SWAPOUT="2205",e.INVALID_SOURCE_ADDRESS="2300",e.INVALID_DESTINATION_ADDRESS="2301",e.THORNODE_QUOTE_GENERIC_ERROR="3000",e.NOT_ENOUGH_SYNTH_BALANCE="3001",e.SYNTH_MINTING_CAP_REACHED="3002",e.INVALID_QUOTE_MODE="4000",e.NO_QUOTES="4001",e.SERVICE_UNAVAILABLE_GENERIC="5000",e.MISSING_GAS_DATA_GENERIC="5100",e.MISSING_TOKEN_INFO_GENERIC="5200",e.CANT_FIND_TOKEN_LIST="5201",e.NO_PRICE="5202",e.PRICE_IS_STALE="5203",e.ADDRESS_NOT_WHITELISTED="6000",e.ADDRESS_ALREADY_CLAIMED="6001",e.TEMPORARY_ERROR="9999",e))(u||{});u.INVALID_INPUT_PARAMETERS+"",u.UNKNOWN_PROVIDERS+"",u.CANNOT_FIND_INBOUND_ADDRESS+"",u.NO_INBOUND_ADDRESSES+"",u.CHAIN_HALTED_OR_UNSUPPORTED+"",u.MISSING_INPUT_PARAMETER+"",u.INVALID_TYPE_GENERIC+"",u.INVALID_NUMBER_STRING+"",u.INVALID_NUMBER+"",u.INVALID_BOOLEAN+"",u.INVALID_OBJECT+"",u.INVALID_ARRAY+"",u.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER+"",u.SELL_BUY_ASSETS_ARE_THE_SAME+"",u.MISSING_SOURCE_ADDRESS_FOR_SYNTH+"",u.AFF_ADDRESS_AND_BPS_OR_NEITHER+"",u.AFF_ADDRESS_TOO_LONG+"",u.AFF_BPS_INTEGER_MAX_500+"",u.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN+"",u.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN+"",u.PREFERRED_PROVIDER_NOT_SUPPORTED+"",u.SOURCE_ADDRESS_SMART_CONTRACT+"",u.SWAP_AMOUNT_TOO_LOW+"",u.DESTINATION_ADDRESS_SMART_CONTRACT+"",u.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER+"",u.INVALID_PROVIDER+"",u.MISSING_CROSS_CHAIN_PROVIDER+"",u.MISSING_AVAX_PROVIDER+"",u.MISSING_BSC_PROVIDER+"",u.MISSING_ETH_PROVIDER+"",u.MISSING_ARB_PROVIDER+"",u.INVALID_PROVIDER_FOR_SWAP_OUT+"",u.INVALID_CHAIN+"",u.INVALID_ASSET+"",u.UNSUPPORTED_CHAIN+"",u.UNSUPPORTED_ASSET+"",u.UNSUPPORTED_ASSET_FOR_SWAPOUT+"",u.THORNODE_QUOTE_GENERIC_ERROR+"",u.INVALID_SOURCE_ADDRESS+"",u.INVALID_DESTINATION_ADDRESS+"",u.NOT_ENOUGH_SYNTH_BALANCE+"",u.SYNTH_MINTING_CAP_REACHED+"",u.INVALID_QUOTE_MODE+"",u.NO_QUOTES+"",u.SERVICE_UNAVAILABLE_GENERIC+"",u.MISSING_GAS_DATA_GENERIC+"",u.MISSING_TOKEN_INFO_GENERIC+"",u.CANT_FIND_TOKEN_LIST+"",u.NO_PRICE+"",u.PRICE_IS_STALE+"",u.ADDRESS_NOT_WHITELISTED+"",u.ADDRESS_ALREADY_CLAIMED+"";var G=(e=>(e.Arbitrum="ARB",e.Avalanche="AVAX",e.Binance="BNB",e.BinanceSmartChain="BSC",e.Bitcoin="BTC",e.BitcoinCash="BCH",e.Cosmos="GAIA",e.Dash="DASH",e.Dogecoin="DOGE",e.Ethereum="ETH",e.Kujira="KUJI",e.Litecoin="LTC",e.Maya="MAYA",e.Optimism="OP",e.Polkadot="DOT",e.Chainflip="FLIP",e.Polygon="MATIC",e.THORChain="THOR",e))(G||{}),ee=(e=>(e.Arbitrum="42161",e.ArbitrumHex="0xa4b1",e.Avalanche="43114",e.AvalancheHex="0xa86a",e.Binance="Binance-Chain-Tigris",e.BinanceSmartChain="56",e.BinanceSmartChainHex="0x38",e.Bitcoin="bitcoin",e.BitcoinCash="bitcoincash",e.Chainflip="chainflip",e.Cosmos="cosmoshub-4",e.Dash="dash",e.Dogecoin="dogecoin",e.Kujira="kaiyo-1",e.Ethereum="1",e.EthereumHex="0x1",e.Litecoin="litecoin",e.Maya="mayachain-mainnet-v1",e.MayaStagenet="mayachain-stagenet-v1",e.Optimism="10",e.OptimismHex="0xa",e.Polkadot="polkadot",e.Polygon="137",e.PolygonHex="0x89",e.THORChain="thorchain-mainnet-v1",e.THORChainStagenet="thorchain-stagenet-v2",e))(ee||{}),Te=(e=>(e.Arbitrum="https://arb1.arbitrum.io/rpc",e.Avalanche="https://node-router.thorswap.net/avalanche-c",e.Binance="",e.BinanceSmartChain="https://bsc-dataseed.binance.org",e.Bitcoin="https://node-router.thorswap.net/bitcoin",e.BitcoinCash="https://node-router.thorswap.net/bitcoin-cash",e.Chainflip="wss://mainnet-archive.chainflip.io",e.Cosmos="https://node-router.thorswap.net/cosmos/rpc",e.Dash="https://node-router.thorswap.net/dash",e.Dogecoin="https://node-router.thorswap.net/dogecoin",e.Ethereum="https://node-router.thorswap.net/ethereum",e.Kujira="https://rpc-kujira.synergynodes.com/",e.Litecoin="https://node-router.thorswap.net/litecoin",e.Maya="https://tendermint.mayachain.info",e.MayaStagenet="https://stagenet.tendermint.mayachain.info",e.Optimism="https://mainnet.optimism.io",e.Polkadot="wss://rpc.polkadot.io",e.Polygon="https://polygon-rpc.com",e.THORChain="https://rpc.thorswap.net",e.THORChainStagenet="https://stagenet-rpc.ninerealms.com",e))(Te||{}),C=(e=>(e.Cosmos="https://node-router.thorswap.net/cosmos/rest",e.Kujira="https://lcd-kujira.synergynodes.com/",e.MayanodeMainnet="https://mayanode.mayachain.info",e.MayanodeStagenet="https://stagenet.mayanode.mayachain.info",e.ThornodeMainnet="https://thornode.thorswap.net",e.ThornodeStagenet="https://stagenet-thornode.ninerealms.com",e.ThorswapApi="https://api.thorswap.net",e.ThorswapStatic="https://static.thorswap.net",e))(C||{});const k=Object.values(G),qe=Object.keys(G),te=k.reduce((e,t)=>{const n=qe.find(r=>G[r]===t);return n&&(e[t]=n),e},{});k.reduce((e,t)=>(e[t]=ee[te[t]],e),{});k.reduce((e,t)=>(e[t]=Te[te[t]],e),{});k.reduce((e,t)=>{const n=`${te[t]}Hex`;return e[t]=ee[n],e},{});class le extends Error{constructor(t,n,r){const s=t.status||t.status===0?t.status:"",i=t.statusText||"",o=`${s} ${i}`.trim(),l=o?`status code ${o}`:"an unknown error";super(`Request failed with ${l}`),Object.defineProperty(this,"response",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name="HTTPError",this.response=t,this.request=n,this.options=r}}class Ae extends Error{constructor(t){super("Request timed out"),Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name="TimeoutError",this.request=t}}const H=e=>e!==null&&typeof e=="object",v=(...e)=>{for(const t of e)if((!H(t)||Array.isArray(t))&&t!==void 0)throw new TypeError("The `options` argument must be an object");return ne({},...e)},pe=(e={},t={})=>{const n=new globalThis.Headers(e),r=t instanceof globalThis.Headers,s=new globalThis.Headers(t);for(const[i,o]of s.entries())r&&o==="undefined"||o===void 0?n.delete(i):n.set(i,o);return n},ne=(...e)=>{let t={},n={};for(const r of e)if(Array.isArray(r))Array.isArray(t)||(t=[]),t=[...t,...r];else if(H(r)){for(let[s,i]of Object.entries(r))H(i)&&s in t&&(i=ne(t[s],i)),t={...t,[s]:i};H(r.headers)&&(n=pe(n,r.headers),t.headers=n)}return t},Xe=(()=>{let e=!1,t=!1;const n=typeof globalThis.ReadableStream=="function",r=typeof globalThis.Request=="function";return n&&r&&(t=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type")),e&&!t})(),Ye=typeof globalThis.AbortController=="function",Ke=typeof globalThis.ReadableStream=="function",Je=typeof globalThis.FormData=="function",me=["get","post","put","patch","head","delete"],Qe={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},X=2147483647,Se=Symbol("stop"),ze={json:!0,parseJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,fetch:!0},Ze={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,dispatcher:!0,duplex:!0},et=e=>me.includes(e)?e.toUpperCase():e,tt=["get","put","head","delete","options","trace"],nt=[408,413,429,500,502,503,504],Ee=[413,429,503],ue={limit:2,methods:tt,statusCodes:nt,afterStatusCodes:Ee,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:e=>.3*2**(e-1)*1e3},rt=(e={})=>{if(typeof e=="number")return{...ue,limit:e};if(e.methods&&!Array.isArray(e.methods))throw new Error("retry.methods must be an array");if(e.statusCodes&&!Array.isArray(e.statusCodes))throw new Error("retry.statusCodes must be an array");return{...ue,...e,afterStatusCodes:Ee}};async function st(e,t,n,r){return new Promise((s,i)=>{const o=setTimeout(()=>{n&&n.abort(),i(new Ae(e))},r.timeout);r.fetch(e,t).then(s).catch(i).then(()=>{clearTimeout(o)})})}async function it(e,{signal:t}){return new Promise((n,r)=>{t&&(t.throwIfAborted(),t.addEventListener("abort",s,{once:!0}));function s(){clearTimeout(i),r(t.reason)}const i=setTimeout(()=>{t==null||t.removeEventListener("abort",s),n()},e)})}const at=(e,t)=>{const n={};for(const r in t)!(r in Ze)&&!(r in ze)&&!(r in e)&&(n[r]=t[r]);return n};class W{static create(t,n){const r=new W(t,n),s=async()=>{if(typeof r._options.timeout=="number"&&r._options.timeout>X)throw new RangeError(`The \`timeout\` option cannot be greater than ${X}`);await Promise.resolve();let o=await r._fetch();for(const l of r._options.hooks.afterResponse){const c=await l(r.request,r._options,r._decorateResponse(o.clone()));c instanceof globalThis.Response&&(o=c)}if(r._decorateResponse(o),!o.ok&&r._options.throwHttpErrors){let l=new le(o,r.request,r._options);for(const c of r._options.hooks.beforeError)l=await c(l);throw l}if(r._options.onDownloadProgress){if(typeof r._options.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Ke)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return r._stream(o.clone(),r._options.onDownloadProgress)}return o},i=r._options.retry.methods.includes(r.request.method.toLowerCase())?r._retry(s):s();for(const[o,l]of Object.entries(Qe))i[o]=async()=>{r.request.headers.set("accept",r.request.headers.get("accept")||l);const c=(await i).clone();if(o==="json"){if(c.status===204||(await c.clone().arrayBuffer()).byteLength===0)return"";if(n.parseJson)return n.parseJson(await c.text())}return c[o]()};return i}constructor(t,n={}){if(Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"abortController",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_input",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._input=t,this._options={credentials:this._input.credentials||"same-origin",...n,headers:pe(this._input.headers,n.headers),hooks:ne({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},n.hooks),method:et(n.method??this._input.method),prefixUrl:String(n.prefixUrl||""),retry:rt(n.retry),throwHttpErrors:n.throwHttpErrors!==!1,timeout:n.timeout??1e4,fetch:n.fetch??globalThis.fetch.bind(globalThis)},typeof this._input!="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this._options.prefixUrl&&typeof this._input=="string"){if(this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this._options.prefixUrl.endsWith("/")||(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input}if(Ye){if(this.abortController=new globalThis.AbortController,this._options.signal){const r=this._options.signal;this._options.signal.addEventListener("abort",()=>{this.abortController.abort(r.reason)})}this._options.signal=this.abortController.signal}if(Xe&&(this._options.duplex="half"),this.request=new globalThis.Request(this._input,this._options),this._options.searchParams){const r="?"+(typeof this._options.searchParams=="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString()),s=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,r);(Je&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)&&!(this._options.headers&&this._options.headers["content-type"])&&this.request.headers.delete("content-type"),this.request=new globalThis.Request(new globalThis.Request(s,{...this.request}),this._options)}this._options.json!==void 0&&(this._options.body=JSON.stringify(this._options.json),this.request.headers.set("content-type",this._options.headers.get("content-type")??"application/json"),this.request=new globalThis.Request(this.request,{body:this._options.body}))}_calculateRetryDelay(t){if(this._retryCount++,this._retryCount<=this._options.retry.limit&&!(t instanceof Ae)){if(t instanceof le){if(!this._options.retry.statusCodes.includes(t.response.status))return 0;const r=t.response.headers.get("Retry-After");if(r&&this._options.retry.afterStatusCodes.includes(t.response.status)){let s=Number(r);return Number.isNaN(s)?s=Date.parse(r)-Date.now():s*=1e3,this._options.retry.maxRetryAfter!==void 0&&s>this._options.retry.maxRetryAfter?0:s}if(t.response.status===413)return 0}const n=this._options.retry.delay(this._retryCount);return Math.min(this._options.retry.backoffLimit,n)}return 0}_decorateResponse(t){return this._options.parseJson&&(t.json=async()=>this._options.parseJson(await t.text())),t}async _retry(t){try{return await t()}catch(n){const r=Math.min(this._calculateRetryDelay(n),X);if(r!==0&&this._retryCount>0){await it(r,{signal:this._options.signal});for(const s of this._options.hooks.beforeRetry)if(await s({request:this.request,options:this._options,error:n,retryCount:this._retryCount})===Se)return;return this._retry(t)}throw n}}async _fetch(){for(const n of this._options.hooks.beforeRequest){const r=await n(this.request,this._options);if(r instanceof Request){this.request=r;break}if(r instanceof Response)return r}const t=at(this.request,this._options);return this._options.timeout===!1?this._options.fetch(this.request.clone(),t):st(this.request.clone(),t,this.abortController,this._options)}_stream(t,n){const r=Number(t.headers.get("content-length"))||0;let s=0;return t.status===204?(n&&n({percent:1,totalBytes:r,transferredBytes:s},new Uint8Array),new globalThis.Response(null,{status:t.status,statusText:t.statusText,headers:t.headers})):new globalThis.Response(new globalThis.ReadableStream({async start(i){const o=t.body.getReader();n&&n({percent:0,transferredBytes:0,totalBytes:r},new Uint8Array);async function l(){const{done:c,value:_}=await o.read();if(c){i.close();return}if(n){s+=_.byteLength;const h=r===0?0:s/r;n({percent:h,transferredBytes:s,totalBytes:r},_)}i.enqueue(_),await l()}await l()}}),{status:t.status,statusText:t.statusText,headers:t.headers})}}/*! MIT License © Sindre Sorhus */const J=e=>{const t=(n,r)=>W.create(n,v(e,r));for(const n of me)t[n]=(r,s)=>W.create(r,v(e,s,{method:n}));return t.create=n=>J(v(n)),t.extend=n=>J(v(e,n)),t.stop=Se,t},Ce=J();let F;const m={CachedPrices:`${C.ThorswapApi}/tokenlist/cached-price`,GasRates:`${C.ThorswapApi}/resource-worker/gasPrice/getAll`,Quote:`${C.ThorswapApi}/aggregator/tokens/quote`,Txn:`${C.ThorswapApi}/apiusage/v2/txn`,TokenlistProviders:`${C.ThorswapApi}/tokenlist/providers`,TokenList:`${C.ThorswapStatic}/token-list`,Thorname:`${C.ThorswapApi}/thorname`},re=typeof window<"u"?{}:{referrer:"https://sk.thorswap.net",referer:"https://sk.thorswap.net"},_e=()=>F||(F=Ce.create({headers:re}),F),ot=({apiKey:e,...t})=>{F=Ce.create({...t,headers:{...re,...t.headers,"x-api-key":e}})},p={get:(e,t)=>_e().get(e,t).json(),post:(e,t)=>_e().post(e,t).json()},ct=({tokens:e,...t})=>{const n=new URLSearchParams;return e.filter((r,s,i)=>i.findIndex(o=>o===r)===s).forEach(r=>n.append("tokens",JSON.stringify(r))),t.metadata&&n.append("metadata","true"),t.lookup&&n.append("lookup","true"),t.sparkline&&n.append("sparkline","true"),p.post(m.CachedPrices,{body:n.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded"}})},lt={getCachedPrices:ct,getQuote:e=>p.get(m.Quote,{searchParams:e}),getGasRates:()=>p.get(m.GasRates),getTxnDetails:e=>p.get(m.Txn,{searchParams:e}),getTokenlistProviders:()=>p.get(m.TokenlistProviders),getTokenList:e=>p.get(`${m.TokenList}/${e}.json`),getThornameAddresses:e=>p.get(`${m.Thorname}/${e}`),getThornameRegisteredChains:e=>p.get(`${m.Thorname}/chains/${e}`),getThornameRlookup:(e,t)=>p.get(`${m.Thorname}/rlookup`,{searchParams:{address:e,chain:t}})};var Re=(e=>(e.SWAP_TC_TO_TC="SWAP:TC-TC",e.SWAP_ETH_TO_TC="SWAP:ERC20-TC",e.SWAP_TC_TO_ETH="SWAP:TC-ERC20",e.SWAP_ETH_TO_ETH="SWAP:ERC20-ERC20",e.SWAP_AVAX_TO_TC="SWAP:AVAX-TC",e.SWAP_TC_TO_AVAX="SWAP:TC-AVAX",e.SWAP_AVAX_TO_AVAX="SWAP:AVAX-AVAX",e.SWAP_ETH_TO_AVAX="SWAP:ETH-AVAX",e.SWAP_AVAX_TO_ETH="SWAP:AVAX-ETH",e.SWAP_TC_TO_GAIA="SWAP:TC-GAIA",e.SWAP_GAIA_TO_TC="SWAP:GAIA-TC",e.SWAP_TC_TO_BNB="SWAP:TC-BNB",e.SWAP_BNB_TO_TC="SWAP:BNB-TC",e.SWAP_TC_TO_BTC="SWAP:TC-BTC",e.SWAP_BTC_TO_TC="SWAP:BTC-TC",e.SWAP_TC_TO_BCH="SWAP:TC-BCH",e.SWAP_BCH_TO_TC="SWAP:BCH-TC",e.SWAP_TC_TO_LTC="SWAP:TC-LTC",e.SWAP_LTC_TO_TC="SWAP:LTC-TC",e.SWAP_TC_TO_DOGE="SWAP:TC-DOGE",e.SWAP_DOGE_TO_TC="SWAP:DOGE-TC",e.TC_STATUS="TC:STATUS",e.TC_TRANSFER="TC:TRANSFER",e.TC_DEPOSIT="TC:DEPOSIT",e.TC_SEND="TC:SEND",e.TC_SWITCH="TC:SWITCH",e.TC_LP_ADD="TC:ADDLIQUIDITY",e.TC_LP_WITHDRAW="TC:WITHDRAW",e.TC_TNS_CREATE="TC:TNS-CREATE",e.TC_TNS_EXTEND="TC:TNS-EXTEND",e.TC_TNS_UPDATE="TC:TNS-UPDATE",e.TC_SAVINGS_ADD="TC:ADDSAVINGS",e.TC_SAVINGS_WITHDRAW="TC:WITHDRAWSAVINGS",e.TC_LENDING_OPEN="TC:LENDINGOPEN",e.TC_LENDING_CLOSE="TC:LENDINGCLOSE",e.ETH_APPROVAL="ETH:APPROVAL",e.ETH_STATUS="ETH:STATUS",e.ETH_TRANSFER_TO_TC="ETH:TRANSFER:IN",e.ETH_TRANSFER_FROM_TC="ETH:TRANSFER:OUT",e.AVAX_APPROVAL="AVAX:APPROVAL",e.AVAX_STATUS="AVAX:STATUS",e.AVAX_TRANSFER_TO_TC="AVAX:TRANSFER:IN",e.AVAX_TRANSFER_FROM_TC="AVAX:TRANSFER:OUT",e.BSC_APPROVAL="BSC:APPROVAL",e.BSC_STATUS="BSC:STATUS",e.BSC_TRANSFER_TO_TC="BSC:TRANSFER:IN",e.BSC_TRANSFER_FROM_TC="BSC:TRANSFER:OUT",e.APPROVAL="APPROVAL",e.STATUS="STATUS",e.TRANSFER_TO_TC="TRANSFER:IN",e.TRANSFER_FROM_TC="TRANSFER:OUT",e.UNSUPPORTED="UNSUPPORTED",e.TC_LENDING="TC:LENDING",e))(Re||{}),Ie=(e=>(e.PENDING="pending",e.SUCCESS="success",e.CANCELLED="cancelled",e.REFUNDED="refunded",e.REPLACED="replaced",e.ERROR="error",e.UNKNOWN="unknown",e.NOT_STARTED="not_started",e.NOT_FOUND="not_found",e.RETRIES_EXCEEDED="retries_exceeded",e.STREAMING="streaming",e))(Ie||{}),fe=(e=>(e[e.NOT_STARTED=0]="NOT_STARTED",e[e.SUCCESS=1]="SUCCESS",e[e.REFUNDED=2]="REFUNDED",e))(fe||{});const ut="0x313ce567",ge=async({chain:e,to:t})=>{try{const{result:n}=await p.post(a.ChainToRPC[e],{headers:{accept:"*/*","content-type":"application/json","cache-control":"no-cache"},body:JSON.stringify({id:44,jsonrpc:"2.0",method:"eth_call",params:[{to:t.toLowerCase(),data:ut},"latest"]})});return parseInt(BigInt(n).toString())}catch(n){return console.error(n),a.BaseDecimal[e]}},_t=async e=>{if(e===a.Chain.Ethereum)return a.BaseDecimal.ETH;const[,t]=e.split("-");return t!=null&&t.startsWith("0x")?ge({chain:a.Chain.Ethereum,to:t}):a.BaseDecimal.ETH},ht=async e=>{const[,t]=e.split("-");return t!=null&&t.startsWith("0x")?ge({chain:a.Chain.Avalanche,to:t.toLowerCase()}):a.BaseDecimal.AVAX},dt=async e=>(e===a.Chain.BinanceSmartChain,a.BaseDecimal.BSC),Ne=async({chain:e,symbol:t})=>{switch(e){case a.Chain.Ethereum:return _t(t);case a.Chain.Avalanche:return ht(t);case a.Chain.BinanceSmartChain:return dt(t);default:return a.BaseDecimal[e]}},Tt={[a.FeeOption.Average]:1.2,[a.FeeOption.Fast]:1.5,[a.FeeOption.Fastest]:2},se=({chain:e,symbol:t})=>{switch(e){case a.Chain.Arbitrum:case a.Chain.Optimism:return t==="ETH";case a.Chain.Maya:return t==="CACAO";case a.Chain.Kujira:return t==="KUJI";case a.Chain.Cosmos:return t==="ATOM";case a.Chain.Polygon:return t==="MATIC";case a.Chain.BinanceSmartChain:return t==="BNB";case a.Chain.THORChain:return t==="RUNE";default:return t===e}},Oe=e=>{switch(e){case`${a.Chain.Ethereum}.THOR`:return{identifier:"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044",decimal:18};case`${a.Chain.Ethereum}.vTHOR`:return{identifier:"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d",decimal:18};case a.Chain.Cosmos:return{identifier:"GAIA.ATOM",decimal:a.BaseDecimal[e]};case a.Chain.THORChain:return{identifier:"THOR.RUNE",decimal:a.BaseDecimal[e]};case a.Chain.BinanceSmartChain:return{identifier:"BSC.BNB",decimal:a.BaseDecimal[e]};case a.Chain.Maya:return{identifier:"MAYA.CACAO",decimal:a.BaseDecimal.MAYA};case`${a.Chain.Maya}.MAYA`:return{identifier:"MAYA.MAYA",decimal:4};case`${a.Chain.Kujira}.USK`:return{identifier:`${a.Chain.Kujira}.USK`,decimal:6};default:return{identifier:`${e}.${e}`,decimal:a.BaseDecimal[e]}}},De=({chain:e,symbol:t})=>{if(t.includes("/"))return"Synth";switch(e){case a.Chain.Cosmos:return t==="ATOM"?"Native":a.Chain.Cosmos;case a.Chain.Kujira:return t===a.Chain.Kujira?"Native":a.Chain.Kujira;case a.Chain.Binance:return t===a.Chain.Binance?"Native":"BEP2";case a.Chain.BinanceSmartChain:return t===a.Chain.Binance?"Native":"BEP20";case a.Chain.Ethereum:return t===a.Chain.Ethereum?"Native":"ERC20";case a.Chain.Avalanche:return t===a.Chain.Avalanche?"Native":a.Chain.Avalanche;case a.Chain.Polygon:return t===a.Chain.Polygon?"Native":"POLYGON";case a.Chain.Arbitrum:return[a.Chain.Ethereum,a.Chain.Arbitrum].includes(t)?"Native":"ARBITRUM";case a.Chain.Optimism:return[a.Chain.Ethereum,a.Chain.Optimism].includes(t)?"Native":"OPTIMISM";default:return"Native"}},At=e=>{var o;const[t,...n]=e.split("."),r=e.includes("/"),s=n.join("."),i=(o=s==null?void 0:s.split("-"))==null?void 0:o[0];return{chain:t,symbol:s,ticker:i,synth:r}},pt=new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,"gmi"),mt=e=>{const[t,n]=e.split(".");if(!a.EVMChainList.includes(t))return!0;const[,r]=n.split("-");return se({chain:t,symbol:n})||!!r},St=e=>e.filter(({chain:t,value:n,symbol:r})=>{const s=`${t}.${r}`;return!pt.test(s)&&mt(s)&&n!=="0"});function ye({liquidityUnits:e,poolUnits:t,runeDepth:n}){const r=T(e),s=T(t),i=T(n),o=r.mul(i),l=s.mul(s).mul(2),c=s.mul(r).mul(2),_=r.mul(r),h=s.mul(s).mul(s);return o.mul(l.sub(c).add(_)).div(h)}function Pe({liquidityUnits:e,poolUnits:t,assetDepth:n}){const r=T(e),s=T(t),i=T(n),o=r.mul(i),l=s.mul(s).mul(2),c=s.mul(r).mul(2),_=r.mul(r),h=o.mul(l.sub(c).add(_)),P=s.mul(s).mul(s);return h.div(P)}function Et({percent:e,runeDepth:t,liquidityUnits:n,poolUnits:r}){return ye({runeDepth:t,liquidityUnits:n,poolUnits:r}).mul(e)}function Ct({percent:e,assetDepth:t,liquidityUnits:n,poolUnits:r}){return Pe({assetDepth:t,liquidityUnits:n,poolUnits:r}).mul(e)}function T(e){return S.fromBigInt(BigInt(e),a.BaseDecimal.THOR)}function be({liquidityUnits:e,poolUnits:t,runeDepth:n,assetDepth:r}){return{assetAmount:T(r).mul(e).div(t),runeAmount:T(n).mul(e).div(t)}}function Rt({liquidityUnits:e,poolUnits:t,runeDepth:n,assetDepth:r,percent:s}){return Object.fromEntries(Object.entries(be({liquidityUnits:e,poolUnits:t,runeDepth:n,assetDepth:r})).map(([i,o])=>[i,o.mul(s)]))}function It({runeDepth:e,poolUnits:t,assetDepth:n,liquidityUnits:r,runeAmount:s,assetAmount:i}){const o=new S({value:e,decimal:8}),l=new S({value:n,decimal:8}),c=new S({value:t,decimal:8}),_=new S({value:s,decimal:8}),h=new S({value:i,decimal:8}),P=_.mul(l),oe=h.mul(o),Be=_.mul(h),Ve=o.mul(l),Ue=c.mul(P.add(oe.add(Be.mul(2)))),Me=P.add(oe.add(Ve.mul(2))),ce=Ue.div(Me),j=T(r).add(ce);if(ce.getBaseValue("number")===0)return j.div(c).getBaseValue("number");const Le=c.add(j);return j.div(Le).getBaseValue("number")}function ft({runeAmount:e,assetAmount:t,runeDepth:n,assetDepth:r}){if(e==="0"||t==="0"||n==="0"||r==="0")return 0;const s=T(n),i=T(r),o=T(t),l=T(e),c=o.mul(s).sub(i.mul(l)),_=i.mul(l).add(s.mul(i));return Math.abs(c.div(_).getBaseValue("number"))}const gt=(e,t)=>{switch(e){case a.MemoType.LEAVE:case a.MemoType.BOND:{const{address:n}=t;return`${e}:${n}`}case a.MemoType.UNBOND:{const{address:n,unbondAmount:r}=t;return`${e}:${n}:${r}`}case a.MemoType.THORNAME_REGISTER:{const{name:n,chain:r,address:s,owner:i}=t;return`${e}:${n}:${r}:${s}${i?`:${i}`:""}`}case a.MemoType.DEPOSIT:{const{chain:n,symbol:r,address:s,singleSide:i}=t;return i?`${e}:${n}/${r}`:`${e}:${((l,c)=>{switch(l){case a.Chain.Litecoin:return"l";case a.Chain.Dogecoin:return"d";case a.Chain.BitcoinCash:return"c";default:return`${l}.${c}`}})(n,r)}:${s||""}`}case a.MemoType.WITHDRAW:{const{chain:n,ticker:r,symbol:s,basisPoints:i,targetAssetString:o,singleSide:l}=t,c=n==="ETH"&&r!=="ETH"?`${r}-${s.slice(-3)}`:s,_=!l&&o?`:${o}`:"";return`${e}:${n}${l?"/":"."}${c}:${i}${_}`}case a.MemoType.OPEN_LOAN:case a.MemoType.CLOSE_LOAN:{const{asset:n,address:r}=t;return`${e}:${n}:${r}`}default:return""}};function Nt(e){if(e<0)throw new Error("Invalid number of year");return 10+e}function Ot(e){if(e.length>30)return!1;const t=/^[a-zA-Z0-9+_-]+$/g;return!!e.match(t)}function Dt([e,t,n,r,s]){return`${e}'/${t}'/${n}'/${r}${typeof s!="number"?"":`/${s}`}`}const he=[...Object.values(a.Chain),"TERRA"];function yt(e=""){const t=e.toUpperCase(),[n]=t.split(".");if(he.includes(n))return!0;const[r]=t.split("/");if(he.includes(r))return!0;throw new Error(`Invalid identifier: ${e}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`)}const V=8,I=e=>10n**BigInt(e),b=e=>Math.log10(parseFloat(e.toString()));function U({value:e,bigIntDecimal:t=V,decimal:n=V}){if(n===0)return e.toString();const r=e<0n;let s=e.toString().substring(r?1:0);const i=n-(s.length-1);i>0&&(s="0".repeat(i)+s);const o=s.length-n;let l=s.slice(-n);return parseInt(l[t])>=5?l=`${l.substring(0,t-1)}${(parseInt(l[t-1])+1).toString()}`:l=l.substring(0,t),`${r?"-":""}${s.slice(0,o)}.${l}`.replace(/\.?0*$/,"")}var f,w,R,N,x,we,M,Q,L,z;const ae=class ae{constructor(t){g(this,f);g(this,R);g(this,x);g(this,M);g(this,L);A(this,"decimalMultiplier",10n**8n);A(this,"bigIntValue",0n);A(this,"decimal");const n=Z(t),r=typeof t=="object";this.decimal=r?t.decimal:void 0,this.decimalMultiplier=r&&"decimalMultiplier"in t?t.decimalMultiplier:I(Math.max(de($(n)),this.decimal||0)),d(this,x,we).call(this,n)}static fromBigInt(t,n){return new ae({decimal:n,value:U({value:t,bigIntDecimal:n,decimal:n})})}static shiftDecimals({value:t,from:n,to:r}){return this.fromBigInt(t.getBaseValue("bigint")*I(r)/I(n),r)}set(t){return new this.constructor({decimal:this.decimal,value:t,identifier:this.toString()})}add(...t){return d(this,f,w).call(this,"add",...t)}sub(...t){return d(this,f,w).call(this,"sub",...t)}mul(...t){return d(this,f,w).call(this,"mul",...t)}div(...t){return d(this,f,w).call(this,"div",...t)}gt(t){return d(this,R,N).call(this,"gt",t)}gte(t){return d(this,R,N).call(this,"gte",t)}lt(t){return d(this,R,N).call(this,"lt",t)}lte(t){return d(this,R,N).call(this,"lte",t)}eqValue(t){return d(this,R,N).call(this,"eqValue",t)}getValue(t){const n=this.formatBigIntToSafeValue(this.bigIntValue,this.decimal||b(this.decimalMultiplier));switch(t){case"number":return Number(n);case"string":return n;case"bigint":return this.bigIntValue*10n**BigInt(this.decimal||8n)/this.decimalMultiplier}}getBaseValue(t){const n=this.decimalMultiplier/I(this.decimal||a.BaseDecimal.THOR),r=this.bigIntValue/n;switch(t){case"number":return Number(r);case"string":return r.toString();case"bigint":return r}}getBigIntValue(t,n){if(!n&&typeof t=="object")return t.bigIntValue;const r=Z(t),s=$(r);return s==="0"||s==="undefined"?0n:d(this,L,z).call(this,s,n)}toSignificant(t=6){const[n,r]=this.getValue("string").split("."),s=n||"",i=r||"";if((parseInt(s)?s.length+i.length:i.length)<=t)return this.getValue("string");if(s.length>=t)return s.slice(0,t).padEnd(s.length,"0");if(parseInt(s))return`${s}.${i.slice(0,t-s.length)}`.padEnd(t-s.length,"0");const l=parseInt(i),c=`${l}`.slice(0,t);return`0.${c.padStart(i.length-`${l}`.length+c.length,"0")}`}toFixed(t=6){const[n,r]=this.getValue("string").split("."),s=n||"",i=r||"";if(parseInt(s))return`${s}.${i.slice(0,t)}`.padEnd(t,"0");const o=parseInt(i),l=`${o}`.slice(0,t);return`0.${l.padStart(i.length-`${o}`.length+l.length,"0")}`}toAbbreviation(t=2){const n=this.getValue("number"),r=["","K","M","B","T","Q","Qi","S"],s=Math.floor(Math.log10(Math.abs(n))/3),i=r[s];if(!i)return this.getValue("string");const o=10**(s*3);return`${(n/o).toFixed(t)}${i}`}toCurrency(t="$",{currencyPosition:n="start",decimal:r=2,decimalSeparator:s=".",thousandSeparator:i=","}={}){const o=this.getValue("number"),[l,c=""]=o.toFixed(6).split("."),_=l.replace(/\B(?=(\d{3})+(?!\d))/g,i),h=!l&&!c?"0.00":l==="0"?`${parseFloat(`0.${c}`)}`.replace(".",s):`${_}${parseInt(c)?`${s}${c.slice(0,r)}`:""}`;return`${n==="start"?t:""}${h}${n==="end"?t:""}`}formatBigIntToSafeValue(t,n){const r=n||this.decimal||V,s=Math.max(r,b(this.decimalMultiplier)),i=t<0n,o=t.toString().substring(i?1:0),l=s-(o.length-1),c=l>0?"0".repeat(l)+o:o,_=c.length-s;let h=c.slice(-s);return parseInt(h[r])>=5?h=`${h.substring(0,r-1)}${(parseInt(h[r-1])+1).toString()}`:h=h.substring(0,r),`${i?"-":""}${c.slice(0,_)}.${h}`.replace(/\.?0*$/,"")}};f=new WeakSet,w=function(t,...n){const r=d(this,M,Q).call(this,this,...n),s=Math.max(r,b(this.decimalMultiplier)),i=I(s),o=n.reduce((c,_)=>{const h=this.getBigIntValue(_,s);switch(t){case"add":return c+h;case"sub":return c-h;case"mul":return c*h/i;case"div":{if(h===0n)throw new RangeError("Division by zero");return c*i/h}default:return c}},this.bigIntValue*i/this.decimalMultiplier),l=U({bigIntDecimal:s,decimal:s,value:o});return new this.constructor({decimalMultiplier:I(s),decimal:this.decimal,value:l,identifier:this.toString()})},R=new WeakSet,N=function(t,...n){const r=d(this,M,Q).call(this,this,...n),s=this.getBigIntValue(n[0],r),i=this.getBigIntValue(this,r);switch(t){case"gt":return i>s;case"gte":return i>=s;case"lt":return i<s;case"lte":return i<=s;case"eqValue":return i===s}},x=new WeakSet,we=function(t){const n=$(t)||"0";this.bigIntValue=d(this,L,z).call(this,n)},M=new WeakSet,Q=function(...t){const n=t.map(r=>typeof r=="object"?r.decimal||b(r.decimalMultiplier):de($(r))).filter(Boolean);return Math.max(...n,V)},L=new WeakSet,z=function(t,n){const r=n?I(n):this.decimalMultiplier,s=b(r),[i="",o=""]=t.split(".");return BigInt(`${i}${o.padEnd(s,"0")}`)};let y=ae;const Pt=Intl.NumberFormat("fullwide",{useGrouping:!1,maximumFractionDigits:20});function $(e){const n=`${typeof e=="number"?Pt.format(e):Z(e)}`.replaceAll(",",".").split(".");return n.length>1?`${n.slice(0,-1).join("")}.${n.at(-1)}`:n[0]}function de(e){var n;const t=((n=e.split(".")[1])==null?void 0:n.length)||0;return Math.max(t,V)}function Z(e){return typeof e=="object"?"getValue"in e?e.getValue("string"):e.value:e}class S extends y{eq(t){return this.eqValue(t)}static fromBigInt(t,n){return new S({decimal:n,value:U({value:t,bigIntDecimal:n,decimal:n})})}}const O=new Map;class E extends y{constructor({value:n,decimal:r,tax:s,chain:i,symbol:o,identifier:l}){super(typeof n=="object"?n:{decimal:r,value:n});A(this,"address");A(this,"chain");A(this,"isGasAsset",!1);A(this,"isSynthetic",!1);A(this,"symbol");A(this,"tax");A(this,"ticker");A(this,"type");const c=B(l||`${i}.${o}`);this.type=De(c),this.tax=s,this.chain=c.chain,this.ticker=c.ticker,this.symbol=c.symbol,this.address=c.address,this.isSynthetic=c.isSynthetic,this.isGasAsset=c.isGasAsset}toString(){return this.isSynthetic?this.symbol:`${this.chain}.${this.symbol}`}toUrl(){return this.isSynthetic?`${this.chain}.${this.symbol.replace("/",".")}`:this.toString()}eq({chain:n,symbol:r}){return this.chain===n&&this.symbol===r}chainId(){return a.ChainToChainId[this.chain]}static fromUrl(n,r=0){const[s,i,o]=n.split(".");if(!s||!i)throw new Error("Invalid asset url");const l=s===a.Chain.THORChain&&o?`${s}.${i}/${o}`:n;return Y(l,r)}static fromString(n,r=0){return Y(n,r)}static fromIdentifier(n,r=0){return Y(n,r)}static fromStringSync(n,r=0){const{chain:s,isSynthetic:i}=B(n),o=O.get(n.toUpperCase());if(i)return K(n,r);const{tax:l,decimal:c,identifier:_}=o||{decimal:a.BaseDecimal[s],identifier:n};return new E({tax:l,value:D(r,c),identifier:i?n:_,decimal:i?8:c})}static async fromStringWithBase(n,r=0,s=a.BaseDecimal.THOR){const i=y.shiftDecimals({value:S.fromBigInt(BigInt(r)),from:0,to:s}).getBaseValue("string");return(await E.fromString(n,r)).set(i)}static fromStringWithBaseSync(n,r=0,s=a.BaseDecimal.THOR){const{chain:i,isSynthetic:o}=B(n),l=O.get(n.toUpperCase());if(o)return K(n,r);const{tax:c,decimal:_,identifier:h}=l||{decimal:a.BaseDecimal[i],identifier:n};return new E({tax:c,value:D(BigInt(r),s),identifier:h,decimal:_})}static fromIdentifierSync(n,r=0){const{chain:s,isSynthetic:i}=B(n),o=O.get(n);if(i)return K(n,r);const{tax:l,decimal:c,identifier:_}=o||{decimal:a.BaseDecimal[s],identifier:n};return new E({tax:l,decimal:c,identifier:_,value:D(r,c)})}static fromChainOrSignature(n,r=0){const{decimal:s,identifier:i}=Oe(n);return new E({value:D(r,s),decimal:s,identifier:i})}static loadStaticAssets(){return new Promise(async(n,r)=>{try{const s=await import("@swapkit/tokens");Object.values(s).forEach(i=>{var o;(o=i==null?void 0:i.tokens)==null||o.forEach(({identifier:l,chain:c,..._})=>{O.set(l.toUpperCase(),{identifier:l,decimal:"decimals"in _?_.decimals:a.BaseDecimal[c]})})}),n({ok:!0})}catch(s){console.error(s),r({ok:!1,error:s,message:"Couldn't load static assets. Ensure you have installed @swapkit/tokens package"})}})}}function bt(e){const t=E.fromChainOrSignature(e);switch(e){case a.Chain.Bitcoin:case a.Chain.Litecoin:case a.Chain.BitcoinCash:return t.set(10001e-8);case a.Chain.Dogecoin:return t.set(1.00000001);case a.Chain.Avalanche:case a.Chain.Ethereum:return t.set(1e-8);case a.Chain.THORChain:case a.Chain.Maya:return t.set(0);case a.Chain.Cosmos:return t.set(1e-6);default:return t.set(1e-8)}}async function Y(e,t=0){yt(e);const n=O.get(e.toUpperCase()),r=(n==null?void 0:n.decimal)||await Ne(B(e));return n||O.set(e.toUpperCase(),{identifier:e,decimal:r}),new E({decimal:r,value:D(t,r),identifier:e})}function K(e,t=0){const[n,r]=e.split(".")[0].toUpperCase()===a.Chain.THORChain?e.split(".").slice(1).join().split("/"):e.split("/");if(!n||!r)throw new Error("Invalid asset identifier");return new E({decimal:8,value:D(t,8),identifier:`${a.Chain.THORChain}.${n}/${r}`})}function D(e,t){return typeof e=="bigint"?U({value:e,bigIntDecimal:t,decimal:t}):e}function B(e){const t=e.slice(0,14).includes("/"),[n,r]=e.split(".")[0].toUpperCase()===a.Chain.THORChain?e.split(".").slice(1).join().split("/"):e.split("/");if(t&&(!n||!r))throw new Error("Invalid asset identifier");const s=e.includes(".")&&!t?e:`${a.Chain.THORChain}.${r}`,[i,...o]=s.split("."),[l,c]=(t?r:o.join(".")).split("-"),_=t?r:o.join(".");return{address:c==null?void 0:c.toLowerCase(),chain:i,isGasAsset:se({chain:i,symbol:_}),isSynthetic:t,symbol:(t?`${n}/`:"")+(c?`${l}-${(c==null?void 0:c.toLowerCase())??""}`:_),ticker:l}}const wt={core_wallet_connection_not_found:10001,core_estimated_max_spendable_chain_not_supported:10002,core_extend_error:10003,core_inbound_data_not_found:10004,core_approve_asset_address_or_from_not_found:10005,core_chain_halted:10099,core_wallet_xdefi_not_installed:10101,core_wallet_evmwallet_not_installed:10102,core_wallet_walletconnect_not_installed:10103,core_wallet_keystore_not_installed:10104,core_wallet_ledger_not_installed:10105,core_wallet_trezor_not_installed:10106,core_wallet_keplr_not_installed:10107,core_wallet_okx_not_installed:10108,core_wallet_keepkey_not_installed:10109,core_swap_invalid_params:10200,core_swap_route_not_complete:10201,core_swap_asset_not_recognized:10202,core_swap_contract_not_found:10203,core_swap_route_transaction_not_found:10204,core_swap_contract_not_supported:10205,core_swap_transaction_error:10206,core_swap_quote_mode_not_supported:10207,core_transaction_deposit_error:10301,core_transaction_create_liquidity_rune_error:10302,core_transaction_create_liquidity_asset_error:10303,core_transaction_create_liquidity_invalid_params:10304,core_transaction_add_liquidity_invalid_params:10305,core_transaction_add_liquidity_no_rune_address:10306,core_transaction_add_liquidity_rune_error:10307,core_transaction_add_liquidity_asset_error:10308,core_transaction_withdraw_error:10309,core_transaction_deposit_to_pool_error:10310,core_transaction_deposit_insufficient_funds_error:10311,core_transaction_deposit_gas_error:10312,core_transaction_invalid_sender_address:10313,core_transaction_deposit_server_error:10314,core_transaction_user_rejected:10315,wallet_ledger_connection_error:20001,wallet_ledger_connection_claimed:20002,wallet_ledger_get_address_error:20003,wallet_ledger_device_not_found:20004,wallet_ledger_device_locked:20005,helpers_number_different_decimals:99101};class ie extends Error{constructor(t,n){n&&console.error(n,{stack:n==null?void 0:n.stack,message:n==null?void 0:n.message}),super(t,{cause:{code:wt[t],message:t}}),Object.setPrototypeOf(this,ie.prototype)}}exports.ApiEndpoints=m;exports.AssetValue=E;exports.BigIntArithmetics=y;exports.RequestClient=p;exports.StreamingSwapProgressStatus=fe;exports.SwapKitApi=lt;exports.SwapKitError=ie;exports.SwapKitNumber=S;exports.TransactionType=Re;exports.TxStatus=Ie;exports.assetFromString=At;exports.defaultRequestHeaders=re;exports.derivationPathToString=Dt;exports.filterAssets=St;exports.formatBigIntToSafeValue=U;exports.gasFeeMultiplier=Tt;exports.getAssetType=De;exports.getAsymmetricAssetShare=Pe;exports.getAsymmetricAssetWithdrawAmount=Ct;exports.getAsymmetricRuneShare=ye;exports.getAsymmetricRuneWithdrawAmount=Et;exports.getCommonAssetInfo=Oe;exports.getDecimal=Ne;exports.getEstimatedPoolShare=It;exports.getLiquiditySlippage=ft;exports.getMemoFor=gt;exports.getMinAmountByChain=bt;exports.getSymmetricPoolShare=be;exports.getSymmetricWithdraw=Rt;exports.getTHORNameCost=Nt;exports.isGasAsset=se;exports.setRequestClientConfig=ot;exports.validateTHORName=Ot;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../api/dist/index.es.js","../src/helpers/asset.ts","../src/helpers/liquidity.ts","../src/helpers/memo.ts","../src/helpers/others.ts","../src/helpers/validators.ts","../src/modules/bigIntArithmetics.ts","../src/modules/swapKitNumber.ts","../src/modules/assetValue.ts","../src/modules/swapKitError.ts"],"sourcesContent":["var o = /* @__PURE__ */ ((t) => (t.INVALID_INPUT_PARAMETERS = \"1000\", t.UNKNOWN_PROVIDERS = \"1001\", t.CANNOT_FIND_INBOUND_ADDRESS = \"1002\", t.NO_INBOUND_ADDRESSES = \"1003\", t.CHAIN_HALTED_OR_UNSUPPORTED = \"1004\", t.MISSING_INPUT_PARAMETER = \"1005\", t.INVALID_TYPE_GENERIC = \"1100\", t.INVALID_NUMBER_STRING = \"1101\", t.INVALID_NUMBER = \"1102\", t.INVALID_BOOLEAN = \"1103\", t.INVALID_OBJECT = \"1104\", t.INVALID_ARRAY = \"1105\", t.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER = \"2000\", t.SELL_BUY_ASSETS_ARE_THE_SAME = \"2001\", t.MISSING_SOURCE_ADDRESS_FOR_SYNTH = \"2002\", t.AFF_ADDRESS_AND_BPS_OR_NEITHER = \"2003\", t.AFF_ADDRESS_TOO_LONG = \"2004\", t.AFF_BPS_INTEGER_MAX_500 = \"2005\", t.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN = \"2006\", t.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN = \"2007\", t.PREFERRED_PROVIDER_NOT_SUPPORTED = \"2008\", t.DESTINATION_ADDRESS_SMART_CONTRACT = \"2009\", t.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER = \"2010\", t.SOURCE_ADDRESS_SMART_CONTRACT = \"2011\", t.SWAP_AMOUNT_TOO_LOW = \"2012\", t.INVALID_PROVIDER = \"2100\", t.MISSING_CROSS_CHAIN_PROVIDER = \"2101\", t.MISSING_AVAX_PROVIDER = \"2102\", t.MISSING_BSC_PROVIDER = \"2103\", t.MISSING_ETH_PROVIDER = \"2104\", t.INVALID_PROVIDER_FOR_SWAP_OUT = \"2105\", t.MISSING_ARB_PROVIDER = \"2106\", t.INVALID_CHAIN = \"2200\", t.INVALID_ASSET = \"2201\", t.INVALID_ASSET_IDENTIFIER = \"2202\", t.UNSUPPORTED_CHAIN = \"2204\", t.UNSUPPORTED_ASSET = \"2203\", t.UNSUPPORTED_ASSET_FOR_SWAPOUT = \"2205\", t.INVALID_SOURCE_ADDRESS = \"2300\", t.INVALID_DESTINATION_ADDRESS = \"2301\", t.THORNODE_QUOTE_GENERIC_ERROR = \"3000\", t.NOT_ENOUGH_SYNTH_BALANCE = \"3001\", t.SYNTH_MINTING_CAP_REACHED = \"3002\", t.INVALID_QUOTE_MODE = \"4000\", t.NO_QUOTES = \"4001\", t.SERVICE_UNAVAILABLE_GENERIC = \"5000\", t.MISSING_GAS_DATA_GENERIC = \"5100\", t.MISSING_TOKEN_INFO_GENERIC = \"5200\", t.CANT_FIND_TOKEN_LIST = \"5201\", t.NO_PRICE = \"5202\", t.PRICE_IS_STALE = \"5203\", t.ADDRESS_NOT_WHITELISTED = \"6000\", t.ADDRESS_ALREADY_CLAIMED = \"6001\", t.TEMPORARY_ERROR = \"9999\", t))(o || {});\no.INVALID_INPUT_PARAMETERS + \"\", o.UNKNOWN_PROVIDERS + \"\", o.CANNOT_FIND_INBOUND_ADDRESS + \"\", o.NO_INBOUND_ADDRESSES + \"\", o.CHAIN_HALTED_OR_UNSUPPORTED + \"\", o.MISSING_INPUT_PARAMETER + \"\", o.INVALID_TYPE_GENERIC + \"\", o.INVALID_NUMBER_STRING + \"\", o.INVALID_NUMBER + \"\", o.INVALID_BOOLEAN + \"\", o.INVALID_OBJECT + \"\", o.INVALID_ARRAY + \"\", o.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER + \"\", o.SELL_BUY_ASSETS_ARE_THE_SAME + \"\", o.MISSING_SOURCE_ADDRESS_FOR_SYNTH + \"\", o.AFF_ADDRESS_AND_BPS_OR_NEITHER + \"\", o.AFF_ADDRESS_TOO_LONG + \"\", o.AFF_BPS_INTEGER_MAX_500 + \"\", o.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN + \"\", o.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN + \"\", o.PREFERRED_PROVIDER_NOT_SUPPORTED + \"\", o.SOURCE_ADDRESS_SMART_CONTRACT + \"\", o.SWAP_AMOUNT_TOO_LOW + \"\", o.DESTINATION_ADDRESS_SMART_CONTRACT + \"\", o.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER + \"\", o.INVALID_PROVIDER + \"\", o.MISSING_CROSS_CHAIN_PROVIDER + \"\", o.MISSING_AVAX_PROVIDER + \"\", o.MISSING_BSC_PROVIDER + \"\", o.MISSING_ETH_PROVIDER + \"\", o.MISSING_ARB_PROVIDER + \"\", o.INVALID_PROVIDER_FOR_SWAP_OUT + \"\", o.INVALID_CHAIN + \"\", o.INVALID_ASSET + \"\", o.UNSUPPORTED_CHAIN + \"\", o.UNSUPPORTED_ASSET + \"\", o.UNSUPPORTED_ASSET_FOR_SWAPOUT + \"\", o.THORNODE_QUOTE_GENERIC_ERROR + \"\", o.INVALID_SOURCE_ADDRESS + \"\", o.INVALID_DESTINATION_ADDRESS + \"\", o.NOT_ENOUGH_SYNTH_BALANCE + \"\", o.SYNTH_MINTING_CAP_REACHED + \"\", o.INVALID_QUOTE_MODE + \"\", o.NO_QUOTES + \"\", o.SERVICE_UNAVAILABLE_GENERIC + \"\", o.MISSING_GAS_DATA_GENERIC + \"\", o.MISSING_TOKEN_INFO_GENERIC + \"\", o.CANT_FIND_TOKEN_LIST + \"\", o.NO_PRICE + \"\", o.PRICE_IS_STALE + \"\", o.ADDRESS_NOT_WHITELISTED + \"\", o.ADDRESS_ALREADY_CLAIMED + \"\";\nvar I = /* @__PURE__ */ ((t) => (t.Arbitrum = \"ARB\", t.Avalanche = \"AVAX\", t.Binance = \"BNB\", t.BinanceSmartChain = \"BSC\", t.Bitcoin = \"BTC\", t.BitcoinCash = \"BCH\", t.Cosmos = \"GAIA\", t.Dash = \"DASH\", t.Dogecoin = \"DOGE\", t.Ethereum = \"ETH\", t.Kujira = \"KUJI\", t.Litecoin = \"LTC\", t.Maya = \"MAYA\", t.Optimism = \"OP\", t.Polkadot = \"DOT\", t.Chainflip = \"FLIP\", t.Polygon = \"MATIC\", t.THORChain = \"THOR\", t))(I || {}), f = /* @__PURE__ */ ((t) => (t.Arbitrum = \"42161\", t.ArbitrumHex = \"0xa4b1\", t.Avalanche = \"43114\", t.AvalancheHex = \"0xa86a\", t.Binance = \"Binance-Chain-Tigris\", t.BinanceSmartChain = \"56\", t.BinanceSmartChainHex = \"0x38\", t.Bitcoin = \"bitcoin\", t.BitcoinCash = \"bitcoincash\", t.Chainflip = \"chainflip\", t.Cosmos = \"cosmoshub-4\", t.Dash = \"dash\", t.Dogecoin = \"dogecoin\", t.Kujira = \"kaiyo-1\", t.Ethereum = \"1\", t.EthereumHex = \"0x1\", t.Litecoin = \"litecoin\", t.Maya = \"mayachain-mainnet-v1\", t.MayaStagenet = \"mayachain-stagenet-v1\", t.Optimism = \"10\", t.OptimismHex = \"0xa\", t.Polkadot = \"polkadot\", t.Polygon = \"137\", t.PolygonHex = \"0x89\", t.THORChain = \"thorchain-mainnet-v1\", t.THORChainStagenet = \"thorchain-stagenet-v2\", t))(f || {}), g = /* @__PURE__ */ ((t) => (t.Arbitrum = \"https://arb1.arbitrum.io/rpc\", t.Avalanche = \"https://node-router.thorswap.net/avalanche-c\", t.Binance = \"\", t.BinanceSmartChain = \"https://bsc-dataseed.binance.org\", t.Bitcoin = \"https://node-router.thorswap.net/bitcoin\", t.BitcoinCash = \"https://node-router.thorswap.net/bitcoin-cash\", t.Chainflip = \"wss://mainnet-archive.chainflip.io\", t.Cosmos = \"https://node-router.thorswap.net/cosmos/rpc\", t.Dash = \"https://node-router.thorswap.net/dash\", t.Dogecoin = \"https://node-router.thorswap.net/dogecoin\", t.Ethereum = \"https://node-router.thorswap.net/ethereum\", t.Kujira = \"https://rpc-kujira.synergynodes.com/\", t.Litecoin = \"https://node-router.thorswap.net/litecoin\", t.Maya = \"https://tendermint.mayachain.info\", t.MayaStagenet = \"https://stagenet.tendermint.mayachain.info\", t.Optimism = \"https://mainnet.optimism.io\", t.Polkadot = \"wss://rpc.polkadot.io\", t.Polygon = \"https://polygon-rpc.com\", t.THORChain = \"https://rpc.thorswap.net\", t.THORChainStagenet = \"https://stagenet-rpc.ninerealms.com\", t))(g || {}), E = /* @__PURE__ */ ((t) => (t.Cosmos = \"https://node-router.thorswap.net/cosmos/rest\", t.Kujira = \"https://lcd-kujira.synergynodes.com/\", t.MayanodeMainnet = \"https://mayanode.mayachain.info\", t.MayanodeStagenet = \"https://stagenet.mayanode.mayachain.info\", t.ThornodeMainnet = \"https://thornode.thorswap.net\", t.ThornodeStagenet = \"https://stagenet-thornode.ninerealms.com\", t.ThorswapApi = \"https://api.thorswap.net\", t.ThorswapStatic = \"https://static.thorswap.net\", t))(E || {});\nconst N = Object.values(I), M = Object.keys(I), O = N.reduce(\n (t, e) => {\n const s = M.find((r) => I[r] === e);\n return s && (t[e] = s), t;\n },\n {}\n);\nN.reduce(\n (t, e) => (t[e] = f[O[e]], t),\n {}\n);\nN.reduce(\n (t, e) => (t[e] = g[O[e]], t),\n {}\n);\nN.reduce(\n (t, e) => {\n const s = `${O[e]}Hex`;\n return t[e] = f[s], t;\n },\n {}\n);\nclass m extends Error {\n constructor(e, s, r) {\n const i = e.status || e.status === 0 ? e.status : \"\", n = e.statusText || \"\", a = `${i} ${n}`.trim(), _ = a ? `status code ${a}` : \"an unknown error\";\n super(`Request failed with ${_}`), Object.defineProperty(this, \"response\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"options\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this.name = \"HTTPError\", this.response = e, this.request = s, this.options = r;\n }\n}\nclass U extends Error {\n constructor(e) {\n super(\"Request timed out\"), Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this.name = \"TimeoutError\", this.request = e;\n }\n}\nconst c = (t) => t !== null && typeof t == \"object\", T = (...t) => {\n for (const e of t)\n if ((!c(e) || Array.isArray(e)) && e !== void 0)\n throw new TypeError(\"The `options` argument must be an object\");\n return D({}, ...t);\n}, y = (t = {}, e = {}) => {\n const s = new globalThis.Headers(t), r = e instanceof globalThis.Headers, i = new globalThis.Headers(e);\n for (const [n, a] of i.entries())\n r && a === \"undefined\" || a === void 0 ? s.delete(n) : s.set(n, a);\n return s;\n}, D = (...t) => {\n let e = {}, s = {};\n for (const r of t)\n if (Array.isArray(r))\n Array.isArray(e) || (e = []), e = [...e, ...r];\n else if (c(r)) {\n for (let [i, n] of Object.entries(r))\n c(n) && i in e && (n = D(e[i], n)), e = { ...e, [i]: n };\n c(r.headers) && (s = y(s, r.headers), e.headers = s);\n }\n return e;\n}, v = (() => {\n let t = !1, e = !1;\n const s = typeof globalThis.ReadableStream == \"function\", r = typeof globalThis.Request == \"function\";\n return s && r && (e = new globalThis.Request(\"https://empty.invalid\", {\n body: new globalThis.ReadableStream(),\n method: \"POST\",\n // @ts-expect-error - Types are outdated.\n get duplex() {\n return t = !0, \"half\";\n }\n }).headers.has(\"Content-Type\")), t && !e;\n})(), G = typeof globalThis.AbortController == \"function\", W = typeof globalThis.ReadableStream == \"function\", k = typeof globalThis.FormData == \"function\", w = [\"get\", \"post\", \"put\", \"patch\", \"head\", \"delete\"], F = {\n json: \"application/json\",\n text: \"text/*\",\n formData: \"multipart/form-data\",\n arrayBuffer: \"*/*\",\n blob: \"*/*\"\n}, p = 2147483647, L = Symbol(\"stop\"), q = {\n json: !0,\n parseJson: !0,\n searchParams: !0,\n prefixUrl: !0,\n retry: !0,\n timeout: !0,\n hooks: !0,\n throwHttpErrors: !0,\n onDownloadProgress: !0,\n fetch: !0\n}, x = {\n method: !0,\n headers: !0,\n body: !0,\n mode: !0,\n credentials: !0,\n cache: !0,\n redirect: !0,\n referrer: !0,\n referrerPolicy: !0,\n integrity: !0,\n keepalive: !0,\n signal: !0,\n window: !0,\n dispatcher: !0,\n duplex: !0\n}, j = (t) => w.includes(t) ? t.toUpperCase() : t, X = [\"get\", \"put\", \"head\", \"delete\", \"options\", \"trace\"], Y = [408, 413, 429, 500, 502, 503, 504], V = [413, 429, 503], P = {\n limit: 2,\n methods: X,\n statusCodes: Y,\n afterStatusCodes: V,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n delay: (t) => 0.3 * 2 ** (t - 1) * 1e3\n}, $ = (t = {}) => {\n if (typeof t == \"number\")\n return {\n ...P,\n limit: t\n };\n if (t.methods && !Array.isArray(t.methods))\n throw new Error(\"retry.methods must be an array\");\n if (t.statusCodes && !Array.isArray(t.statusCodes))\n throw new Error(\"retry.statusCodes must be an array\");\n return {\n ...P,\n ...t,\n afterStatusCodes: V\n };\n};\nasync function K(t, e, s, r) {\n return new Promise((i, n) => {\n const a = setTimeout(() => {\n s && s.abort(), n(new U(t));\n }, r.timeout);\n r.fetch(t, e).then(i).catch(n).then(() => {\n clearTimeout(a);\n });\n });\n}\nasync function J(t, { signal: e }) {\n return new Promise((s, r) => {\n e && (e.throwIfAborted(), e.addEventListener(\"abort\", i, { once: !0 }));\n function i() {\n clearTimeout(n), r(e.reason);\n }\n const n = setTimeout(() => {\n e == null || e.removeEventListener(\"abort\", i), s();\n }, t);\n });\n}\nconst Q = (t, e) => {\n const s = {};\n for (const r in e)\n !(r in x) && !(r in q) && !(r in t) && (s[r] = e[r]);\n return s;\n};\nclass l {\n static create(e, s) {\n const r = new l(e, s), i = async () => {\n if (typeof r._options.timeout == \"number\" && r._options.timeout > p)\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${p}`);\n await Promise.resolve();\n let _ = await r._fetch();\n for (const u of r._options.hooks.afterResponse) {\n const A = await u(r.request, r._options, r._decorateResponse(_.clone()));\n A instanceof globalThis.Response && (_ = A);\n }\n if (r._decorateResponse(_), !_.ok && r._options.throwHttpErrors) {\n let u = new m(_, r.request, r._options);\n for (const A of r._options.hooks.beforeError)\n u = await A(u);\n throw u;\n }\n if (r._options.onDownloadProgress) {\n if (typeof r._options.onDownloadProgress != \"function\")\n throw new TypeError(\"The `onDownloadProgress` option must be a function\");\n if (!W)\n throw new Error(\"Streams are not supported in your environment. `ReadableStream` is missing.\");\n return r._stream(_.clone(), r._options.onDownloadProgress);\n }\n return _;\n }, a = r._options.retry.methods.includes(r.request.method.toLowerCase()) ? r._retry(i) : i();\n for (const [_, u] of Object.entries(F))\n a[_] = async () => {\n r.request.headers.set(\"accept\", r.request.headers.get(\"accept\") || u);\n const R = (await a).clone();\n if (_ === \"json\") {\n if (R.status === 204 || (await R.clone().arrayBuffer()).byteLength === 0)\n return \"\";\n if (s.parseJson)\n return s.parseJson(await R.text());\n }\n return R[_]();\n };\n return a;\n }\n // eslint-disable-next-line complexity\n constructor(e, s = {}) {\n if (Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"abortController\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"_retryCount\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: 0\n }), Object.defineProperty(this, \"_input\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"_options\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this._input = e, this._options = {\n // TODO: credentials can be removed when the spec change is implemented in all browsers. Context: https://www.chromestatus.com/feature/4539473312350208\n credentials: this._input.credentials || \"same-origin\",\n ...s,\n headers: y(this._input.headers, s.headers),\n hooks: D({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: []\n }, s.hooks),\n method: j(s.method ?? this._input.method),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(s.prefixUrl || \"\"),\n retry: $(s.retry),\n throwHttpErrors: s.throwHttpErrors !== !1,\n timeout: s.timeout ?? 1e4,\n fetch: s.fetch ?? globalThis.fetch.bind(globalThis)\n }, typeof this._input != \"string\" && !(this._input instanceof URL || this._input instanceof globalThis.Request))\n throw new TypeError(\"`input` must be a string, URL, or Request\");\n if (this._options.prefixUrl && typeof this._input == \"string\") {\n if (this._input.startsWith(\"/\"))\n throw new Error(\"`input` must not begin with a slash when using `prefixUrl`\");\n this._options.prefixUrl.endsWith(\"/\") || (this._options.prefixUrl += \"/\"), this._input = this._options.prefixUrl + this._input;\n }\n if (G) {\n if (this.abortController = new globalThis.AbortController(), this._options.signal) {\n const r = this._options.signal;\n this._options.signal.addEventListener(\"abort\", () => {\n this.abortController.abort(r.reason);\n });\n }\n this._options.signal = this.abortController.signal;\n }\n if (v && (this._options.duplex = \"half\"), this.request = new globalThis.Request(this._input, this._options), this._options.searchParams) {\n const i = \"?\" + (typeof this._options.searchParams == \"string\" ? this._options.searchParams.replace(/^\\?/, \"\") : new URLSearchParams(this._options.searchParams).toString()), n = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, i);\n (k && this._options.body instanceof globalThis.FormData || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers[\"content-type\"]) && this.request.headers.delete(\"content-type\"), this.request = new globalThis.Request(new globalThis.Request(n, { ...this.request }), this._options);\n }\n this._options.json !== void 0 && (this._options.body = JSON.stringify(this._options.json), this.request.headers.set(\"content-type\", this._options.headers.get(\"content-type\") ?? \"application/json\"), this.request = new globalThis.Request(this.request, { body: this._options.body }));\n }\n _calculateRetryDelay(e) {\n if (this._retryCount++, this._retryCount <= this._options.retry.limit && !(e instanceof U)) {\n if (e instanceof m) {\n if (!this._options.retry.statusCodes.includes(e.response.status))\n return 0;\n const r = e.response.headers.get(\"Retry-After\");\n if (r && this._options.retry.afterStatusCodes.includes(e.response.status)) {\n let i = Number(r);\n return Number.isNaN(i) ? i = Date.parse(r) - Date.now() : i *= 1e3, this._options.retry.maxRetryAfter !== void 0 && i > this._options.retry.maxRetryAfter ? 0 : i;\n }\n if (e.response.status === 413)\n return 0;\n }\n const s = this._options.retry.delay(this._retryCount);\n return Math.min(this._options.retry.backoffLimit, s);\n }\n return 0;\n }\n _decorateResponse(e) {\n return this._options.parseJson && (e.json = async () => this._options.parseJson(await e.text())), e;\n }\n async _retry(e) {\n try {\n return await e();\n } catch (s) {\n const r = Math.min(this._calculateRetryDelay(s), p);\n if (r !== 0 && this._retryCount > 0) {\n await J(r, { signal: this._options.signal });\n for (const i of this._options.hooks.beforeRetry)\n if (await i({\n request: this.request,\n options: this._options,\n error: s,\n retryCount: this._retryCount\n }) === L)\n return;\n return this._retry(e);\n }\n throw s;\n }\n }\n async _fetch() {\n for (const s of this._options.hooks.beforeRequest) {\n const r = await s(this.request, this._options);\n if (r instanceof Request) {\n this.request = r;\n break;\n }\n if (r instanceof Response)\n return r;\n }\n const e = Q(this.request, this._options);\n return this._options.timeout === !1 ? this._options.fetch(this.request.clone(), e) : K(this.request.clone(), e, this.abortController, this._options);\n }\n /* istanbul ignore next */\n _stream(e, s) {\n const r = Number(e.headers.get(\"content-length\")) || 0;\n let i = 0;\n return e.status === 204 ? (s && s({ percent: 1, totalBytes: r, transferredBytes: i }, new Uint8Array()), new globalThis.Response(null, {\n status: e.status,\n statusText: e.statusText,\n headers: e.headers\n })) : new globalThis.Response(new globalThis.ReadableStream({\n async start(n) {\n const a = e.body.getReader();\n s && s({ percent: 0, transferredBytes: 0, totalBytes: r }, new Uint8Array());\n async function _() {\n const { done: u, value: A } = await a.read();\n if (u) {\n n.close();\n return;\n }\n if (s) {\n i += A.byteLength;\n const R = r === 0 ? 0 : i / r;\n s({ percent: R, transferredBytes: i, totalBytes: r }, A);\n }\n n.enqueue(A), await _();\n }\n await _();\n }\n }), {\n status: e.status,\n statusText: e.statusText,\n headers: e.headers\n });\n }\n}\n/*! MIT License © Sindre Sorhus */\nconst C = (t) => {\n const e = (s, r) => l.create(s, T(t, r));\n for (const s of w)\n e[s] = (r, i) => l.create(r, T(t, i, { method: s }));\n return e.create = (s) => C(T(s)), e.extend = (s) => C(T(t, s)), e.stop = L, e;\n}, B = C();\nlet d;\nconst h = {\n CachedPrices: `${E.ThorswapApi}/tokenlist/cached-price`,\n GasRates: `${E.ThorswapApi}/resource-worker/gasPrice/getAll`,\n Quote: `${E.ThorswapApi}/aggregator/tokens/quote`,\n Txn: `${E.ThorswapApi}/apiusage/v2/txn`,\n TokenlistProviders: `${E.ThorswapApi}/tokenlist/providers`,\n TokenList: `${E.ThorswapStatic}/token-list`,\n Thorname: `${E.ThorswapApi}/thorname`\n}, H = typeof window < \"u\" ? {} : { referrer: \"https://sk.thorswap.net\", referer: \"https://sk.thorswap.net\" }, b = () => d || (d = B.create({ headers: H }), d), ot = ({ apiKey: t, ...e }) => {\n d = B.create({\n ...e,\n headers: { ...H, ...e.headers, \"x-api-key\": t }\n });\n}, S = {\n get: (t, e) => b().get(t, e).json(),\n post: (t, e) => b().post(t, e).json()\n}, z = ({ tokens: t, ...e }) => {\n const s = new URLSearchParams();\n return t.filter((r, i, n) => n.findIndex((a) => a === r) === i).forEach((r) => s.append(\"tokens\", JSON.stringify(r))), e.metadata && s.append(\"metadata\", \"true\"), e.lookup && s.append(\"lookup\", \"true\"), e.sparkline && s.append(\"sparkline\", \"true\"), S.post(h.CachedPrices, {\n body: s.toString(),\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" }\n });\n}, it = {\n getCachedPrices: z,\n getQuote: (t) => S.get(h.Quote, { searchParams: t }),\n getGasRates: () => S.get(h.GasRates),\n getTxnDetails: (t) => S.get(h.Txn, { searchParams: t }),\n getTokenlistProviders: () => S.get(h.TokenlistProviders),\n getTokenList: (t) => S.get(`${h.TokenList}/${t}.json`),\n getThornameAddresses: (t) => S.get(`${h.Thorname}/${t}`),\n getThornameRegisteredChains: (t) => S.get(`${h.Thorname}/chains/${t}`),\n getThornameRlookup: (t, e) => S.get(`${h.Thorname}/rlookup`, { searchParams: { address: t, chain: e } })\n};\nvar Z = /* @__PURE__ */ ((t) => (t.SWAP_TC_TO_TC = \"SWAP:TC-TC\", t.SWAP_ETH_TO_TC = \"SWAP:ERC20-TC\", t.SWAP_TC_TO_ETH = \"SWAP:TC-ERC20\", t.SWAP_ETH_TO_ETH = \"SWAP:ERC20-ERC20\", t.SWAP_AVAX_TO_TC = \"SWAP:AVAX-TC\", t.SWAP_TC_TO_AVAX = \"SWAP:TC-AVAX\", t.SWAP_AVAX_TO_AVAX = \"SWAP:AVAX-AVAX\", t.SWAP_ETH_TO_AVAX = \"SWAP:ETH-AVAX\", t.SWAP_AVAX_TO_ETH = \"SWAP:AVAX-ETH\", t.SWAP_TC_TO_GAIA = \"SWAP:TC-GAIA\", t.SWAP_GAIA_TO_TC = \"SWAP:GAIA-TC\", t.SWAP_TC_TO_BNB = \"SWAP:TC-BNB\", t.SWAP_BNB_TO_TC = \"SWAP:BNB-TC\", t.SWAP_TC_TO_BTC = \"SWAP:TC-BTC\", t.SWAP_BTC_TO_TC = \"SWAP:BTC-TC\", t.SWAP_TC_TO_BCH = \"SWAP:TC-BCH\", t.SWAP_BCH_TO_TC = \"SWAP:BCH-TC\", t.SWAP_TC_TO_LTC = \"SWAP:TC-LTC\", t.SWAP_LTC_TO_TC = \"SWAP:LTC-TC\", t.SWAP_TC_TO_DOGE = \"SWAP:TC-DOGE\", t.SWAP_DOGE_TO_TC = \"SWAP:DOGE-TC\", t.TC_STATUS = \"TC:STATUS\", t.TC_TRANSFER = \"TC:TRANSFER\", t.TC_DEPOSIT = \"TC:DEPOSIT\", t.TC_SEND = \"TC:SEND\", t.TC_SWITCH = \"TC:SWITCH\", t.TC_LP_ADD = \"TC:ADDLIQUIDITY\", t.TC_LP_WITHDRAW = \"TC:WITHDRAW\", t.TC_TNS_CREATE = \"TC:TNS-CREATE\", t.TC_TNS_EXTEND = \"TC:TNS-EXTEND\", t.TC_TNS_UPDATE = \"TC:TNS-UPDATE\", t.TC_SAVINGS_ADD = \"TC:ADDSAVINGS\", t.TC_SAVINGS_WITHDRAW = \"TC:WITHDRAWSAVINGS\", t.TC_LENDING_OPEN = \"TC:LENDINGOPEN\", t.TC_LENDING_CLOSE = \"TC:LENDINGCLOSE\", t.ETH_APPROVAL = \"ETH:APPROVAL\", t.ETH_STATUS = \"ETH:STATUS\", t.ETH_TRANSFER_TO_TC = \"ETH:TRANSFER:IN\", t.ETH_TRANSFER_FROM_TC = \"ETH:TRANSFER:OUT\", t.AVAX_APPROVAL = \"AVAX:APPROVAL\", t.AVAX_STATUS = \"AVAX:STATUS\", t.AVAX_TRANSFER_TO_TC = \"AVAX:TRANSFER:IN\", t.AVAX_TRANSFER_FROM_TC = \"AVAX:TRANSFER:OUT\", t.BSC_APPROVAL = \"BSC:APPROVAL\", t.BSC_STATUS = \"BSC:STATUS\", t.BSC_TRANSFER_TO_TC = \"BSC:TRANSFER:IN\", t.BSC_TRANSFER_FROM_TC = \"BSC:TRANSFER:OUT\", t.APPROVAL = \"APPROVAL\", t.STATUS = \"STATUS\", t.TRANSFER_TO_TC = \"TRANSFER:IN\", t.TRANSFER_FROM_TC = \"TRANSFER:OUT\", t.UNSUPPORTED = \"UNSUPPORTED\", t.TC_LENDING = \"TC:LENDING\", t))(Z || {}), tt = /* @__PURE__ */ ((t) => (t.PENDING = \"pending\", t.SUCCESS = \"success\", t.CANCELLED = \"cancelled\", t.REFUNDED = \"refunded\", t.REPLACED = \"replaced\", t.ERROR = \"error\", t.UNKNOWN = \"unknown\", t.NOT_STARTED = \"not_started\", t.NOT_FOUND = \"not_found\", t.RETRIES_EXCEEDED = \"retries_exceeded\", t.STREAMING = \"streaming\", t))(tt || {}), et = /* @__PURE__ */ ((t) => (t[t.NOT_STARTED = 0] = \"NOT_STARTED\", t[t.SUCCESS = 1] = \"SUCCESS\", t[t.REFUNDED = 2] = \"REFUNDED\", t))(et || {});\nexport {\n h as ApiEndpoints,\n S as RequestClient,\n et as StreamingSwapProgressStatus,\n it as SwapKitApi,\n Z as TransactionType,\n tt as TxStatus,\n H as defaultRequestHeaders,\n ot as setRequestClientConfig\n};\n//# sourceMappingURL=index.es.js.map\n","import { RequestClient } from '@swapkit/api';\nimport type { EVMChain } from '@swapkit/types';\nimport { BaseDecimal, Chain, ChainToRPC, EVMChainList, FeeOption } from '@swapkit/types';\n\nconst getDecimalMethodHex = '0x313ce567';\n\nexport type CommonAssetString =\n | `${Chain.Maya}.MAYA`\n | `${Chain.Ethereum}.THOR`\n | `${Chain.Ethereum}.vTHOR`\n | `${Chain.Kujira}.USK`\n | Chain;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: '*/*',\n 'content-type': 'application/json',\n 'cache-control': 'no-cache',\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: '2.0',\n method: 'eth_call',\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, 'latest'],\n }),\n });\n\n return parseInt(BigInt(result).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getETHAssetDecimal = async (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const [, address] = symbol.split('-');\n\n return address?.startsWith('0x')\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = async (symbol: string) => {\n const [, address] = symbol.split('-');\n\n return address?.startsWith('0x')\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = async (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nexport const getDecimal = async ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const gasFeeMultiplier: Record<FeeOption, number> = {\n [FeeOption.Average]: 1.2,\n [FeeOption.Fast]: 1.5,\n [FeeOption.Fastest]: 2,\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n return symbol === 'ETH';\n case Chain.Maya:\n return symbol === 'CACAO';\n case Chain.Kujira:\n return symbol === 'KUJI';\n case Chain.Cosmos:\n return symbol === 'ATOM';\n case Chain.Polygon:\n return symbol === 'MATIC';\n case Chain.BinanceSmartChain:\n return symbol === 'BNB';\n case Chain.THORChain:\n return symbol === 'RUNE';\n\n default:\n return symbol === chain;\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case `${Chain.Ethereum}.THOR`:\n return { identifier: 'ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044', decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: 'ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d', decimal: 18 };\n\n case Chain.Cosmos:\n return { identifier: 'GAIA.ATOM', decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: 'THOR.RUNE', decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: 'BSC.BNB', decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: 'MAYA.CACAO', decimal: BaseDecimal.MAYA };\n case `${Chain.Maya}.MAYA`:\n return { identifier: 'MAYA.MAYA', decimal: 4 };\n\n case `${Chain.Kujira}.USK`:\n return { identifier: `${Chain.Kujira}.USK`, decimal: 6 };\n\n default:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes('/')) return 'Synth';\n\n switch (chain) {\n case Chain.Cosmos:\n return symbol === 'ATOM' ? 'Native' : Chain.Cosmos;\n case Chain.Kujira:\n return symbol === Chain.Kujira ? 'Native' : Chain.Kujira;\n case Chain.Binance:\n return symbol === Chain.Binance ? 'Native' : 'BEP2';\n case Chain.BinanceSmartChain:\n return symbol === Chain.Binance ? 'Native' : 'BEP20';\n case Chain.Ethereum:\n return symbol === Chain.Ethereum ? 'Native' : 'ERC20';\n case Chain.Avalanche:\n return symbol === Chain.Avalanche ? 'Native' : Chain.Avalanche;\n case Chain.Polygon:\n return symbol === Chain.Polygon ? 'Native' : 'POLYGON';\n\n case Chain.Arbitrum:\n return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? 'Native' : 'ARBITRUM';\n case Chain.Optimism:\n return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? 'Native' : 'OPTIMISM';\n\n default:\n return 'Native';\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split('.') as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes('/');\n const symbol = symbolArray.join('.');\n const ticker = symbol?.split('-')?.[0];\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n 'gmi',\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split('.') as [EVMChain, string];\n if (!EVMChainList.includes(chain as EVMChain)) return true;\n const [, address] = symbol.split('-') as [string, string?];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter(({ chain, value, symbol }) => {\n const assetString = `${chain}.${symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) && evmAssetHasAddress(assetString) && value !== '0'\n );\n });\n","import { BaseDecimal } from '@swapkit/types';\n\nimport { SwapKitNumber } from '../index.ts';\n\ntype ShareParams<T = {}> = T & {\n liquidityUnits: string;\n poolUnits: string;\n};\n\ntype PoolParams<T = {}> = T & {\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n};\n\n/**\n * Ref: https://gitlab.com/thorchain/thornode/-/issues/657\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * s = stakeUnits for member (after factoring in withdrawBasisPoints)\n * T = totalPoolUnits for pool\n * A = assetDepth to be withdrawn\n *\n * Formula:\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * (part1 * (part2 - part3 + part4)) / part5\n */\nexport function getAsymmetricRuneShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n}: ShareParams<{ runeDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(runeDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const part5 = T.mul(T).mul(T);\n\n const numerator = part1.mul(part2.sub(part3).add(part4));\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricAssetShare({\n liquidityUnits,\n poolUnits,\n assetDepth,\n}: ShareParams<{ assetDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(assetDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const numerator = part1.mul(part2.sub(part3).add(part4));\n const part5 = T.mul(T).mul(T);\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricRuneWithdrawAmount({\n percent,\n runeDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; runeDepth: string }>) {\n return getAsymmetricRuneShare({ runeDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nexport function getAsymmetricAssetWithdrawAmount({\n percent,\n assetDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; assetDepth: string }>) {\n return getAsymmetricAssetShare({ assetDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nfunction toTCSwapKitNumber(value: string) {\n return SwapKitNumber.fromBigInt(BigInt(value), BaseDecimal.THOR);\n}\n\nexport function getSymmetricPoolShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n}>) {\n return {\n assetAmount: toTCSwapKitNumber(assetDepth).mul(liquidityUnits).div(poolUnits),\n runeAmount: toTCSwapKitNumber(runeDepth).mul(liquidityUnits).div(poolUnits),\n };\n}\n\nexport function getSymmetricWithdraw({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n percent,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n percent: number;\n}>) {\n return Object.fromEntries(\n Object.entries(getSymmetricPoolShare({ liquidityUnits, poolUnits, runeDepth, assetDepth })).map(\n ([name, value]) => [name, value.mul(percent)],\n ),\n );\n}\n\nexport function getEstimatedPoolShare({\n runeDepth,\n poolUnits,\n assetDepth,\n liquidityUnits,\n runeAmount,\n assetAmount,\n}: ShareParams<{\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n}>) {\n const R = new SwapKitNumber({ value: runeDepth, decimal: 8 });\n const A = new SwapKitNumber({ value: assetDepth, decimal: 8 });\n const P = new SwapKitNumber({ value: poolUnits, decimal: 8 });\n const runeAddAmount = new SwapKitNumber({ value: runeAmount, decimal: 8 });\n const assetAddAmount = new SwapKitNumber({ value: assetAmount, decimal: 8 });\n\n // liquidityUnits = P * (r*A + a*R + 2*r*a) / (r*A + a*R + 2*R*A)\n const rA = runeAddAmount.mul(A);\n const aR = assetAddAmount.mul(R);\n const ra = runeAddAmount.mul(assetAddAmount);\n const RA = R.mul(A);\n const numerator = P.mul(rA.add(aR.add(ra.mul(2))));\n const denominator = rA.add(aR.add(RA.mul(2)));\n const liquidityUnitsAfterAdd = numerator.div(denominator);\n const estimatedLiquidityUnits = toTCSwapKitNumber(liquidityUnits).add(liquidityUnitsAfterAdd);\n\n if (liquidityUnitsAfterAdd.getBaseValue('number') === 0) {\n return estimatedLiquidityUnits.div(P).getBaseValue('number');\n }\n\n // get pool units after add\n const newPoolUnits = P.add(estimatedLiquidityUnits);\n\n return estimatedLiquidityUnits.div(newPoolUnits).getBaseValue('number');\n}\n\nexport function getLiquiditySlippage({\n runeAmount,\n assetAmount,\n runeDepth,\n assetDepth,\n}: PoolParams) {\n if (runeAmount === '0' || assetAmount === '0' || runeDepth === '0' || assetDepth === '0')\n return 0;\n // formula: (t * R - T * r)/ (T*r + R*T)\n const R = toTCSwapKitNumber(runeDepth);\n const T = toTCSwapKitNumber(assetDepth);\n const assetAddAmount = toTCSwapKitNumber(assetAmount);\n const runeAddAmount = toTCSwapKitNumber(runeAmount);\n\n const numerator = assetAddAmount.mul(R).sub(T.mul(runeAddAmount));\n const denominator = T.mul(runeAddAmount).add(R.mul(T));\n\n // set absolute value of percent, no negative allowed\n return Math.abs(numerator.div(denominator).getBaseValue('number'));\n}\n","import { Chain, MemoType } from '@swapkit/types';\n\nexport type ThornameRegisterParam = {\n name: string;\n chain: string;\n address: string;\n owner?: string;\n preferredAsset?: string;\n expiryBlock?: string;\n};\n\ntype WithAddress<T = {}> = T & { address: string };\ntype WithChain<T = {}> = T & { chain: Chain };\n\nexport type MemoOptions<T extends MemoType> = {\n [MemoType.BOND]: WithAddress;\n [MemoType.LEAVE]: WithAddress;\n [MemoType.CLOSE_LOAN]: WithAddress<{ asset: string; minAmount?: string }>;\n [MemoType.OPEN_LOAN]: WithAddress<{ asset: string; minAmount?: string }>;\n [MemoType.UNBOND]: WithAddress<{ unbondAmount: number }>;\n [MemoType.DEPOSIT]: WithChain<{ symbol: string; address?: string; singleSide?: boolean }>;\n [MemoType.WITHDRAW]: WithChain<{\n ticker: string;\n symbol: string;\n basisPoints: number;\n targetAssetString?: string;\n singleSide?: boolean;\n }>;\n [MemoType.THORNAME_REGISTER]: Omit<ThornameRegisterParam, 'preferredAsset' | 'expiryBlock'>;\n}[T];\n\nexport const getMemoFor = <T extends MemoType>(memoType: T, options: MemoOptions<T>) => {\n switch (memoType) {\n case MemoType.LEAVE:\n case MemoType.BOND: {\n const { address } = options as MemoOptions<MemoType.BOND>;\n return `${memoType}:${address}`;\n }\n\n case MemoType.UNBOND: {\n const { address, unbondAmount } = options as MemoOptions<MemoType.UNBOND>;\n return `${memoType}:${address}:${unbondAmount}`;\n }\n\n case MemoType.THORNAME_REGISTER: {\n const { name, chain, address, owner } = options as MemoOptions<MemoType.THORNAME_REGISTER>;\n return `${memoType}:${name}:${chain}:${address}${owner ? `:${owner}` : ''}`;\n }\n\n case MemoType.DEPOSIT: {\n const { chain, symbol, address, singleSide } = options as MemoOptions<MemoType.DEPOSIT>;\n\n const getPoolIdentifier = (chain: Chain, symbol: string): string => {\n switch (chain) {\n case Chain.Litecoin:\n return 'l';\n case Chain.Dogecoin:\n return 'd';\n case Chain.BitcoinCash:\n return 'c';\n default:\n return `${chain}.${symbol}`;\n }\n };\n\n return singleSide\n ? `${memoType}:${chain}/${symbol}`\n : `${memoType}:${getPoolIdentifier(chain, symbol)}:${address || ''}`;\n }\n\n case MemoType.WITHDRAW: {\n const { chain, ticker, symbol, basisPoints, targetAssetString, singleSide } =\n options as MemoOptions<MemoType.WITHDRAW>;\n\n const shortenedSymbol =\n chain === 'ETH' && ticker !== 'ETH' ? `${ticker}-${symbol.slice(-3)}` : symbol;\n const target = !singleSide && targetAssetString ? `:${targetAssetString}` : '';\n const assetDivider = singleSide ? '/' : '.';\n\n return `${memoType}:${chain}${assetDivider}${shortenedSymbol}:${basisPoints}${target}`;\n }\n\n case MemoType.OPEN_LOAN:\n case MemoType.CLOSE_LOAN: {\n const { asset, address } = options as MemoOptions<MemoType.OPEN_LOAN>;\n\n return `${memoType}:${asset}:${address}`; //:${minAmount ? `${minAmount}` : ''}:t:0`;\n }\n\n default:\n return '';\n }\n};\n","// 10 rune for register, 1 rune per year\n// MINIMUM_REGISTRATION_FEE = 11\nexport function getTHORNameCost(year: number) {\n if (year < 0) throw new Error('Invalid number of year');\n return 10 + year;\n}\n\nexport function validateTHORName(name: string) {\n if (name.length > 30) return false;\n\n const regex = /^[a-zA-Z0-9+_-]+$/g;\n\n return !!name.match(regex);\n}\n\nexport function derivationPathToString([network, chainId, account, change, index]: number[]) {\n const shortPath = typeof index !== 'number';\n\n return `${network}'/${chainId}'/${account}'/${change}${shortPath ? '' : `/${index}`}`;\n}\n","import { Chain } from '@swapkit/types';\n\n// Backward compatibility\nconst supportedChains = [...Object.values(Chain), 'TERRA'];\n\nexport function validateIdentifier(identifier = '') {\n const uppercasedIdentifier = identifier.toUpperCase();\n\n const [chain] = uppercasedIdentifier.split('.') as [Chain, string];\n if (supportedChains.includes(chain)) return true;\n\n const [synthChain] = uppercasedIdentifier.split('/') as [Chain, string];\n if (supportedChains.includes(synthChain)) return true;\n\n throw new Error(\n `Invalid identifier: ${identifier}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,\n );\n}\n","import { BaseDecimal } from '@swapkit/types';\n\nimport type { SwapKitNumber } from './swapKitNumber.ts';\n\ntype NumberPrimitivesType = {\n bigint: bigint;\n number: number;\n string: string;\n};\nexport type NumberPrimitives = bigint | number | string;\ntype InitialisationValueType = NumberPrimitives | BigIntArithmetics | SwapKitNumber;\n\ntype SKBigIntParams = InitialisationValueType | { decimal?: number; value: number | string };\ntype AllowedNumberTypes = 'bigint' | 'number' | 'string';\n\nconst DEFAULT_DECIMAL = 8;\nconst toMultiplier = (decimal: number) => 10n ** BigInt(decimal);\nconst decimalFromMultiplier = (multiplier: bigint) => Math.log10(parseFloat(multiplier.toString()));\n\nexport function formatBigIntToSafeValue({\n value,\n bigIntDecimal = DEFAULT_DECIMAL,\n decimal = DEFAULT_DECIMAL,\n}: {\n value: bigint;\n bigIntDecimal?: number;\n decimal?: number;\n}) {\n if (decimal === 0) return value.toString();\n const isNegative = value < 0n;\n let valueString = value.toString().substring(isNegative ? 1 : 0);\n\n const padLength = decimal - (valueString.length - 1);\n\n if (padLength > 0) {\n valueString = '0'.repeat(padLength) + valueString;\n }\n\n const decimalIndex = valueString.length - decimal;\n let decimalString = valueString.slice(-decimal);\n\n // Check if we need to round up\n if (parseInt(decimalString[bigIntDecimal]) >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n parseInt(decimalString[bigIntDecimal - 1]) + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? '-' : ''}${valueString.slice(0, decimalIndex)}.${decimalString}`.replace(\n /\\.?0*$/,\n '',\n );\n}\n\nexport class BigIntArithmetics {\n decimalMultiplier: bigint = 10n ** 8n;\n bigIntValue: bigint = 0n;\n decimal?: number;\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new BigIntArithmetics({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n\n static shiftDecimals({\n value,\n from,\n to,\n }: {\n value: InstanceType<typeof SwapKitNumber>;\n from: number;\n to: number;\n }) {\n return this.fromBigInt(\n (value.getBaseValue('bigint') * toMultiplier(to)) / toMultiplier(from),\n to,\n );\n }\n\n constructor(params: SKBigIntParams) {\n const value = getStringValue(params);\n const isComplex = typeof params === 'object';\n this.decimal = isComplex ? params.decimal : undefined;\n\n // use the multiplier to keep track of decimal point - defaults to 8 if lower than 8\n this.decimalMultiplier =\n isComplex && 'decimalMultiplier' in params\n ? params.decimalMultiplier\n : toMultiplier(Math.max(getFloatDecimals(toSafeValue(value)), this.decimal || 0));\n this.#setValue(value);\n }\n\n set(value: SKBigIntParams): this {\n // @ts-expect-error False positive\n return new this.constructor({ decimal: this.decimal, value, identifier: this.toString() });\n }\n add(...args: InitialisationValueType[]) {\n return this.#arithmetics('add', ...args);\n }\n sub(...args: InitialisationValueType[]) {\n return this.#arithmetics('sub', ...args);\n }\n mul(...args: InitialisationValueType[]) {\n return this.#arithmetics('mul', ...args);\n }\n div(...args: InitialisationValueType[]) {\n return this.#arithmetics('div', ...args);\n }\n gt(value: InitialisationValueType) {\n return this.#comparison('gt', value);\n }\n gte(value: InitialisationValueType) {\n return this.#comparison('gte', value);\n }\n lt(value: InitialisationValueType) {\n return this.#comparison('lt', value);\n }\n lte(value: InitialisationValueType) {\n return this.#comparison('lte', value);\n }\n eqValue(value: InitialisationValueType) {\n return this.#comparison('eqValue', value);\n }\n\n // @ts-expect-error False positive\n getValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const value = this.formatBigIntToSafeValue(\n this.bigIntValue,\n this.decimal || decimalFromMultiplier(this.decimalMultiplier),\n );\n\n switch (type) {\n case 'number':\n return Number(value) as NumberPrimitivesType[T];\n case 'string':\n return value as NumberPrimitivesType[T];\n case 'bigint':\n return ((this.bigIntValue * 10n ** BigInt(this.decimal || 8n)) /\n this.decimalMultiplier) as NumberPrimitivesType[T];\n }\n }\n\n // @ts-expect-error\n getBaseValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const divisor = this.decimalMultiplier / toMultiplier(this.decimal || BaseDecimal.THOR);\n const baseValue = this.bigIntValue / divisor;\n\n switch (type) {\n case 'number':\n return Number(baseValue) as NumberPrimitivesType[T];\n case 'string':\n return baseValue.toString() as NumberPrimitivesType[T];\n case 'bigint':\n return baseValue as NumberPrimitivesType[T];\n }\n }\n\n getBigIntValue(value: InitialisationValueType, decimal?: number) {\n if (!decimal && typeof value === 'object') return value.bigIntValue;\n\n const stringValue = getStringValue(value);\n const safeValue = toSafeValue(stringValue);\n\n if (safeValue === '0' || safeValue === 'undefined') return 0n;\n return this.#toBigInt(safeValue, decimal);\n }\n\n toSignificant(significantDigits: number = 6) {\n const [int, dec] = this.getValue('string').split('.');\n const integer = int || '';\n const decimal = dec || '';\n const valueLength = parseInt(integer) ? integer.length + decimal.length : decimal.length;\n\n if (valueLength <= significantDigits) {\n return this.getValue('string');\n }\n\n if (integer.length >= significantDigits) {\n return integer.slice(0, significantDigits).padEnd(integer.length, '0');\n }\n\n if (parseInt(integer)) {\n return `${integer}.${decimal.slice(0, significantDigits - integer.length)}`.padEnd(\n significantDigits - integer.length,\n '0',\n );\n }\n\n const trimmedDecimal = parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, significantDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n '0',\n )}`;\n }\n\n toFixed(fixedDigits: number = 6) {\n const [int, dec] = this.getValue('string').split('.');\n const integer = int || '';\n const decimal = dec || '';\n\n if (parseInt(integer)) {\n return `${integer}.${decimal.slice(0, fixedDigits)}`.padEnd(fixedDigits, '0');\n }\n\n const trimmedDecimal = parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, fixedDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n '0',\n )}`;\n }\n\n toAbbreviation(digits = 2) {\n const value = this.getValue('number');\n const abbreviations = ['', 'K', 'M', 'B', 'T', 'Q', 'Qi', 'S'];\n const tier = Math.floor(Math.log10(Math.abs(value)) / 3);\n const suffix = abbreviations[tier];\n\n if (!suffix) return this.getValue('string');\n\n const scale = 10 ** (tier * 3);\n const scaled = value / scale;\n\n return `${scaled.toFixed(digits)}${suffix}`;\n }\n\n toCurrency(\n currency = '$',\n {\n currencyPosition = 'start',\n decimal = 2,\n decimalSeparator = '.',\n thousandSeparator = ',',\n } = {},\n ) {\n const value = this.getValue('number');\n const [int, dec = ''] = value.toFixed(6).split('.');\n const integer = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n const parsedValue =\n !int && !dec\n ? '0.00'\n : int === '0'\n ? `${parseFloat(`0.${dec}`)}`.replace('.', decimalSeparator)\n : `${integer}${parseInt(dec) ? `${decimalSeparator}${dec.slice(0, decimal)}` : ''}`;\n\n return `${currencyPosition === 'start' ? currency : ''}${parsedValue}${\n currencyPosition === 'end' ? currency : ''\n }`;\n }\n\n formatBigIntToSafeValue(value: bigint, decimal?: number) {\n const bigIntDecimal = decimal || this.decimal || DEFAULT_DECIMAL;\n const decimalToUseForConversion = Math.max(\n bigIntDecimal,\n decimalFromMultiplier(this.decimalMultiplier),\n );\n const isNegative = value < 0n;\n\n const valueString = value.toString().substring(isNegative ? 1 : 0);\n const padLength = decimalToUseForConversion - (valueString.length - 1);\n\n const parsedValueString = padLength > 0 ? '0'.repeat(padLength) + valueString : valueString;\n\n const decimalIndex = parsedValueString.length - decimalToUseForConversion;\n let decimalString = parsedValueString.slice(-decimalToUseForConversion);\n\n // Check if we need to round up\n if (parseInt(decimalString[bigIntDecimal]) >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n parseInt(decimalString[bigIntDecimal - 1]) + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? '-' : ''}${parsedValueString.slice(\n 0,\n decimalIndex,\n )}.${decimalString}`.replace(/\\.?0*$/, '');\n }\n\n #arithmetics(method: 'add' | 'sub' | 'mul' | 'div', ...args: InitialisationValueType[]): this {\n const precisionDecimal = this.#retrievePrecisionDecimal(this, ...args);\n const decimal = Math.max(precisionDecimal, decimalFromMultiplier(this.decimalMultiplier));\n const precisionDecimalMultiplier = toMultiplier(decimal);\n\n const result = args.reduce(\n (acc: bigint, arg) => {\n const value = this.getBigIntValue(arg, decimal);\n\n switch (method) {\n case 'add':\n return acc + value;\n case 'sub':\n return acc - value;\n /**\n * Multiplication & division would end up with wrong result if we don't adjust the value\n * 200000000n * 200000000n => 40000000000000000n\n * 200000000n / 200000000n => 1n\n * So we do the following:\n * 200000000n * 200000000n = 40000000000000000n / 100000000n (decimals) => 400000000n\n * (200000000n * 100000000n (decimals)) / 200000000n => 100000000n\n */\n case 'mul':\n return (acc * value) / precisionDecimalMultiplier;\n case 'div': {\n if (value === 0n) throw new RangeError('Division by zero');\n return (acc * precisionDecimalMultiplier) / value;\n }\n default:\n return acc;\n }\n },\n //normalize is to precision multiplier base\n (this.bigIntValue * precisionDecimalMultiplier) / this.decimalMultiplier,\n );\n\n const value = formatBigIntToSafeValue({\n bigIntDecimal: decimal,\n decimal,\n value: result,\n });\n\n // @ts-expect-error False positive\n return new this.constructor({\n decimalMultiplier: toMultiplier(decimal),\n decimal: this.decimal,\n value,\n identifier: this.toString(),\n });\n }\n\n #comparison(method: 'gt' | 'gte' | 'lt' | 'lte' | 'eqValue', ...args: InitialisationValueType[]) {\n const decimal = this.#retrievePrecisionDecimal(this, ...args);\n const value = this.getBigIntValue(args[0], decimal);\n const compareToValue = this.getBigIntValue(this, decimal);\n\n switch (method) {\n case 'gt':\n return compareToValue > value;\n case 'gte':\n return compareToValue >= value;\n case 'lt':\n return compareToValue < value;\n case 'lte':\n return compareToValue <= value;\n case 'eqValue':\n return compareToValue === value;\n }\n }\n\n #setValue(value: InitialisationValueType) {\n const safeValue = toSafeValue(value) || '0';\n this.bigIntValue = this.#toBigInt(safeValue);\n }\n\n #retrievePrecisionDecimal(...args: InitialisationValueType[]) {\n const decimals = args\n .map((arg) => {\n const isObject = typeof arg === 'object';\n const value = isObject\n ? arg.decimal || decimalFromMultiplier(arg.decimalMultiplier)\n : getFloatDecimals(toSafeValue(arg));\n\n return value;\n })\n .filter(Boolean) as number[];\n\n return Math.max(...decimals, DEFAULT_DECIMAL);\n }\n\n #toBigInt(value: string, decimal?: number) {\n const multiplier = decimal ? toMultiplier(decimal) : this.decimalMultiplier;\n const padDecimal = decimalFromMultiplier(multiplier);\n const [integerPart = '', decimalPart = ''] = value.split('.');\n\n return BigInt(`${integerPart}${decimalPart.padEnd(padDecimal, '0')}`);\n }\n}\n\nconst numberFormatter = Intl.NumberFormat('fullwide', {\n useGrouping: false,\n maximumFractionDigits: 20,\n});\n\nfunction toSafeValue(value: InitialisationValueType) {\n const parsedValue =\n typeof value === 'number' ? numberFormatter.format(value) : getStringValue(value);\n const splitValue = `${parsedValue}`.replaceAll(',', '.').split('.');\n\n return splitValue.length > 1\n ? `${splitValue.slice(0, -1).join('')}.${splitValue.at(-1)}`\n : splitValue[0];\n}\n\nfunction getFloatDecimals(value: string) {\n const decimals = value.split('.')[1]?.length || 0;\n return Math.max(decimals, DEFAULT_DECIMAL);\n}\n\nfunction getStringValue(param: SKBigIntParams) {\n return typeof param === 'object'\n ? 'getValue' in param\n ? param.getValue('string')\n : param.value\n : param;\n}\n","import { BigIntArithmetics, formatBigIntToSafeValue } from './bigIntArithmetics.ts';\n\nexport type SwapKitValueType = BigIntArithmetics | string | number;\n\nexport class SwapKitNumber extends BigIntArithmetics {\n eq(value: SwapKitValueType) {\n return this.eqValue(value);\n }\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new SwapKitNumber({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n}\n","import { BaseDecimal, Chain, ChainToChainId } from '@swapkit/types';\n\nimport type { CommonAssetString } from '../helpers/asset.ts';\nimport { getAssetType, getCommonAssetInfo, getDecimal, isGasAsset } from '../helpers/asset.ts';\nimport { validateIdentifier } from '../helpers/validators.ts';\nimport type { TokenNames, TokenTax } from '../types.ts';\n\nimport type { NumberPrimitives } from './bigIntArithmetics.ts';\nimport { BigIntArithmetics, formatBigIntToSafeValue } from './bigIntArithmetics.ts';\nimport { SwapKitNumber, type SwapKitValueType } from './swapKitNumber.ts';\n\nconst staticTokensMap = new Map<\n TokenNames,\n { tax?: TokenTax; decimal: number; identifier: string }\n>();\n\nexport class AssetValue extends BigIntArithmetics {\n address?: string;\n chain: Chain;\n isGasAsset = false;\n isSynthetic = false;\n symbol: string;\n tax?: TokenTax;\n ticker: string;\n type: ReturnType<typeof getAssetType>;\n\n constructor({\n value,\n decimal,\n tax,\n chain,\n symbol,\n identifier,\n }: { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string; identifier?: never }\n | { identifier: string; chain?: never; symbol?: never }\n )) {\n super(typeof value === 'object' ? value : { decimal, value });\n\n const assetInfo = getAssetInfo(identifier || `${chain}.${symbol}`);\n\n this.type = getAssetType(assetInfo);\n this.tax = tax;\n this.chain = assetInfo.chain;\n this.ticker = assetInfo.ticker;\n this.symbol = assetInfo.symbol;\n this.address = assetInfo.address;\n this.isSynthetic = assetInfo.isSynthetic;\n this.isGasAsset = assetInfo.isGasAsset;\n }\n\n toString() {\n return this.isSynthetic ? this.symbol : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic ? `${this.chain}.${this.symbol.replace('/', '.')}` : this.toString();\n }\n\n eq({ chain, symbol }: { chain: Chain; symbol: string }) {\n return this.chain === chain && this.symbol === symbol;\n }\n\n chainId() {\n return ChainToChainId[this.chain];\n }\n\n // THOR.RUNE\n // THOR.ETH.ETH\n // ETH.THOR-0x1234567890\n static fromUrl(urlAsset: string, value: NumberPrimitives = 0) {\n const [chain, ticker, symbol] = urlAsset.split('.');\n if (!chain || !ticker) throw new Error('Invalid asset url');\n\n const assetString =\n chain === Chain.THORChain && symbol ? `${chain}.${ticker}/${symbol}` : urlAsset;\n\n return createAssetValue(assetString, value);\n }\n\n static fromString(assetString: string, value: NumberPrimitives = 0) {\n return createAssetValue(assetString, value);\n }\n static fromIdentifier(\n assetString:\n | `${Chain}.${string}`\n | `${Chain}/${string}`\n | `${Chain}.${string}-${string}`\n | TokenNames,\n value: NumberPrimitives = 0,\n ) {\n return createAssetValue(assetString, value);\n }\n\n static fromStringSync(assetString: string, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(value, decimal),\n identifier: isSynthetic ? assetString : identifier,\n decimal: isSynthetic ? 8 : decimal,\n });\n }\n\n static async fromStringWithBase(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const shiftedAmount = BigIntArithmetics.shiftDecimals({\n value: SwapKitNumber.fromBigInt(BigInt(value)),\n from: 0,\n to: baseDecimal,\n }).getBaseValue('string');\n const assetValue = await AssetValue.fromString(assetString, value);\n\n return assetValue.set(shiftedAmount);\n }\n\n static fromStringWithBaseSync(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(BigInt(value), baseDecimal),\n identifier,\n decimal,\n });\n }\n\n static fromIdentifierSync(assetString: TokenNames, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. - Loading with base Chain. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n return new AssetValue({ tax, decimal, identifier, value: safeValue(value, decimal) });\n }\n\n static fromChainOrSignature(assetString: CommonAssetString, value: NumberPrimitives = 0) {\n const { decimal, identifier } = getCommonAssetInfo(assetString);\n return new AssetValue({ value: safeValue(value, decimal), decimal, identifier });\n }\n\n static loadStaticAssets() {\n return new Promise<{ ok: true } | { ok: false; message: string; error: any }>(\n async (resolve, reject) => {\n try {\n const tokenPackages = await import('@swapkit/tokens');\n\n Object.values(tokenPackages).forEach((tokenList) => {\n tokenList?.tokens?.forEach(({ identifier, chain, ...rest }) => {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, {\n identifier,\n decimal: 'decimals' in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n });\n });\n\n resolve({ ok: true });\n } catch (error) {\n console.error(error);\n reject({\n ok: false,\n error,\n message:\n \"Couldn't load static assets. Ensure you have installed @swapkit/tokens package\",\n });\n }\n },\n );\n }\n}\n\nexport function getMinAmountByChain(chain: Chain) {\n const asset = AssetValue.fromChainOrSignature(chain);\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Litecoin:\n case Chain.BitcoinCash:\n return asset.set(0.00010001);\n\n case Chain.Dogecoin:\n return asset.set(1.00000001);\n\n case Chain.Avalanche:\n case Chain.Ethereum:\n return asset.set(0.00000001);\n\n case Chain.THORChain:\n case Chain.Maya:\n return asset.set(0);\n\n case Chain.Cosmos:\n return asset.set(0.000001);\n\n default:\n return asset.set(0.00000001);\n }\n}\n\nasync function createAssetValue(identifier: string, value: NumberPrimitives = 0) {\n validateIdentifier(identifier);\n\n const staticToken = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, { identifier, decimal });\n }\n\n return new AssetValue({ decimal, value: safeValue(value, decimal), identifier });\n}\n\nfunction createSyntheticAssetValue(identifier: string, value: NumberPrimitives = 0) {\n const [synthChain, symbol] =\n identifier.split('.')[0].toUpperCase() === Chain.THORChain\n ? identifier.split('.').slice(1)!.join().split('/')\n : identifier.split('/');\n\n if (!synthChain || !symbol) throw new Error('Invalid asset identifier');\n\n return new AssetValue({\n decimal: 8,\n value: safeValue(value, 8),\n identifier: `${Chain.THORChain}.${synthChain}/${symbol}`,\n });\n}\n\nfunction safeValue(value: NumberPrimitives, decimal: number) {\n return typeof value === 'bigint'\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n}\n\n// TODO refactor & split into smaller functions\nfunction getAssetInfo(identifier: string) {\n const isSynthetic = identifier.slice(0, 14).includes('/');\n\n const [synthChain, synthSymbol] =\n identifier.split('.')[0].toUpperCase() === Chain.THORChain\n ? identifier.split('.').slice(1)!.join().split('/')\n : identifier.split('/');\n\n if (isSynthetic && (!synthChain || !synthSymbol)) throw new Error('Invalid asset identifier');\n\n const adjustedIdentifier =\n identifier.includes('.') && !isSynthetic ? identifier : `${Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split('.') as [Chain, string];\n const [ticker, address] = (isSynthetic ? synthSymbol : rest.join('.')).split('-') as [\n string,\n string?,\n ];\n const symbol = isSynthetic ? synthSymbol : rest.join('.');\n\n return {\n address: address?.toLowerCase(),\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n symbol:\n (isSynthetic ? `${synthChain}/` : '') +\n (address ? `${ticker}-${address?.toLowerCase() ?? ''}` : symbol),\n ticker,\n };\n}\n","const errorMessages = {\n /**\n * Core\n */\n core_wallet_connection_not_found: 10001,\n core_estimated_max_spendable_chain_not_supported: 10002,\n core_extend_error: 10003,\n core_inbound_data_not_found: 10004,\n core_approve_asset_address_or_from_not_found: 10005,\n core_chain_halted: 10099,\n /**\n * Core - Wallet Connection\n */\n core_wallet_xdefi_not_installed: 10101,\n core_wallet_evmwallet_not_installed: 10102,\n core_wallet_walletconnect_not_installed: 10103,\n core_wallet_keystore_not_installed: 10104,\n core_wallet_ledger_not_installed: 10105,\n core_wallet_trezor_not_installed: 10106,\n core_wallet_keplr_not_installed: 10107,\n core_wallet_okx_not_installed: 10108,\n core_wallet_keepkey_not_installed: 10109,\n /**\n * Core - Swap\n */\n core_swap_invalid_params: 10200,\n core_swap_route_not_complete: 10201,\n core_swap_asset_not_recognized: 10202,\n core_swap_contract_not_found: 10203,\n core_swap_route_transaction_not_found: 10204,\n core_swap_contract_not_supported: 10205,\n core_swap_transaction_error: 10206,\n core_swap_quote_mode_not_supported: 10207,\n /**\n * Core - Transaction\n */\n core_transaction_deposit_error: 10301,\n core_transaction_create_liquidity_rune_error: 10302,\n core_transaction_create_liquidity_asset_error: 10303,\n core_transaction_create_liquidity_invalid_params: 10304,\n core_transaction_add_liquidity_invalid_params: 10305,\n core_transaction_add_liquidity_no_rune_address: 10306,\n core_transaction_add_liquidity_rune_error: 10307,\n core_transaction_add_liquidity_asset_error: 10308,\n core_transaction_withdraw_error: 10309,\n core_transaction_deposit_to_pool_error: 10310,\n core_transaction_deposit_insufficient_funds_error: 10311,\n core_transaction_deposit_gas_error: 10312,\n core_transaction_invalid_sender_address: 10313,\n core_transaction_deposit_server_error: 10314,\n core_transaction_user_rejected: 10315,\n\n /**\n * Wallets\n */\n wallet_ledger_connection_error: 20001,\n wallet_ledger_connection_claimed: 20002,\n wallet_ledger_get_address_error: 20003,\n wallet_ledger_device_not_found: 20004,\n wallet_ledger_device_locked: 20005,\n\n /**\n * Helpers\n */\n helpers_number_different_decimals: 99101,\n} as const;\n\nexport type ErrorKeys = keyof typeof errorMessages;\n\nexport class SwapKitError extends Error {\n constructor(errorKey: ErrorKeys, sourceError?: any) {\n if (sourceError) {\n console.error(sourceError, { stack: sourceError?.stack, message: sourceError?.message });\n }\n\n super(errorKey, { cause: { code: errorMessages[errorKey], message: errorKey } });\n Object.setPrototypeOf(this, SwapKitError.prototype);\n }\n}\n"],"names":["o","t","I","f","g","E","N","M","O","e","s","m","i","n","a","_","U","c","T","D","y","v","G","W","k","w","F","p","L","q","x","j","X","Y","V","P","$","K","J","Q","l","u","A","R","C","B","d","h","H","b","S","z","it","Z","tt","et","getDecimalMethodHex","getContractDecimals","chain","to","result","RequestClient","ChainToRPC","error","BaseDecimal","getETHAssetDecimal","symbol","Chain","address","getAVAXAssetDecimal","getBSCAssetDecimal","getDecimal","gasFeeMultiplier","FeeOption","isGasAsset","getCommonAssetInfo","assetString","getAssetType","assetFromString","symbolArray","synth","ticker","_a","potentialScamRegex","evmAssetHasAddress","EVMChainList","filterAssets","tokens","value","getAsymmetricRuneShare","liquidityUnits","poolUnits","runeDepth","toTCSwapKitNumber","part1","part2","part3","part4","part5","getAsymmetricAssetShare","assetDepth","numerator","getAsymmetricRuneWithdrawAmount","percent","getAsymmetricAssetWithdrawAmount","SwapKitNumber","getSymmetricPoolShare","getSymmetricWithdraw","name","getEstimatedPoolShare","runeAmount","assetAmount","runeAddAmount","assetAddAmount","rA","aR","ra","RA","denominator","liquidityUnitsAfterAdd","estimatedLiquidityUnits","newPoolUnits","getLiquiditySlippage","getMemoFor","memoType","options","MemoType","unbondAmount","owner","singleSide","basisPoints","targetAssetString","shortenedSymbol","target","asset","getTHORNameCost","year","validateTHORName","regex","derivationPathToString","network","chainId","account","change","index","supportedChains","validateIdentifier","identifier","uppercasedIdentifier","synthChain","DEFAULT_DECIMAL","toMultiplier","decimal","decimalFromMultiplier","multiplier","formatBigIntToSafeValue","bigIntDecimal","isNegative","valueString","padLength","decimalIndex","decimalString","_BigIntArithmetics","params","__privateAdd","_arithmetics","_comparison","_setValue","_retrievePrecisionDecimal","_toBigInt","__publicField","getStringValue","isComplex","getFloatDecimals","toSafeValue","__privateMethod","setValue_fn","from","args","arithmetics_fn","comparison_fn","type","divisor","baseValue","stringValue","safeValue","toBigInt_fn","significantDigits","int","dec","integer","trimmedDecimal","slicedDecimal","fixedDigits","digits","abbreviations","tier","suffix","scale","currency","currencyPosition","decimalSeparator","thousandSeparator","parsedValue","decimalToUseForConversion","parsedValueString","method","precisionDecimal","retrievePrecisionDecimal_fn","precisionDecimalMultiplier","acc","arg","compareToValue","decimals","padDecimal","integerPart","decimalPart","BigIntArithmetics","numberFormatter","splitValue","param","staticTokensMap","AssetValue","tax","assetInfo","getAssetInfo","ChainToChainId","urlAsset","createAssetValue","isSynthetic","tokenInfo","createSyntheticAssetValue","baseDecimal","shiftedAmount","resolve","reject","tokenPackages","tokenList","rest","getMinAmountByChain","staticToken","synthSymbol","adjustedIdentifier","errorMessages","SwapKitError","errorKey","sourceError"],"mappings":"88BAAA,IAAIA,GAAsBC,IAAOA,EAAE,yBAA2B,OAAQA,EAAE,kBAAoB,OAAQA,EAAE,4BAA8B,OAAQA,EAAE,qBAAuB,OAAQA,EAAE,4BAA8B,OAAQA,EAAE,wBAA0B,OAAQA,EAAE,qBAAuB,OAAQA,EAAE,sBAAwB,OAAQA,EAAE,eAAiB,OAAQA,EAAE,gBAAkB,OAAQA,EAAE,eAAiB,OAAQA,EAAE,cAAgB,OAAQA,EAAE,qCAAuC,OAAQA,EAAE,6BAA+B,OAAQA,EAAE,iCAAmC,OAAQA,EAAE,+BAAiC,OAAQA,EAAE,qBAAuB,OAAQA,EAAE,wBAA0B,OAAQA,EAAE,sCAAwC,OAAQA,EAAE,0CAA4C,OAAQA,EAAE,iCAAmC,OAAQA,EAAE,mCAAqC,OAAQA,EAAE,oCAAsC,OAAQA,EAAE,8BAAgC,OAAQA,EAAE,oBAAsB,OAAQA,EAAE,iBAAmB,OAAQA,EAAE,6BAA+B,OAAQA,EAAE,sBAAwB,OAAQA,EAAE,qBAAuB,OAAQA,EAAE,qBAAuB,OAAQA,EAAE,8BAAgC,OAAQA,EAAE,qBAAuB,OAAQA,EAAE,cAAgB,OAAQA,EAAE,cAAgB,OAAQA,EAAE,yBAA2B,OAAQA,EAAE,kBAAoB,OAAQA,EAAE,kBAAoB,OAAQA,EAAE,8BAAgC,OAAQA,EAAE,uBAAyB,OAAQA,EAAE,4BAA8B,OAAQA,EAAE,6BAA+B,OAAQA,EAAE,yBAA2B,OAAQA,EAAE,0BAA4B,OAAQA,EAAE,mBAAqB,OAAQA,EAAE,UAAY,OAAQA,EAAE,4BAA8B,OAAQA,EAAE,yBAA2B,OAAQA,EAAE,2BAA6B,OAAQA,EAAE,qBAAuB,OAAQA,EAAE,SAAW,OAAQA,EAAE,eAAiB,OAAQA,EAAE,wBAA0B,OAAQA,EAAE,wBAA0B,OAAQA,EAAE,gBAAkB,OAAQA,IAAID,GAAK,CAAA,CAAE,EACz7DA,EAAE,yBAA2B,GAAIA,EAAE,kBAAoB,GAAIA,EAAE,4BAA8B,GAAIA,EAAE,qBAAuB,GAAIA,EAAE,4BAA8B,GAAIA,EAAE,wBAA0B,GAAIA,EAAE,qBAAuB,GAAIA,EAAE,sBAAwB,GAAIA,EAAE,eAAiB,GAAIA,EAAE,gBAAkB,GAAIA,EAAE,eAAiB,GAAIA,EAAE,cAAgB,GAAIA,EAAE,qCAAuC,GAAIA,EAAE,6BAA+B,GAAIA,EAAE,iCAAmC,GAAIA,EAAE,+BAAiC,GAAIA,EAAE,qBAAuB,GAAIA,EAAE,wBAA0B,GAAIA,EAAE,sCAAwC,GAAIA,EAAE,0CAA4C,GAAIA,EAAE,iCAAmC,GAAIA,EAAE,8BAAgC,GAAIA,EAAE,oBAAsB,GAAIA,EAAE,mCAAqC,GAAIA,EAAE,oCAAsC,GAAIA,EAAE,iBAAmB,GAAIA,EAAE,6BAA+B,GAAIA,EAAE,sBAAwB,GAAIA,EAAE,qBAAuB,GAAIA,EAAE,qBAAuB,GAAIA,EAAE,qBAAuB,GAAIA,EAAE,8BAAgC,GAAIA,EAAE,cAAgB,GAAIA,EAAE,cAAgB,GAAIA,EAAE,kBAAoB,GAAIA,EAAE,kBAAoB,GAAIA,EAAE,8BAAgC,GAAIA,EAAE,6BAA+B,GAAIA,EAAE,uBAAyB,GAAIA,EAAE,4BAA8B,GAAIA,EAAE,yBAA2B,GAAIA,EAAE,0BAA4B,GAAIA,EAAE,mBAAqB,GAAIA,EAAE,UAAY,GAAIA,EAAE,4BAA8B,GAAIA,EAAE,yBAA2B,GAAIA,EAAE,2BAA6B,GAAIA,EAAE,qBAAuB,GAAIA,EAAE,SAAW,GAAIA,EAAE,eAAiB,GAAIA,EAAE,wBAA0B,GAAIA,EAAE,wBAA0B,GACxnD,IAAIE,GAAsBD,IAAOA,EAAE,SAAW,MAAOA,EAAE,UAAY,OAAQA,EAAE,QAAU,MAAOA,EAAE,kBAAoB,MAAOA,EAAE,QAAU,MAAOA,EAAE,YAAc,MAAOA,EAAE,OAAS,OAAQA,EAAE,KAAO,OAAQA,EAAE,SAAW,OAAQA,EAAE,SAAW,MAAOA,EAAE,OAAS,OAAQA,EAAE,SAAW,MAAOA,EAAE,KAAO,OAAQA,EAAE,SAAW,KAAMA,EAAE,SAAW,MAAOA,EAAE,UAAY,OAAQA,EAAE,QAAU,QAASA,EAAE,UAAY,OAAQA,IAAIC,GAAK,CAAA,CAAE,EAAGC,IAAsBF,IAAOA,EAAE,SAAW,QAASA,EAAE,YAAc,SAAUA,EAAE,UAAY,QAASA,EAAE,aAAe,SAAUA,EAAE,QAAU,uBAAwBA,EAAE,kBAAoB,KAAMA,EAAE,qBAAuB,OAAQA,EAAE,QAAU,UAAWA,EAAE,YAAc,cAAeA,EAAE,UAAY,YAAaA,EAAE,OAAS,cAAeA,EAAE,KAAO,OAAQA,EAAE,SAAW,WAAYA,EAAE,OAAS,UAAWA,EAAE,SAAW,IAAKA,EAAE,YAAc,MAAOA,EAAE,SAAW,WAAYA,EAAE,KAAO,uBAAwBA,EAAE,aAAe,wBAAyBA,EAAE,SAAW,KAAMA,EAAE,YAAc,MAAOA,EAAE,SAAW,WAAYA,EAAE,QAAU,MAAOA,EAAE,WAAa,OAAQA,EAAE,UAAY,uBAAwBA,EAAE,kBAAoB,wBAAyBA,IAAIE,IAAK,CAAA,CAAE,EAAGC,IAAsBH,IAAOA,EAAE,SAAW,+BAAgCA,EAAE,UAAY,+CAAgDA,EAAE,QAAU,GAAIA,EAAE,kBAAoB,mCAAoCA,EAAE,QAAU,2CAA4CA,EAAE,YAAc,gDAAiDA,EAAE,UAAY,qCAAsCA,EAAE,OAAS,8CAA+CA,EAAE,KAAO,wCAAyCA,EAAE,SAAW,4CAA6CA,EAAE,SAAW,4CAA6CA,EAAE,OAAS,uCAAwCA,EAAE,SAAW,4CAA6CA,EAAE,KAAO,oCAAqCA,EAAE,aAAe,6CAA8CA,EAAE,SAAW,8BAA+BA,EAAE,SAAW,wBAAyBA,EAAE,QAAU,0BAA2BA,EAAE,UAAY,2BAA4BA,EAAE,kBAAoB,sCAAuCA,IAAIG,IAAK,CAAE,CAAA,EAAGC,GAAsBJ,IAAOA,EAAE,OAAS,+CAAgDA,EAAE,OAAS,uCAAwCA,EAAE,gBAAkB,kCAAmCA,EAAE,iBAAmB,2CAA4CA,EAAE,gBAAkB,gCAAiCA,EAAE,iBAAmB,2CAA4CA,EAAE,YAAc,2BAA4BA,EAAE,eAAiB,8BAA+BA,IAAII,GAAK,CAAE,CAAA,EACjpF,MAAMC,EAAI,OAAO,OAAOJ,CAAC,EAAGK,GAAI,OAAO,KAAKL,CAAC,EAAGM,GAAIF,EAAE,OACpD,CAACL,EAAGQ,IAAM,CACR,MAAMC,EAAIH,GAAE,KAAM,GAAML,EAAE,CAAC,IAAMO,CAAC,EAClC,OAAOC,IAAMT,EAAEQ,CAAC,EAAIC,GAAIT,CACzB,EACD,CAAE,CACJ,EACAK,EAAE,OACA,CAACL,EAAGQ,KAAOR,EAAEQ,CAAC,EAAIN,GAAEK,GAAEC,CAAC,CAAC,EAAGR,GAC3B,CAAE,CACJ,EACAK,EAAE,OACA,CAACL,EAAGQ,KAAOR,EAAEQ,CAAC,EAAIL,GAAEI,GAAEC,CAAC,CAAC,EAAGR,GAC3B,CAAE,CACJ,EACAK,EAAE,OACA,CAACL,EAAGQ,IAAM,CACR,MAAMC,EAAI,GAAGF,GAAEC,CAAC,CAAC,MACjB,OAAOR,EAAEQ,CAAC,EAAIN,GAAEO,CAAC,EAAGT,CACrB,EACD,CAAE,CACJ,EACA,MAAMU,WAAU,KAAM,CACpB,YAAYF,EAAGC,EAAG,EAAG,CACnB,MAAME,EAAIH,EAAE,QAAUA,EAAE,SAAW,EAAIA,EAAE,OAAS,GAAII,EAAIJ,EAAE,YAAc,GAAIK,EAAI,GAAGF,CAAC,IAAIC,CAAC,GAAG,KAAI,EAAIE,EAAID,EAAI,eAAeA,CAAC,GAAK,mBACnI,MAAM,uBAAuBC,CAAC,EAAE,EAAG,OAAO,eAAe,KAAM,WAAY,CACzE,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,MACR,CAAA,EAAG,OAAO,eAAe,KAAM,UAAW,CACzC,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,MACR,CAAA,EAAG,OAAO,eAAe,KAAM,UAAW,CACzC,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,MACR,CAAA,EAAG,KAAK,KAAO,YAAa,KAAK,SAAWN,EAAG,KAAK,QAAUC,EAAG,KAAK,QAAU,CAClF,CACH,CACA,MAAMM,WAAU,KAAM,CACpB,YAAYP,EAAG,CACb,MAAM,mBAAmB,EAAG,OAAO,eAAe,KAAM,UAAW,CACjE,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,MACb,CAAK,EAAG,KAAK,KAAO,eAAgB,KAAK,QAAUA,CAChD,CACH,CACA,MAAMQ,EAAKhB,GAAMA,IAAM,MAAQ,OAAOA,GAAK,SAAUiB,EAAI,IAAIjB,IAAM,CACjE,UAAWQ,KAAKR,EACd,IAAK,CAACgB,EAAER,CAAC,GAAK,MAAM,QAAQA,CAAC,IAAMA,IAAM,OACvC,MAAM,IAAI,UAAU,0CAA0C,EAClE,OAAOU,GAAE,CAAA,EAAI,GAAGlB,CAAC,CACnB,EAAGmB,GAAI,CAACnB,EAAI,CAAA,EAAIQ,EAAI,CAAA,IAAO,CACzB,MAAMC,EAAI,IAAI,WAAW,QAAQT,CAAC,EAAG,EAAIQ,aAAa,WAAW,QAASG,EAAI,IAAI,WAAW,QAAQH,CAAC,EACtG,SAAW,CAACI,EAAGC,CAAC,IAAKF,EAAE,QAAS,EAC9B,GAAKE,IAAM,aAAeA,IAAM,OAASJ,EAAE,OAAOG,CAAC,EAAIH,EAAE,IAAIG,EAAGC,CAAC,EACnE,OAAOJ,CACT,EAAGS,GAAI,IAAIlB,IAAM,CACf,IAAIQ,EAAI,CAAA,EAAIC,EAAI,GAChB,UAAW,KAAKT,EACd,GAAI,MAAM,QAAQ,CAAC,EACjB,MAAM,QAAQQ,CAAC,IAAMA,EAAI,CAAA,GAAKA,EAAI,CAAC,GAAGA,EAAG,GAAG,CAAC,UACtCQ,EAAE,CAAC,EAAG,CACb,OAAS,CAACL,EAAGC,CAAC,IAAK,OAAO,QAAQ,CAAC,EACjCI,EAAEJ,CAAC,GAAKD,KAAKH,IAAMI,EAAIM,GAAEV,EAAEG,CAAC,EAAGC,CAAC,GAAIJ,EAAI,CAAE,GAAGA,EAAG,CAACG,CAAC,EAAGC,GACvDI,EAAE,EAAE,OAAO,IAAMP,EAAIU,GAAEV,EAAG,EAAE,OAAO,EAAGD,EAAE,QAAUC,EACnD,CACH,OAAOD,CACT,EAAGY,IAAK,IAAM,CACZ,IAAIpB,EAAI,GAAIQ,EAAI,GAChB,MAAMC,EAAI,OAAO,WAAW,gBAAkB,WAAY,EAAI,OAAO,WAAW,SAAW,WAC3F,OAAOA,GAAK,IAAMD,EAAI,IAAI,WAAW,QAAQ,wBAAyB,CACpE,KAAM,IAAI,WAAW,eACrB,OAAQ,OAER,IAAI,QAAS,CACX,OAAOR,EAAI,GAAI,MAChB,CACL,CAAG,EAAE,QAAQ,IAAI,cAAc,GAAIA,GAAK,CAACQ,CACzC,GAAC,EAAKa,GAAI,OAAO,WAAW,iBAAmB,WAAYC,GAAI,OAAO,WAAW,gBAAkB,WAAYC,GAAI,OAAO,WAAW,UAAY,WAAYC,GAAI,CAAC,MAAO,OAAQ,MAAO,QAAS,OAAQ,QAAQ,EAAGC,GAAI,CACtN,KAAM,mBACN,KAAM,SACN,SAAU,sBACV,YAAa,MACb,KAAM,KACR,EAAGC,EAAI,WAAYC,GAAI,OAAO,MAAM,EAAGC,GAAI,CACzC,KAAM,GACN,UAAW,GACX,aAAc,GACd,UAAW,GACX,MAAO,GACP,QAAS,GACT,MAAO,GACP,gBAAiB,GACjB,mBAAoB,GACpB,MAAO,EACT,EAAGC,GAAI,CACL,OAAQ,GACR,QAAS,GACT,KAAM,GACN,KAAM,GACN,YAAa,GACb,MAAO,GACP,SAAU,GACV,SAAU,GACV,eAAgB,GAChB,UAAW,GACX,UAAW,GACX,OAAQ,GACR,OAAQ,GACR,WAAY,GACZ,OAAQ,EACV,EAAGC,GAAK9B,GAAMwB,GAAE,SAASxB,CAAC,EAAIA,EAAE,YAAW,EAAKA,EAAG+B,GAAI,CAAC,MAAO,MAAO,OAAQ,SAAU,UAAW,OAAO,EAAGC,GAAI,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAI,CAAC,IAAK,IAAK,GAAG,EAAGC,GAAI,CAC7K,MAAO,EACP,QAASH,GACT,YAAaC,GACb,iBAAkBC,GAClB,cAAe,OAAO,kBACtB,aAAc,OAAO,kBACrB,MAAQjC,GAAM,GAAM,IAAMA,EAAI,GAAK,GACrC,EAAGmC,GAAI,CAACnC,EAAI,KAAO,CACjB,GAAI,OAAOA,GAAK,SACd,MAAO,CACL,GAAGkC,GACH,MAAOlC,CACb,EACE,GAAIA,EAAE,SAAW,CAAC,MAAM,QAAQA,EAAE,OAAO,EACvC,MAAM,IAAI,MAAM,gCAAgC,EAClD,GAAIA,EAAE,aAAe,CAAC,MAAM,QAAQA,EAAE,WAAW,EAC/C,MAAM,IAAI,MAAM,oCAAoC,EACtD,MAAO,CACL,GAAGkC,GACH,GAAGlC,EACH,iBAAkBiC,EACtB,CACA,EACA,eAAeG,GAAEpC,EAAGQ,EAAGC,EAAG,EAAG,CAC3B,OAAO,IAAI,QAAQ,CAACE,EAAGC,IAAM,CAC3B,MAAMC,EAAI,WAAW,IAAM,CACzBJ,GAAKA,EAAE,MAAO,EAAEG,EAAE,IAAIG,GAAEf,CAAC,CAAC,CAChC,EAAO,EAAE,OAAO,EACZ,EAAE,MAAMA,EAAGQ,CAAC,EAAE,KAAKG,CAAC,EAAE,MAAMC,CAAC,EAAE,KAAK,IAAM,CACxC,aAAaC,CAAC,CACpB,CAAK,CACL,CAAG,CACH,CACA,eAAewB,GAAErC,EAAG,CAAE,OAAQQ,CAAC,EAAI,CACjC,OAAO,IAAI,QAAQ,CAACC,EAAG,IAAM,CAC3BD,IAAMA,EAAE,eAAgB,EAAEA,EAAE,iBAAiB,QAASG,EAAG,CAAE,KAAM,EAAE,CAAE,GACrE,SAASA,GAAI,CACX,aAAaC,CAAC,EAAG,EAAEJ,EAAE,MAAM,CAC5B,CACD,MAAMI,EAAI,WAAW,IAAM,CACzBJ,GAAK,MAAQA,EAAE,oBAAoB,QAASG,CAAC,EAAGF,GACjD,EAAET,CAAC,CACR,CAAG,CACH,CACA,MAAMsC,GAAI,CAACtC,EAAGQ,IAAM,CAClB,MAAMC,EAAI,CAAA,EACV,UAAW,KAAKD,EACd,EAAE,KAAKqB,KAAM,EAAE,KAAKD,KAAM,EAAE,KAAK5B,KAAOS,EAAE,CAAC,EAAID,EAAE,CAAC,GACpD,OAAOC,CACT,EACA,MAAM8B,CAAE,CACN,OAAO,OAAO/B,EAAGC,EAAG,CAClB,MAAM,EAAI,IAAI8B,EAAE/B,EAAGC,CAAC,EAAGE,EAAI,SAAY,CACrC,GAAI,OAAO,EAAE,SAAS,SAAW,UAAY,EAAE,SAAS,QAAUe,EAChE,MAAM,IAAI,WAAW,iDAAiDA,CAAC,EAAE,EAC3E,MAAM,QAAQ,UACd,IAAIZ,EAAI,MAAM,EAAE,SAChB,UAAW0B,KAAK,EAAE,SAAS,MAAM,cAAe,CAC9C,MAAMC,EAAI,MAAMD,EAAE,EAAE,QAAS,EAAE,SAAU,EAAE,kBAAkB1B,EAAE,MAAK,CAAE,CAAC,EACvE2B,aAAa,WAAW,WAAa3B,EAAI2B,EAC1C,CACD,GAAI,EAAE,kBAAkB3B,CAAC,EAAG,CAACA,EAAE,IAAM,EAAE,SAAS,gBAAiB,CAC/D,IAAI0B,EAAI,IAAI9B,GAAEI,EAAG,EAAE,QAAS,EAAE,QAAQ,EACtC,UAAW2B,KAAK,EAAE,SAAS,MAAM,YAC/BD,EAAI,MAAMC,EAAED,CAAC,EACf,MAAMA,CACP,CACD,GAAI,EAAE,SAAS,mBAAoB,CACjC,GAAI,OAAO,EAAE,SAAS,oBAAsB,WAC1C,MAAM,IAAI,UAAU,oDAAoD,EAC1E,GAAI,CAAClB,GACH,MAAM,IAAI,MAAM,6EAA6E,EAC/F,OAAO,EAAE,QAAQR,EAAE,MAAO,EAAE,EAAE,SAAS,kBAAkB,CAC1D,CACD,OAAOA,CACb,EAAOD,EAAI,EAAE,SAAS,MAAM,QAAQ,SAAS,EAAE,QAAQ,OAAO,YAAa,CAAA,EAAI,EAAE,OAAOF,CAAC,EAAIA,IACzF,SAAW,CAACG,EAAG0B,CAAC,IAAK,OAAO,QAAQf,EAAC,EACnCZ,EAAEC,CAAC,EAAI,SAAY,CACjB,EAAE,QAAQ,QAAQ,IAAI,SAAU,EAAE,QAAQ,QAAQ,IAAI,QAAQ,GAAK0B,CAAC,EACpE,MAAME,GAAK,MAAM7B,GAAG,MAAK,EACzB,GAAIC,IAAM,OAAQ,CAChB,GAAI4B,EAAE,SAAW,MAAQ,MAAMA,EAAE,QAAQ,eAAe,aAAe,EACrE,MAAO,GACT,GAAIjC,EAAE,UACJ,OAAOA,EAAE,UAAU,MAAMiC,EAAE,KAAM,CAAA,CACpC,CACD,OAAOA,EAAE5B,CAAC,GAClB,EACI,OAAOD,CACR,CAED,YAAYL,EAAGC,EAAI,GAAI,CACrB,GAAI,OAAO,eAAe,KAAM,UAAW,CACzC,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,MACR,CAAA,EAAG,OAAO,eAAe,KAAM,kBAAmB,CACjD,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,MACR,CAAA,EAAG,OAAO,eAAe,KAAM,cAAe,CAC7C,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,CACR,CAAA,EAAG,OAAO,eAAe,KAAM,SAAU,CACxC,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,MACR,CAAA,EAAG,OAAO,eAAe,KAAM,WAAY,CAC1C,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,MACR,CAAA,EAAG,KAAK,OAASD,EAAG,KAAK,SAAW,CAEnC,YAAa,KAAK,OAAO,aAAe,cACxC,GAAGC,EACH,QAASU,GAAE,KAAK,OAAO,QAASV,EAAE,OAAO,EACzC,MAAOS,GAAE,CACP,cAAe,CAAE,EACjB,YAAa,CAAE,EACf,YAAa,CAAE,EACf,cAAe,CAAE,CACzB,EAAST,EAAE,KAAK,EACV,OAAQqB,GAAErB,EAAE,QAAU,KAAK,OAAO,MAAM,EAExC,UAAW,OAAOA,EAAE,WAAa,EAAE,EACnC,MAAO0B,GAAE1B,EAAE,KAAK,EAChB,gBAAiBA,EAAE,kBAAoB,GACvC,QAASA,EAAE,SAAW,IACtB,MAAOA,EAAE,OAAS,WAAW,MAAM,KAAK,UAAU,CACnD,EAAE,OAAO,KAAK,QAAU,UAAY,EAAE,KAAK,kBAAkB,KAAO,KAAK,kBAAkB,WAAW,SACrG,MAAM,IAAI,UAAU,2CAA2C,EACjE,GAAI,KAAK,SAAS,WAAa,OAAO,KAAK,QAAU,SAAU,CAC7D,GAAI,KAAK,OAAO,WAAW,GAAG,EAC5B,MAAM,IAAI,MAAM,4DAA4D,EAC9E,KAAK,SAAS,UAAU,SAAS,GAAG,IAAM,KAAK,SAAS,WAAa,KAAM,KAAK,OAAS,KAAK,SAAS,UAAY,KAAK,MACzH,CACD,GAAIY,GAAG,CACL,GAAI,KAAK,gBAAkB,IAAI,WAAW,gBAAmB,KAAK,SAAS,OAAQ,CACjF,MAAM,EAAI,KAAK,SAAS,OACxB,KAAK,SAAS,OAAO,iBAAiB,QAAS,IAAM,CACnD,KAAK,gBAAgB,MAAM,EAAE,MAAM,CAC7C,CAAS,CACF,CACD,KAAK,SAAS,OAAS,KAAK,gBAAgB,MAC7C,CACD,GAAID,KAAM,KAAK,SAAS,OAAS,QAAS,KAAK,QAAU,IAAI,WAAW,QAAQ,KAAK,OAAQ,KAAK,QAAQ,EAAG,KAAK,SAAS,aAAc,CACvI,MAAMT,EAAI,KAAO,OAAO,KAAK,SAAS,cAAgB,SAAW,KAAK,SAAS,aAAa,QAAQ,MAAO,EAAE,EAAI,IAAI,gBAAgB,KAAK,SAAS,YAAY,EAAE,SAAU,GAAGC,EAAI,KAAK,QAAQ,IAAI,QAAQ,oBAAqBD,CAAC,GAChOY,IAAK,KAAK,SAAS,gBAAgB,WAAW,UAAY,KAAK,SAAS,gBAAgB,kBAAoB,EAAE,KAAK,SAAS,SAAW,KAAK,SAAS,QAAQ,cAAc,IAAM,KAAK,QAAQ,QAAQ,OAAO,cAAc,EAAG,KAAK,QAAU,IAAI,WAAW,QAAQ,IAAI,WAAW,QAAQX,EAAG,CAAE,GAAG,KAAK,QAAS,EAAG,KAAK,QAAQ,CACnU,CACD,KAAK,SAAS,OAAS,SAAW,KAAK,SAAS,KAAO,KAAK,UAAU,KAAK,SAAS,IAAI,EAAG,KAAK,QAAQ,QAAQ,IAAI,eAAgB,KAAK,SAAS,QAAQ,IAAI,cAAc,GAAK,kBAAkB,EAAG,KAAK,QAAU,IAAI,WAAW,QAAQ,KAAK,QAAS,CAAE,KAAM,KAAK,SAAS,IAAM,CAAA,EACvR,CACD,qBAAqBJ,EAAG,CACtB,GAAI,KAAK,cAAe,KAAK,aAAe,KAAK,SAAS,MAAM,OAAS,EAAEA,aAAaO,IAAI,CAC1F,GAAIP,aAAaE,GAAG,CAClB,GAAI,CAAC,KAAK,SAAS,MAAM,YAAY,SAASF,EAAE,SAAS,MAAM,EAC7D,MAAO,GACT,MAAM,EAAIA,EAAE,SAAS,QAAQ,IAAI,aAAa,EAC9C,GAAI,GAAK,KAAK,SAAS,MAAM,iBAAiB,SAASA,EAAE,SAAS,MAAM,EAAG,CACzE,IAAIG,EAAI,OAAO,CAAC,EAChB,OAAO,OAAO,MAAMA,CAAC,EAAIA,EAAI,KAAK,MAAM,CAAC,EAAI,KAAK,IAAG,EAAKA,GAAK,IAAK,KAAK,SAAS,MAAM,gBAAkB,QAAUA,EAAI,KAAK,SAAS,MAAM,cAAgB,EAAIA,CACjK,CACD,GAAIH,EAAE,SAAS,SAAW,IACxB,MAAO,EACV,CACD,MAAMC,EAAI,KAAK,SAAS,MAAM,MAAM,KAAK,WAAW,EACpD,OAAO,KAAK,IAAI,KAAK,SAAS,MAAM,aAAcA,CAAC,CACpD,CACD,MAAO,EACR,CACD,kBAAkBD,EAAG,CACnB,OAAO,KAAK,SAAS,YAAcA,EAAE,KAAO,SAAY,KAAK,SAAS,UAAU,MAAMA,EAAE,KAAI,CAAE,GAAIA,CACnG,CACD,MAAM,OAAOA,EAAG,CACd,GAAI,CACF,OAAO,MAAMA,EAAC,CACf,OAAQC,EAAG,CACV,MAAM,EAAI,KAAK,IAAI,KAAK,qBAAqBA,CAAC,EAAGiB,CAAC,EAClD,GAAI,IAAM,GAAK,KAAK,YAAc,EAAG,CACnC,MAAMW,GAAE,EAAG,CAAE,OAAQ,KAAK,SAAS,MAAM,CAAE,EAC3C,UAAW1B,KAAK,KAAK,SAAS,MAAM,YAClC,GAAI,MAAMA,EAAE,CACV,QAAS,KAAK,QACd,QAAS,KAAK,SACd,MAAOF,EACP,WAAY,KAAK,WAClB,CAAA,IAAMkB,GACL,OACJ,OAAO,KAAK,OAAOnB,CAAC,CACrB,CACD,MAAMC,CACP,CACF,CACD,MAAM,QAAS,CACb,UAAWA,KAAK,KAAK,SAAS,MAAM,cAAe,CACjD,MAAM,EAAI,MAAMA,EAAE,KAAK,QAAS,KAAK,QAAQ,EAC7C,GAAI,aAAa,QAAS,CACxB,KAAK,QAAU,EACf,KACD,CACD,GAAI,aAAa,SACf,OAAO,CACV,CACD,MAAMD,EAAI8B,GAAE,KAAK,QAAS,KAAK,QAAQ,EACvC,OAAO,KAAK,SAAS,UAAY,GAAK,KAAK,SAAS,MAAM,KAAK,QAAQ,MAAK,EAAI9B,CAAC,EAAI4B,GAAE,KAAK,QAAQ,MAAK,EAAI5B,EAAG,KAAK,gBAAiB,KAAK,QAAQ,CACpJ,CAED,QAAQA,EAAGC,EAAG,CACZ,MAAM,EAAI,OAAOD,EAAE,QAAQ,IAAI,gBAAgB,CAAC,GAAK,EACrD,IAAIG,EAAI,EACR,OAAOH,EAAE,SAAW,KAAOC,GAAKA,EAAE,CAAE,QAAS,EAAG,WAAY,EAAG,iBAAkBE,CAAG,EAAE,IAAI,UAAY,EAAG,IAAI,WAAW,SAAS,KAAM,CACrI,OAAQH,EAAE,OACV,WAAYA,EAAE,WACd,QAASA,EAAE,OACZ,CAAA,GAAK,IAAI,WAAW,SAAS,IAAI,WAAW,eAAe,CAC1D,MAAM,MAAMI,EAAG,CACb,MAAMC,EAAIL,EAAE,KAAK,UAAS,EAC1BC,GAAKA,EAAE,CAAE,QAAS,EAAG,iBAAkB,EAAG,WAAY,CAAC,EAAI,IAAI,UAAY,EAC3E,eAAeK,GAAI,CACjB,KAAM,CAAE,KAAM0B,EAAG,MAAOC,CAAC,EAAK,MAAM5B,EAAE,OACtC,GAAI2B,EAAG,CACL5B,EAAE,MAAK,EACP,MACD,CACD,GAAIH,EAAG,CACLE,GAAK8B,EAAE,WACP,MAAMC,EAAI,IAAM,EAAI,EAAI/B,EAAI,EAC5BF,EAAE,CAAE,QAASiC,EAAG,iBAAkB/B,EAAG,WAAY,GAAK8B,CAAC,CACxD,CACD7B,EAAE,QAAQ6B,CAAC,EAAG,MAAM3B,EAAC,CACtB,CACD,MAAMA,EAAC,CACR,CACP,CAAK,EAAG,CACF,OAAQN,EAAE,OACV,WAAYA,EAAE,WACd,QAASA,EAAE,OACjB,CAAK,CACF,CACH,CACA,kCACA,MAAMmC,EAAK3C,GAAM,CACf,MAAMQ,EAAI,CAACC,EAAG,IAAM8B,EAAE,OAAO9B,EAAGQ,EAAEjB,EAAG,CAAC,CAAC,EACvC,UAAWS,KAAKe,GACdhB,EAAEC,CAAC,EAAI,CAAC,EAAGE,IAAM4B,EAAE,OAAO,EAAGtB,EAAEjB,EAAGW,EAAG,CAAE,OAAQF,CAAG,CAAA,CAAC,EACrD,OAAOD,EAAE,OAAUC,GAAMkC,EAAE1B,EAAER,CAAC,CAAC,EAAGD,EAAE,OAAUC,GAAMkC,EAAE1B,EAAEjB,EAAGS,CAAC,CAAC,EAAGD,EAAE,KAAOmB,GAAGnB,CAC9E,EAAGoC,GAAID,IACP,IAAIE,EACC,MAACC,EAAI,CACR,aAAc,GAAG1C,EAAE,WAAW,0BAC9B,SAAU,GAAGA,EAAE,WAAW,mCAC1B,MAAO,GAAGA,EAAE,WAAW,2BACvB,IAAK,GAAGA,EAAE,WAAW,mBACrB,mBAAoB,GAAGA,EAAE,WAAW,uBACpC,UAAW,GAAGA,EAAE,cAAc,cAC9B,SAAU,GAAGA,EAAE,WAAW,WAC5B,EAAG2C,GAAI,OAAO,OAAS,IAAM,CAAA,EAAK,CAAE,SAAU,0BAA2B,QAAS,yBAA2B,EAAEC,GAAI,IAAMH,IAAMA,EAAID,GAAE,OAAO,CAAE,QAASG,EAAC,CAAE,EAAGF,GAAI,GAAK,CAAC,CAAE,OAAQ7C,EAAG,GAAGQ,CAAC,IAAO,CAC7LqC,EAAID,GAAE,OAAO,CACX,GAAGpC,EACH,QAAS,CAAE,GAAGuC,GAAG,GAAGvC,EAAE,QAAS,YAAaR,CAAG,CACnD,CAAG,CACH,EAAGiD,EAAI,CACL,IAAK,CAACjD,EAAGQ,IAAMwC,GAAC,EAAG,IAAIhD,EAAGQ,CAAC,EAAE,KAAM,EACnC,KAAM,CAACR,EAAGQ,IAAMwC,GAAC,EAAG,KAAKhD,EAAGQ,CAAC,EAAE,KAAM,CACvC,EAAG0C,GAAI,CAAC,CAAE,OAAQlD,EAAG,GAAGQ,KAAQ,CAC9B,MAAMC,EAAI,IAAI,gBACd,OAAOT,EAAE,OAAO,CAAC,EAAGW,EAAGC,IAAMA,EAAE,UAAWC,GAAMA,IAAM,CAAC,IAAMF,CAAC,EAAE,QAAS,GAAMF,EAAE,OAAO,SAAU,KAAK,UAAU,CAAC,CAAC,CAAC,EAAGD,EAAE,UAAYC,EAAE,OAAO,WAAY,MAAM,EAAGD,EAAE,QAAUC,EAAE,OAAO,SAAU,MAAM,EAAGD,EAAE,WAAaC,EAAE,OAAO,YAAa,MAAM,EAAGwC,EAAE,KAAKH,EAAE,aAAc,CAC9Q,KAAMrC,EAAE,SAAU,EAClB,QAAS,CAAE,eAAgB,mCAAqC,CACpE,CAAG,CACH,EAAG0C,GAAK,CACN,gBAAiBD,GACjB,SAAWlD,GAAMiD,EAAE,IAAIH,EAAE,MAAO,CAAE,aAAc9C,EAAG,EACnD,YAAa,IAAMiD,EAAE,IAAIH,EAAE,QAAQ,EACnC,cAAgB9C,GAAMiD,EAAE,IAAIH,EAAE,IAAK,CAAE,aAAc9C,EAAG,EACtD,sBAAuB,IAAMiD,EAAE,IAAIH,EAAE,kBAAkB,EACvD,aAAe9C,GAAMiD,EAAE,IAAI,GAAGH,EAAE,SAAS,IAAI9C,CAAC,OAAO,EACrD,qBAAuBA,GAAMiD,EAAE,IAAI,GAAGH,EAAE,QAAQ,IAAI9C,CAAC,EAAE,EACvD,4BAA8BA,GAAMiD,EAAE,IAAI,GAAGH,EAAE,QAAQ,WAAW9C,CAAC,EAAE,EACrE,mBAAoB,CAACA,EAAGQ,IAAMyC,EAAE,IAAI,GAAGH,EAAE,QAAQ,WAAY,CAAE,aAAc,CAAE,QAAS9C,EAAG,MAAOQ,CAAC,EAAI,CACzG,EACG,IAAC4C,IAAsBpD,IAAOA,EAAE,cAAgB,aAAcA,EAAE,eAAiB,gBAAiBA,EAAE,eAAiB,gBAAiBA,EAAE,gBAAkB,mBAAoBA,EAAE,gBAAkB,eAAgBA,EAAE,gBAAkB,eAAgBA,EAAE,kBAAoB,iBAAkBA,EAAE,iBAAmB,gBAAiBA,EAAE,iBAAmB,gBAAiBA,EAAE,gBAAkB,eAAgBA,EAAE,gBAAkB,eAAgBA,EAAE,eAAiB,cAAeA,EAAE,eAAiB,cAAeA,EAAE,eAAiB,cAAeA,EAAE,eAAiB,cAAeA,EAAE,eAAiB,cAAeA,EAAE,eAAiB,cAAeA,EAAE,eAAiB,cAAeA,EAAE,eAAiB,cAAeA,EAAE,gBAAkB,eAAgBA,EAAE,gBAAkB,eAAgBA,EAAE,UAAY,YAAaA,EAAE,YAAc,cAAeA,EAAE,WAAa,aAAcA,EAAE,QAAU,UAAWA,EAAE,UAAY,YAAaA,EAAE,UAAY,kBAAmBA,EAAE,eAAiB,cAAeA,EAAE,cAAgB,gBAAiBA,EAAE,cAAgB,gBAAiBA,EAAE,cAAgB,gBAAiBA,EAAE,eAAiB,gBAAiBA,EAAE,oBAAsB,qBAAsBA,EAAE,gBAAkB,iBAAkBA,EAAE,iBAAmB,kBAAmBA,EAAE,aAAe,eAAgBA,EAAE,WAAa,aAAcA,EAAE,mBAAqB,kBAAmBA,EAAE,qBAAuB,mBAAoBA,EAAE,cAAgB,gBAAiBA,EAAE,YAAc,cAAeA,EAAE,oBAAsB,mBAAoBA,EAAE,sBAAwB,oBAAqBA,EAAE,aAAe,eAAgBA,EAAE,WAAa,aAAcA,EAAE,mBAAqB,kBAAmBA,EAAE,qBAAuB,mBAAoBA,EAAE,SAAW,WAAYA,EAAE,OAAS,SAAUA,EAAE,eAAiB,cAAeA,EAAE,iBAAmB,eAAgBA,EAAE,YAAc,cAAeA,EAAE,WAAa,aAAcA,IAAIoD,IAAK,EAAE,EAAGC,IAAuBrD,IAAOA,EAAE,QAAU,UAAWA,EAAE,QAAU,UAAWA,EAAE,UAAY,YAAaA,EAAE,SAAW,WAAYA,EAAE,SAAW,WAAYA,EAAE,MAAQ,QAASA,EAAE,QAAU,UAAWA,EAAE,YAAc,cAAeA,EAAE,UAAY,YAAaA,EAAE,iBAAmB,mBAAoBA,EAAE,UAAY,YAAaA,IAAIqD,IAAM,CAAE,CAAA,EAAGC,IAAuBtD,IAAOA,EAAEA,EAAE,YAAc,CAAC,EAAI,cAAeA,EAAEA,EAAE,QAAU,CAAC,EAAI,UAAWA,EAAEA,EAAE,SAAW,CAAC,EAAI,WAAYA,IAAIsD,IAAM,CAAE,CAAA,ECpZt0E,MAAMC,GAAsB,aAStBC,GAAsB,MAAO,CAAE,MAAAC,EAAO,GAAAC,KAA0C,CAChF,GAAA,CACI,KAAA,CAAE,OAAAC,GAAW,MAAMC,EAAc,KAAyBC,EAAAA,WAAWJ,CAAK,EAAG,CACjF,QAAS,CACP,OAAQ,MACR,eAAgB,mBAChB,gBAAiB,UACnB,EACA,KAAM,KAAK,UAAU,CACnB,GAAI,GACJ,QAAS,MACT,OAAQ,WACR,OAAQ,CAAC,CAAE,GAAIC,EAAG,cAAe,KAAMH,EAAoB,EAAG,QAAQ,CAAA,CACvE,CAAA,CACF,EAED,OAAO,SAAS,OAAOI,CAAM,EAAE,SAAU,CAAA,QAClCG,EAAO,CACd,eAAQ,MAAMA,CAAK,EACZC,EAAAA,YAAYN,CAAK,CAC1B,CACF,EAEMO,GAAqB,MAAOC,GAAmB,CACnD,GAAIA,IAAWC,EAAAA,MAAM,SAAU,OAAOH,EAAAA,YAAY,IAClD,KAAM,CAAG,CAAAI,CAAO,EAAIF,EAAO,MAAM,GAAG,EAEpC,OAAOE,GAAA,MAAAA,EAAS,WAAW,MACvBX,GAAoB,CAAE,MAAOU,QAAM,SAAU,GAAIC,CAAS,CAAA,EAC1DJ,EAAAA,YAAY,GAClB,EAEMK,GAAsB,MAAOH,GAAmB,CACpD,KAAM,CAAG,CAAAE,CAAO,EAAIF,EAAO,MAAM,GAAG,EAEpC,OAAOE,GAAA,MAAAA,EAAS,WAAW,MACvBX,GAAoB,CAAE,MAAOU,EAAAA,MAAM,UAAW,GAAIC,EAAQ,YAAc,CAAA,CAAC,EACzEJ,EAAY,YAAA,IAClB,EAEMM,GAAqB,MAAOJ,IAC5BA,IAAWC,EAAAA,MAAM,kBAA0BH,EAAAA,YAAY,KAKhDO,GAAa,MAAO,CAAE,MAAAb,EAAO,OAAAQ,KAA+C,CACvF,OAAQR,EAAO,CACb,KAAKS,EAAM,MAAA,SACT,OAAOF,GAAmBC,CAAM,EAClC,KAAKC,EAAM,MAAA,UACT,OAAOE,GAAoBH,CAAM,EACnC,KAAKC,EAAM,MAAA,kBACT,OAAOG,GAAmBJ,CAAM,EAClC,QACE,OAAOF,EAAAA,YAAYN,CAAK,CAC5B,CACF,EAEac,GAA8C,CACzD,CAACC,EAAAA,UAAU,OAAO,EAAG,IACrB,CAACA,EAAAA,UAAU,IAAI,EAAG,IAClB,CAACA,EAAAA,UAAU,OAAO,EAAG,CACvB,EAEaC,GAAa,CAAC,CAAE,MAAAhB,EAAO,OAAAQ,KAA+C,CACjF,OAAQR,EAAO,CACb,KAAKS,EAAAA,MAAM,SACX,KAAKA,EAAM,MAAA,SACT,OAAOD,IAAW,MACpB,KAAKC,EAAM,MAAA,KACT,OAAOD,IAAW,QACpB,KAAKC,EAAM,MAAA,OACT,OAAOD,IAAW,OACpB,KAAKC,EAAM,MAAA,OACT,OAAOD,IAAW,OACpB,KAAKC,EAAM,MAAA,QACT,OAAOD,IAAW,QACpB,KAAKC,EAAM,MAAA,kBACT,OAAOD,IAAW,MACpB,KAAKC,EAAM,MAAA,UACT,OAAOD,IAAW,OAEpB,QACE,OAAOA,IAAWR,CACtB,CACF,EAEaiB,GACXC,GAC4C,CAC5C,OAAQA,EAAa,CACnB,IAAK,GAAGT,EAAAA,MAAM,QAAQ,QACpB,MAAO,CAAE,WAAY,sDAAuD,QAAS,EAAG,EAC1F,IAAK,GAAGA,EAAAA,MAAM,QAAQ,SACpB,MAAO,CAAE,WAAY,uDAAwD,QAAS,EAAG,EAE3F,KAAKA,EAAM,MAAA,OACT,MAAO,CAAE,WAAY,YAAa,QAASH,EAAA,YAAYY,CAAW,GACpE,KAAKT,EAAM,MAAA,UACT,MAAO,CAAE,WAAY,YAAa,QAASH,EAAA,YAAYY,CAAW,GACpE,KAAKT,EAAM,MAAA,kBACT,MAAO,CAAE,WAAY,UAAW,QAASH,EAAA,YAAYY,CAAW,GAClE,KAAKT,EAAM,MAAA,KACT,MAAO,CAAE,WAAY,aAAc,QAASH,cAAY,IAAK,EAC/D,IAAK,GAAGG,EAAAA,MAAM,IAAI,QAChB,MAAO,CAAE,WAAY,YAAa,QAAS,CAAE,EAE/C,IAAK,GAAGA,EAAAA,MAAM,MAAM,OAClB,MAAO,CAAE,WAAY,GAAGA,QAAM,MAAM,OAAQ,QAAS,GAEvD,QACS,MAAA,CAAE,WAAY,GAAGS,CAAW,IAAIA,CAAW,GAAI,QAASZ,cAAYY,CAAW,CAAE,CAC5F,CACF,EAEaC,GAAe,CAAC,CAAE,MAAAnB,EAAO,OAAAQ,KAA+C,CAC/E,GAAAA,EAAO,SAAS,GAAG,EAAU,MAAA,QAEjC,OAAQR,EAAO,CACb,KAAKS,EAAM,MAAA,OACF,OAAAD,IAAW,OAAS,SAAWC,EAAAA,MAAM,OAC9C,KAAKA,EAAM,MAAA,OACT,OAAOD,IAAWC,EAAAA,MAAM,OAAS,SAAWA,EAAAA,MAAM,OACpD,KAAKA,EAAM,MAAA,QACF,OAAAD,IAAWC,EAAM,MAAA,QAAU,SAAW,OAC/C,KAAKA,EAAM,MAAA,kBACF,OAAAD,IAAWC,EAAM,MAAA,QAAU,SAAW,QAC/C,KAAKA,EAAM,MAAA,SACF,OAAAD,IAAWC,EAAM,MAAA,SAAW,SAAW,QAChD,KAAKA,EAAM,MAAA,UACT,OAAOD,IAAWC,EAAAA,MAAM,UAAY,SAAWA,EAAAA,MAAM,UACvD,KAAKA,EAAM,MAAA,QACF,OAAAD,IAAWC,EAAM,MAAA,QAAU,SAAW,UAE/C,KAAKA,EAAM,MAAA,SACF,MAAA,CAACA,EAAAA,MAAM,SAAUA,QAAM,QAAQ,EAAE,SAASD,CAAe,EAAI,SAAW,WACjF,KAAKC,EAAM,MAAA,SACF,MAAA,CAACA,EAAAA,MAAM,SAAUA,QAAM,QAAQ,EAAE,SAASD,CAAe,EAAI,SAAW,WAEjF,QACS,MAAA,QACX,CACF,EAEaY,GAAmBF,GAAwB,OACtD,KAAM,CAAClB,EAAO,GAAGqB,CAAW,EAAIH,EAAY,MAAM,GAAG,EAC/CI,EAAQJ,EAAY,SAAS,GAAG,EAChCV,EAASa,EAAY,KAAK,GAAG,EAC7BE,GAASC,EAAAhB,GAAA,YAAAA,EAAQ,MAAM,OAAd,YAAAgB,EAAqB,GAEpC,MAAO,CAAE,MAAAxB,EAAO,OAAAQ,EAAQ,OAAAe,EAAQ,MAAAD,CAAM,CACxC,EAEMG,GAAqB,IAAI,OAC7B,qEACA,KACF,EAEMC,GAAsBR,GAAwB,CAClD,KAAM,CAAClB,EAAOQ,CAAM,EAAIU,EAAY,MAAM,GAAG,EACzC,GAAA,CAACS,EAAAA,aAAa,SAAS3B,CAAiB,EAAU,MAAA,GACtD,KAAM,CAAG,CAAAU,CAAO,EAAIF,EAAO,MAAM,GAAG,EAEpC,OAAOQ,GAAW,CAAE,MAAAhB,EAAuB,OAAAQ,EAAQ,GAAK,CAAC,CAACE,CAC5D,EAEakB,GACXC,GAOAA,EAAO,OAAO,CAAC,CAAE,MAAA7B,EAAO,MAAA8B,EAAO,OAAAtB,KAAa,CAC1C,MAAMU,EAAc,GAAGlB,CAAK,IAAIQ,CAAM,GAGpC,MAAA,CAACiB,GAAmB,KAAKP,CAAW,GAAKQ,GAAmBR,CAAW,GAAKY,IAAU,GAE1F,CAAC,ECvKI,SAASC,GAAuB,CACrC,eAAAC,EACA,UAAAC,EACA,UAAAC,CACF,EAAuC,CAC/B,MAAAlF,EAAImF,EAAkBH,CAAc,EACpCxE,EAAI2E,EAAkBF,CAAS,EAC/BjD,EAAImD,EAAkBD,CAAS,EAE/BE,EAAQpF,EAAE,IAAIgC,CAAC,EACfqD,EAAQ7E,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EACtB8E,EAAQ9E,EAAE,IAAIR,CAAC,EAAE,IAAI,CAAC,EACtBuF,EAAQvF,EAAE,IAAIA,CAAC,EACfwF,EAAQhF,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,EAIrB,OAFW4E,EAAM,IAAIC,EAAM,IAAIC,CAAK,EAAE,IAAIC,CAAK,CAAC,EAEtC,IAAIC,CAAK,CAC5B,CAEO,SAASC,GAAwB,CACtC,eAAAT,EACA,UAAAC,EACA,WAAAS,CACF,EAAwC,CAChC,MAAA1F,EAAImF,EAAkBH,CAAc,EACpCxE,EAAI2E,EAAkBF,CAAS,EAC/BjD,EAAImD,EAAkBO,CAAU,EAEhCN,EAAQpF,EAAE,IAAIgC,CAAC,EACfqD,EAAQ7E,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EACtB8E,EAAQ9E,EAAE,IAAIR,CAAC,EAAE,IAAI,CAAC,EACtBuF,EAAQvF,EAAE,IAAIA,CAAC,EACf2F,EAAYP,EAAM,IAAIC,EAAM,IAAIC,CAAK,EAAE,IAAIC,CAAK,CAAC,EACjDC,EAAQhF,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,EAErB,OAAAmF,EAAU,IAAIH,CAAK,CAC5B,CAEO,SAASI,GAAgC,CAC9C,QAAAC,EACA,UAAAX,EACA,eAAAF,EACA,UAAAC,CACF,EAAwD,CAC/C,OAAAF,GAAuB,CAAE,UAAAG,EAAW,eAAAF,EAAgB,UAAAC,EAAW,EAAE,IAAIY,CAAO,CACrF,CAEO,SAASC,GAAiC,CAC/C,QAAAD,EACA,WAAAH,EACA,eAAAV,EACA,UAAAC,CACF,EAAyD,CAChD,OAAAQ,GAAwB,CAAE,WAAAC,EAAY,eAAAV,EAAgB,UAAAC,EAAW,EAAE,IAAIY,CAAO,CACvF,CAEA,SAASV,EAAkBL,EAAe,CACxC,OAAOiB,EAAc,WAAW,OAAOjB,CAAK,EAAGxB,EAAAA,YAAY,IAAI,CACjE,CAEO,SAAS0C,GAAsB,CACpC,eAAAhB,EACA,UAAAC,EACA,UAAAC,EACA,WAAAQ,CACF,EAGI,CACK,MAAA,CACL,YAAaP,EAAkBO,CAAU,EAAE,IAAIV,CAAc,EAAE,IAAIC,CAAS,EAC5E,WAAYE,EAAkBD,CAAS,EAAE,IAAIF,CAAc,EAAE,IAAIC,CAAS,CAAA,CAE9E,CAEO,SAASgB,GAAqB,CACnC,eAAAjB,EACA,UAAAC,EACA,UAAAC,EACA,WAAAQ,EACA,QAAAG,CACF,EAII,CACF,OAAO,OAAO,YACZ,OAAO,QAAQG,GAAsB,CAAE,eAAAhB,EAAgB,UAAAC,EAAW,UAAAC,EAAW,WAAAQ,EAAY,CAAC,EAAE,IAC1F,CAAC,CAACQ,EAAMpB,CAAK,IAAM,CAACoB,EAAMpB,EAAM,IAAIe,CAAO,CAAC,CAC9C,CAAA,CAEJ,CAEO,SAASM,GAAsB,CACpC,UAAAjB,EACA,UAAAD,EACA,WAAAS,EACA,eAAAV,EACA,WAAAoB,EACA,YAAAC,CACF,EAKI,CACI,MAAApE,EAAI,IAAI8D,EAAc,CAAE,MAAOb,EAAW,QAAS,EAAG,EACtDlD,EAAI,IAAI+D,EAAc,CAAE,MAAOL,EAAY,QAAS,EAAG,EACvDjE,EAAI,IAAIsE,EAAc,CAAE,MAAOd,EAAW,QAAS,EAAG,EACtDqB,EAAgB,IAAIP,EAAc,CAAE,MAAOK,EAAY,QAAS,EAAG,EACnEG,EAAiB,IAAIR,EAAc,CAAE,MAAOM,EAAa,QAAS,EAAG,EAGrEG,EAAKF,EAAc,IAAItE,CAAC,EACxByE,GAAKF,EAAe,IAAItE,CAAC,EACzByE,GAAKJ,EAAc,IAAIC,CAAc,EACrCI,GAAK1E,EAAE,IAAID,CAAC,EACZ2D,GAAYlE,EAAE,IAAI+E,EAAG,IAAIC,GAAG,IAAIC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAC3CE,GAAcJ,EAAG,IAAIC,GAAG,IAAIE,GAAG,IAAI,CAAC,CAAC,CAAC,EACtCE,GAAyBlB,GAAU,IAAIiB,EAAW,EAClDE,EAA0B3B,EAAkBH,CAAc,EAAE,IAAI6B,EAAsB,EAE5F,GAAIA,GAAuB,aAAa,QAAQ,IAAM,EACpD,OAAOC,EAAwB,IAAIrF,CAAC,EAAE,aAAa,QAAQ,EAIvD,MAAAsF,GAAetF,EAAE,IAAIqF,CAAuB,EAElD,OAAOA,EAAwB,IAAIC,EAAY,EAAE,aAAa,QAAQ,CACxE,CAEO,SAASC,GAAqB,CACnC,WAAAZ,EACA,YAAAC,EACA,UAAAnB,EACA,WAAAQ,CACF,EAAe,CACb,GAAIU,IAAe,KAAOC,IAAgB,KAAOnB,IAAc,KAAOQ,IAAe,IAC5E,MAAA,GAEH,MAAAzD,EAAIkD,EAAkBD,CAAS,EAC/B1E,EAAI2E,EAAkBO,CAAU,EAChCa,EAAiBpB,EAAkBkB,CAAW,EAC9CC,EAAgBnB,EAAkBiB,CAAU,EAE5CT,EAAYY,EAAe,IAAItE,CAAC,EAAE,IAAIzB,EAAE,IAAI8F,CAAa,CAAC,EAC1DM,EAAcpG,EAAE,IAAI8F,CAAa,EAAE,IAAIrE,EAAE,IAAIzB,CAAC,CAAC,EAG9C,OAAA,KAAK,IAAImF,EAAU,IAAIiB,CAAW,EAAE,aAAa,QAAQ,CAAC,CACnE,CCpJa,MAAAK,GAAa,CAAqBC,EAAaC,IAA4B,CACtF,OAAQD,EAAU,CAChB,KAAKE,EAAAA,SAAS,MACd,KAAKA,EAAAA,SAAS,KAAM,CACZ,KAAA,CAAE,QAAA1D,CAAY,EAAAyD,EACb,MAAA,GAAGD,CAAQ,IAAIxD,CAAO,EAC/B,CAEA,KAAK0D,EAAAA,SAAS,OAAQ,CACd,KAAA,CAAE,QAAA1D,EAAS,aAAA2D,CAAiB,EAAAF,EAClC,MAAO,GAAGD,CAAQ,IAAIxD,CAAO,IAAI2D,CAAY,EAC/C,CAEA,KAAKD,EAAAA,SAAS,kBAAmB,CAC/B,KAAM,CAAE,KAAAlB,EAAM,MAAAlD,EAAO,QAAAU,EAAS,MAAA4D,GAAUH,EACxC,MAAO,GAAGD,CAAQ,IAAIhB,CAAI,IAAIlD,CAAK,IAAIU,CAAO,GAAG4D,EAAQ,IAAIA,CAAK,GAAK,EAAE,EAC3E,CAEA,KAAKF,EAAAA,SAAS,QAAS,CACrB,KAAM,CAAE,MAAApE,EAAO,OAAAQ,EAAQ,QAAAE,EAAS,WAAA6D,GAAeJ,EAe/C,OAAOI,EACH,GAAGL,CAAQ,IAAIlE,CAAK,IAAIQ,CAAM,GAC9B,GAAG0D,CAAQ,KAfW,CAAClE,EAAcQ,IAA2B,CAClE,OAAQR,EAAO,CACb,KAAKS,EAAM,MAAA,SACF,MAAA,IACT,KAAKA,EAAM,MAAA,SACF,MAAA,IACT,KAAKA,EAAM,MAAA,YACF,MAAA,IACT,QACS,MAAA,GAAGT,CAAK,IAAIQ,CAAM,EAC7B,CAAA,GAKmCR,EAAOQ,CAAM,CAAC,IAAIE,GAAW,EAAE,EACtE,CAEA,KAAK0D,EAAAA,SAAS,SAAU,CACtB,KAAM,CAAE,MAAApE,EAAO,OAAAuB,EAAQ,OAAAf,EAAQ,YAAAgE,EAAa,kBAAAC,EAAmB,WAAAF,CAC7D,EAAAJ,EAEIO,EACJ1E,IAAU,OAASuB,IAAW,MAAQ,GAAGA,CAAM,IAAIf,EAAO,MAAM,EAAE,CAAC,GAAKA,EACpEmE,EAAS,CAACJ,GAAcE,EAAoB,IAAIA,CAAiB,GAAK,GAGrE,MAAA,GAAGP,CAAQ,IAAIlE,CAAK,GAFNuE,EAAa,IAAM,GAEE,GAAGG,CAAe,IAAIF,CAAW,GAAGG,CAAM,EACtF,CAEA,KAAKP,EAAAA,SAAS,UACd,KAAKA,EAAAA,SAAS,WAAY,CAClB,KAAA,CAAE,MAAAQ,EAAO,QAAAlE,CAAY,EAAAyD,EAE3B,MAAO,GAAGD,CAAQ,IAAIU,CAAK,IAAIlE,CAAO,EACxC,CAEA,QACS,MAAA,EACX,CACF,EC1FO,SAASmE,GAAgBC,EAAc,CAC5C,GAAIA,EAAO,EAAS,MAAA,IAAI,MAAM,wBAAwB,EACtD,MAAO,IAAKA,CACd,CAEO,SAASC,GAAiB7B,EAAc,CAC7C,GAAIA,EAAK,OAAS,GAAW,MAAA,GAE7B,MAAM8B,EAAQ,qBAEd,MAAO,CAAC,CAAC9B,EAAK,MAAM8B,CAAK,CAC3B,CAEO,SAASC,GAAuB,CAACC,EAASC,EAASC,EAASC,EAAQC,CAAK,EAAa,CAG3F,MAAO,GAAGJ,CAAO,KAAKC,CAAO,KAAKC,CAAO,KAAKC,CAAM,GAFlC,OAAOC,GAAU,SAEgC,GAAK,IAAIA,CAAK,EAAE,EACrF,CChBA,MAAMC,GAAkB,CAAC,GAAG,OAAO,OAAO9E,EAAK,KAAA,EAAG,OAAO,EAEzC,SAAA+E,GAAmBC,EAAa,GAAI,CAC5C,MAAAC,EAAuBD,EAAW,cAElC,CAACzF,CAAK,EAAI0F,EAAqB,MAAM,GAAG,EAC1C,GAAAH,GAAgB,SAASvF,CAAK,EAAU,MAAA,GAE5C,KAAM,CAAC2F,CAAU,EAAID,EAAqB,MAAM,GAAG,EAC/C,GAAAH,GAAgB,SAASI,CAAU,EAAU,MAAA,GAEjD,MAAM,IAAI,MACR,uBAAuBF,CAAU,2EAAA,CAErC,CCFA,MAAMG,EAAkB,EAClBC,EAAgBC,GAAoB,KAAO,OAAOA,CAAO,EACzDC,EAAyBC,GAAuB,KAAK,MAAM,WAAWA,EAAW,SAAU,CAAA,CAAC,EAE3F,SAASC,EAAwB,CACtC,MAAAnE,EACA,cAAAoE,EAAgBN,EAChB,QAAAE,EAAUF,CACZ,EAIG,CACD,GAAIE,IAAY,EAAG,OAAOhE,EAAM,WAChC,MAAMqE,EAAarE,EAAQ,GAC3B,IAAIsE,EAActE,EAAM,WAAW,UAAUqE,EAAa,EAAI,CAAC,EAEzD,MAAAE,EAAYP,GAAWM,EAAY,OAAS,GAE9CC,EAAY,IACAD,EAAA,IAAI,OAAOC,CAAS,EAAID,GAGlC,MAAAE,EAAeF,EAAY,OAASN,EAC1C,IAAIS,EAAgBH,EAAY,MAAM,CAACN,CAAO,EAG9C,OAAI,SAASS,EAAcL,CAAa,CAAC,GAAK,EAE5CK,EAAgB,GAAGA,EAAc,UAAU,EAAGL,EAAgB,CAAC,CAAC,IAC9D,SAASK,EAAcL,EAAgB,CAAC,CAAC,EAAI,GAC7C,SAAU,CAAA,GAGIK,EAAAA,EAAc,UAAU,EAAGL,CAAa,EAGnD,GAAGC,EAAa,IAAM,EAAE,GAAGC,EAAY,MAAM,EAAGE,CAAY,CAAC,IAAIC,CAAa,GAAG,QACtF,SACA,EAAA,CAEJ,0BAEO,MAAMC,GAAN,MAAMA,EAAkB,CA2B7B,YAAYC,EAAwB,CAgNpCC,EAAA,KAAAC,GAmDAD,EAAA,KAAAE,GAmBAF,EAAA,KAAAG,GAKAH,EAAA,KAAAI,GAeAJ,EAAA,KAAAK,GApUAC,EAAA,yBAA4B,KAAO,IACnCA,EAAA,mBAAsB,IACtBA,EAAA,gBAyBQ,MAAAlF,EAAQmF,EAAeR,CAAM,EAC7BS,EAAY,OAAOT,GAAW,SAC/B,KAAA,QAAUS,EAAYT,EAAO,QAAU,OAG5C,KAAK,kBACHS,GAAa,sBAAuBT,EAChCA,EAAO,kBACPZ,EAAa,KAAK,IAAIsB,GAAiBC,EAAYtF,CAAK,CAAC,EAAG,KAAK,SAAW,CAAC,CAAC,EACpFuF,EAAA,KAAKR,EAAAS,IAAL,UAAexF,EACjB,CAjCA,OAAO,WAAWA,EAAegE,EAAkB,CACjD,OAAO,IAAIU,GAAkB,CAC3B,QAAAV,EACA,MAAOG,EAAwB,CAAE,MAAAnE,EAAO,cAAegE,EAAS,QAAAA,EAAS,CAAA,CAC1E,CACH,CAEA,OAAO,cAAc,CACnB,MAAAhE,EACA,KAAAyF,EACA,GAAAtH,CAAA,EAKC,CACD,OAAO,KAAK,WACT6B,EAAM,aAAa,QAAQ,EAAI+D,EAAa5F,CAAE,EAAK4F,EAAa0B,CAAI,EACrEtH,CAAA,CAEJ,CAeA,IAAI6B,EAA6B,CAE/B,OAAO,IAAI,KAAK,YAAY,CAAE,QAAS,KAAK,QAAS,MAAAA,EAAO,WAAY,KAAK,SAAS,CAAG,CAAA,CAC3F,CACA,OAAO0F,EAAiC,CACtC,OAAOH,EAAA,KAAKV,EAAAc,GAAL,UAAkB,MAAO,GAAGD,EACrC,CACA,OAAOA,EAAiC,CACtC,OAAOH,EAAA,KAAKV,EAAAc,GAAL,UAAkB,MAAO,GAAGD,EACrC,CACA,OAAOA,EAAiC,CACtC,OAAOH,EAAA,KAAKV,EAAAc,GAAL,UAAkB,MAAO,GAAGD,EACrC,CACA,OAAOA,EAAiC,CACtC,OAAOH,EAAA,KAAKV,EAAAc,GAAL,UAAkB,MAAO,GAAGD,EACrC,CACA,GAAG1F,EAAgC,CAC1B,OAAAuF,EAAA,KAAKT,EAAAc,GAAL,UAAiB,KAAM5F,EAChC,CACA,IAAIA,EAAgC,CAC3B,OAAAuF,EAAA,KAAKT,EAAAc,GAAL,UAAiB,MAAO5F,EACjC,CACA,GAAGA,EAAgC,CAC1B,OAAAuF,EAAA,KAAKT,EAAAc,GAAL,UAAiB,KAAM5F,EAChC,CACA,IAAIA,EAAgC,CAC3B,OAAAuF,EAAA,KAAKT,EAAAc,GAAL,UAAiB,MAAO5F,EACjC,CACA,QAAQA,EAAgC,CAC/B,OAAAuF,EAAA,KAAKT,EAAAc,GAAL,UAAiB,UAAW5F,EACrC,CAGA,SAAuC6F,EAAkC,CACvE,MAAM7F,EAAQ,KAAK,wBACjB,KAAK,YACL,KAAK,SAAWiE,EAAsB,KAAK,iBAAiB,CAAA,EAG9D,OAAQ4B,EAAM,CACZ,IAAK,SACH,OAAO,OAAO7F,CAAK,EACrB,IAAK,SACI,OAAAA,EACT,IAAK,SACM,OAAA,KAAK,YAAc,KAAO,OAAO,KAAK,SAAW,EAAE,EAC1D,KAAK,iBACX,CACF,CAGA,aAA2C6F,EAAkC,CAC3E,MAAMC,EAAU,KAAK,kBAAoB/B,EAAa,KAAK,SAAWvF,cAAY,IAAI,EAChFuH,EAAY,KAAK,YAAcD,EAErC,OAAQD,EAAM,CACZ,IAAK,SACH,OAAO,OAAOE,CAAS,EACzB,IAAK,SACH,OAAOA,EAAU,WACnB,IAAK,SACI,OAAAA,CACX,CACF,CAEA,eAAe/F,EAAgCgE,EAAkB,CAC3D,GAAA,CAACA,GAAW,OAAOhE,GAAU,SAAU,OAAOA,EAAM,YAElD,MAAAgG,EAAcb,EAAenF,CAAK,EAClCiG,EAAYX,EAAYU,CAAW,EAErC,OAAAC,IAAc,KAAOA,IAAc,YAAoB,GACpDV,EAAA,KAAKN,EAAAiB,GAAL,UAAeD,EAAWjC,EACnC,CAEA,cAAcmC,EAA4B,EAAG,CACrC,KAAA,CAACC,EAAKC,CAAG,EAAI,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,EAC9CC,EAAUF,GAAO,GACjBpC,EAAUqC,GAAO,GAGvB,IAFoB,SAASC,CAAO,EAAIA,EAAQ,OAAStC,EAAQ,OAASA,EAAQ,SAE/DmC,EACV,OAAA,KAAK,SAAS,QAAQ,EAG3B,GAAAG,EAAQ,QAAUH,EACb,OAAAG,EAAQ,MAAM,EAAGH,CAAiB,EAAE,OAAOG,EAAQ,OAAQ,GAAG,EAGnE,GAAA,SAASA,CAAO,EACX,MAAA,GAAGA,CAAO,IAAItC,EAAQ,MAAM,EAAGmC,EAAoBG,EAAQ,MAAM,CAAC,GAAG,OAC1EH,EAAoBG,EAAQ,OAC5B,GAAA,EAIE,MAAAC,EAAiB,SAASvC,CAAO,EACjCwC,EAAgB,GAAGD,CAAc,GAAG,MAAM,EAAGJ,CAAiB,EAEpE,MAAO,KAAKK,EAAc,SACxBxC,EAAQ,OAAS,GAAGuC,CAAc,GAAG,OAASC,EAAc,OAC5D,GACD,CAAA,EACH,CAEA,QAAQC,EAAsB,EAAG,CACzB,KAAA,CAACL,EAAKC,CAAG,EAAI,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,EAC9CC,EAAUF,GAAO,GACjBpC,EAAUqC,GAAO,GAEnB,GAAA,SAASC,CAAO,EACX,MAAA,GAAGA,CAAO,IAAItC,EAAQ,MAAM,EAAGyC,CAAW,CAAC,GAAG,OAAOA,EAAa,GAAG,EAGxE,MAAAF,EAAiB,SAASvC,CAAO,EACjCwC,EAAgB,GAAGD,CAAc,GAAG,MAAM,EAAGE,CAAW,EAE9D,MAAO,KAAKD,EAAc,SACxBxC,EAAQ,OAAS,GAAGuC,CAAc,GAAG,OAASC,EAAc,OAC5D,GACD,CAAA,EACH,CAEA,eAAeE,EAAS,EAAG,CACnB,MAAA1G,EAAQ,KAAK,SAAS,QAAQ,EAC9B2G,EAAgB,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAAG,EACvDC,EAAO,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI5G,CAAK,CAAC,EAAI,CAAC,EACjD6G,EAASF,EAAcC,CAAI,EAEjC,GAAI,CAACC,EAAe,OAAA,KAAK,SAAS,QAAQ,EAEpC,MAAAC,EAAQ,KAAOF,EAAO,GAG5B,MAAO,IAFQ5G,EAAQ8G,GAEN,QAAQJ,CAAM,CAAC,GAAGG,CAAM,EAC3C,CAEA,WACEE,EAAW,IACX,CACE,iBAAAC,EAAmB,QACnB,QAAAhD,EAAU,EACV,iBAAAiD,EAAmB,IACnB,kBAAAC,EAAoB,GACtB,EAAI,GACJ,CACM,MAAAlH,EAAQ,KAAK,SAAS,QAAQ,EAC9B,CAACoG,EAAKC,EAAM,EAAE,EAAIrG,EAAM,QAAQ,CAAC,EAAE,MAAM,GAAG,EAC5CsG,EAAUF,EAAI,QAAQ,wBAAyBc,CAAiB,EAEhEC,EACJ,CAACf,GAAO,CAACC,EACL,OACAD,IAAQ,IACN,GAAG,WAAW,KAAKC,CAAG,EAAE,CAAC,GAAG,QAAQ,IAAKY,CAAgB,EACzD,GAAGX,CAAO,GAAG,SAASD,CAAG,EAAI,GAAGY,CAAgB,GAAGZ,EAAI,MAAM,EAAGrC,CAAO,CAAC,GAAK,EAAE,GAEhF,MAAA,GAAGgD,IAAqB,QAAUD,EAAW,EAAE,GAAGI,CAAW,GAClEH,IAAqB,MAAQD,EAAW,EAC1C,EACF,CAEA,wBAAwB/G,EAAegE,EAAkB,CACjD,MAAAI,EAAgBJ,GAAW,KAAK,SAAWF,EAC3CsD,EAA4B,KAAK,IACrChD,EACAH,EAAsB,KAAK,iBAAiB,CAAA,EAExCI,EAAarE,EAAQ,GAErBsE,EAActE,EAAM,WAAW,UAAUqE,EAAa,EAAI,CAAC,EAC3DE,EAAY6C,GAA6B9C,EAAY,OAAS,GAE9D+C,EAAoB9C,EAAY,EAAI,IAAI,OAAOA,CAAS,EAAID,EAAcA,EAE1EE,EAAe6C,EAAkB,OAASD,EAChD,IAAI3C,EAAgB4C,EAAkB,MAAM,CAACD,CAAyB,EAGtE,OAAI,SAAS3C,EAAcL,CAAa,CAAC,GAAK,EAE5CK,EAAgB,GAAGA,EAAc,UAAU,EAAGL,EAAgB,CAAC,CAAC,IAC9D,SAASK,EAAcL,EAAgB,CAAC,CAAC,EAAI,GAC7C,SAAU,CAAA,GAGIK,EAAAA,EAAc,UAAU,EAAGL,CAAa,EAGnD,GAAGC,EAAa,IAAM,EAAE,GAAGgD,EAAkB,MAClD,EACA7C,CAAA,CACD,IAAIC,CAAa,GAAG,QAAQ,SAAU,EAAE,CAC3C,CAmGF,EAjGEI,EAAA,YAAAc,EAAA,SAAa2B,KAA0C5B,EAAuC,CAC5F,MAAM6B,EAAmBhC,EAAA,KAAKP,EAAAwC,GAAL,UAA+B,KAAM,GAAG9B,GAC3D1B,EAAU,KAAK,IAAIuD,EAAkBtD,EAAsB,KAAK,iBAAiB,CAAC,EAClFwD,EAA6B1D,EAAaC,CAAO,EAEjD5F,EAASsH,EAAK,OAClB,CAACgC,EAAaC,IAAQ,CACpB,MAAM3H,EAAQ,KAAK,eAAe2H,EAAK3D,CAAO,EAE9C,OAAQsD,EAAQ,CACd,IAAK,MACH,OAAOI,EAAM1H,EACf,IAAK,MACH,OAAO0H,EAAM1H,EASf,IAAK,MACH,OAAQ0H,EAAM1H,EAASyH,EACzB,IAAK,MAAO,CACV,GAAIzH,IAAU,GAAU,MAAA,IAAI,WAAW,kBAAkB,EACzD,OAAQ0H,EAAMD,EAA8BzH,CAC9C,CACA,QACS,OAAA0H,CACX,CACF,EAEC,KAAK,YAAcD,EAA8B,KAAK,iBAAA,EAGnDzH,EAAQmE,EAAwB,CACpC,cAAeH,EACf,QAAAA,EACA,MAAO5F,CAAA,CACR,EAGM,OAAA,IAAI,KAAK,YAAY,CAC1B,kBAAmB2F,EAAaC,CAAO,EACvC,QAAS,KAAK,QACd,MAAAhE,EACA,WAAY,KAAK,SAAS,CAAA,CAC3B,CACH,EAEA8E,EAAA,YAAAc,EAAA,SAAY0B,KAAoD5B,EAAiC,CAC/F,MAAM1B,EAAUuB,EAAA,KAAKP,EAAAwC,GAAL,UAA+B,KAAM,GAAG9B,GAClD1F,EAAQ,KAAK,eAAe0F,EAAK,CAAC,EAAG1B,CAAO,EAC5C4D,EAAiB,KAAK,eAAe,KAAM5D,CAAO,EAExD,OAAQsD,EAAQ,CACd,IAAK,KACH,OAAOM,EAAiB5H,EAC1B,IAAK,MACH,OAAO4H,GAAkB5H,EAC3B,IAAK,KACH,OAAO4H,EAAiB5H,EAC1B,IAAK,MACH,OAAO4H,GAAkB5H,EAC3B,IAAK,UACH,OAAO4H,IAAmB5H,CAC9B,CACF,EAEA+E,EAAA,YAAAS,YAAUxF,EAAgC,CAClC,MAAAiG,EAAYX,EAAYtF,CAAK,GAAK,IACnC,KAAA,YAAcuF,EAAA,KAAKN,EAAAiB,GAAL,UAAeD,EACpC,EAEAjB,EAAA,YAAAwC,cAA6B9B,EAAiC,CAC5D,MAAMmC,EAAWnC,EACd,IAAKiC,GACa,OAAOA,GAAQ,SAE5BA,EAAI,SAAW1D,EAAsB0D,EAAI,iBAAiB,EAC1DtC,GAAiBC,EAAYqC,CAAG,CAAC,CAGtC,EACA,OAAO,OAAO,EAEjB,OAAO,KAAK,IAAI,GAAGE,EAAU/D,CAAe,CAC9C,EAEAmB,EAAA,YAAAiB,EAAA,SAAUlG,EAAegE,EAAkB,CACzC,MAAME,EAAaF,EAAUD,EAAaC,CAAO,EAAI,KAAK,kBACpD8D,EAAa7D,EAAsBC,CAAU,EAC7C,CAAC6D,EAAc,GAAIC,EAAc,EAAE,EAAIhI,EAAM,MAAM,GAAG,EAErD,OAAA,OAAO,GAAG+H,CAAW,GAAGC,EAAY,OAAOF,EAAY,GAAG,CAAC,EAAE,CACtE,EA3UK,IAAMG,EAANvD,GA8UP,MAAMwD,GAAkB,KAAK,aAAa,WAAY,CACpD,YAAa,GACb,sBAAuB,EACzB,CAAC,EAED,SAAS5C,EAAYtF,EAAgC,CAG7C,MAAAmI,EAAa,GADjB,OAAOnI,GAAU,SAAWkI,GAAgB,OAAOlI,CAAK,EAAImF,EAAenF,CAAK,CACjD,GAAG,WAAW,IAAK,GAAG,EAAE,MAAM,GAAG,EAElE,OAAOmI,EAAW,OAAS,EACvB,GAAGA,EAAW,MAAM,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,IAAIA,EAAW,GAAG,EAAE,CAAC,GACxDA,EAAW,CAAC,CAClB,CAEA,SAAS9C,GAAiBrF,EAAe,OACvC,MAAM6H,IAAWnI,EAAAM,EAAM,MAAM,GAAG,EAAE,CAAC,IAAlB,YAAAN,EAAqB,SAAU,EACzC,OAAA,KAAK,IAAImI,EAAU/D,CAAe,CAC3C,CAEA,SAASqB,EAAeiD,EAAuB,CACtC,OAAA,OAAOA,GAAU,SACpB,aAAcA,EACZA,EAAM,SAAS,QAAQ,EACvBA,EAAM,MACRA,CACN,CC9ZO,MAAMnH,UAAsBgH,CAAkB,CACnD,GAAGjI,EAAyB,CACnB,OAAA,KAAK,QAAQA,CAAK,CAC3B,CAEA,OAAO,WAAWA,EAAegE,EAAkB,CACjD,OAAO,IAAI/C,EAAc,CACvB,QAAA+C,EACA,MAAOG,EAAwB,CAAE,MAAAnE,EAAO,cAAegE,EAAS,QAAAA,EAAS,CAAA,CAC1E,CACH,CACF,CCJA,MAAMqE,MAAsB,IAKrB,MAAMC,UAAmBL,CAAkB,CAUhD,YAAY,CACV,MAAAjI,EACA,QAAAgE,EACA,IAAAuE,EACA,MAAArK,EACA,OAAAQ,EACA,WAAAiF,CAAA,EAIC,CACD,MAAM,OAAO3D,GAAU,SAAWA,EAAQ,CAAE,QAAAgE,EAAS,MAAAhE,EAAO,EApB9DkF,EAAA,gBACAA,EAAA,cACAA,EAAA,kBAAa,IACbA,EAAA,mBAAc,IACdA,EAAA,eACAA,EAAA,YACAA,EAAA,eACAA,EAAA,aAeE,MAAMsD,EAAYC,EAAa9E,GAAc,GAAGzF,CAAK,IAAIQ,CAAM,EAAE,EAE5D,KAAA,KAAOW,GAAamJ,CAAS,EAClC,KAAK,IAAMD,EACX,KAAK,MAAQC,EAAU,MACvB,KAAK,OAASA,EAAU,OACxB,KAAK,OAASA,EAAU,OACxB,KAAK,QAAUA,EAAU,QACzB,KAAK,YAAcA,EAAU,YAC7B,KAAK,WAAaA,EAAU,UAC9B,CAEA,UAAW,CACF,OAAA,KAAK,YAAc,KAAK,OAAS,GAAG,KAAK,KAAK,IAAI,KAAK,MAAM,EACtE,CAEA,OAAQ,CACN,OAAO,KAAK,YAAc,GAAG,KAAK,KAAK,IAAI,KAAK,OAAO,QAAQ,IAAK,GAAG,CAAC,GAAK,KAAK,UACpF,CAEA,GAAG,CAAE,MAAAtK,EAAO,OAAAQ,GAA4C,CACtD,OAAO,KAAK,QAAUR,GAAS,KAAK,SAAWQ,CACjD,CAEA,SAAU,CACD,OAAAgK,EAAA,eAAe,KAAK,KAAK,CAClC,CAKA,OAAO,QAAQC,EAAkB3I,EAA0B,EAAG,CAC5D,KAAM,CAAC9B,EAAOuB,EAAQf,CAAM,EAAIiK,EAAS,MAAM,GAAG,EAC9C,GAAA,CAACzK,GAAS,CAACuB,EAAc,MAAA,IAAI,MAAM,mBAAmB,EAEpD,MAAAL,EACJlB,IAAUS,EAAA,MAAM,WAAaD,EAAS,GAAGR,CAAK,IAAIuB,CAAM,IAAIf,CAAM,GAAKiK,EAElE,OAAAC,EAAiBxJ,EAAaY,CAAK,CAC5C,CAEA,OAAO,WAAWZ,EAAqBY,EAA0B,EAAG,CAC3D,OAAA4I,EAAiBxJ,EAAaY,CAAK,CAC5C,CACA,OAAO,eACLZ,EAKAY,EAA0B,EAC1B,CACO,OAAA4I,EAAiBxJ,EAAaY,CAAK,CAC5C,CAEA,OAAO,eAAeZ,EAAqBY,EAA0B,EAAG,CACtE,KAAM,CAAE,MAAA9B,EAAO,YAAA2K,CAAY,EAAIJ,EAAarJ,CAAW,EACjD0J,EAAYT,EAAgB,IAAIjJ,EAAY,YAA2B,CAAA,EAEzE,GAAAyJ,EAAoB,OAAAE,EAA0B3J,EAAaY,CAAK,EAQpE,KAAM,CAAE,IAAAuI,EAAK,QAAAvE,EAAS,WAAAL,CAAA,EAAemF,GAAa,CAChD,QAAStK,cAAYN,CAAK,EAC1B,WAAYkB,CAAA,EAGd,OAAO,IAAIkJ,EAAW,CACpB,IAAAC,EACA,MAAOtC,EAAUjG,EAAOgE,CAAO,EAC/B,WAAY6E,EAAczJ,EAAcuE,EACxC,QAASkF,EAAc,EAAI7E,CAAA,CAC5B,CACH,CAEA,aAAa,mBACX5E,EACAY,EAA0B,EAC1BgJ,EAAsBxK,cAAY,KAClC,CACM,MAAAyK,EAAgBhB,EAAkB,cAAc,CACpD,MAAOhH,EAAc,WAAW,OAAOjB,CAAK,CAAC,EAC7C,KAAM,EACN,GAAIgJ,CAAA,CACL,EAAE,aAAa,QAAQ,EAGjB,OAFY,MAAMV,EAAW,WAAWlJ,EAAaY,CAAK,GAE/C,IAAIiJ,CAAa,CACrC,CAEA,OAAO,uBACL7J,EACAY,EAA0B,EAC1BgJ,EAAsBxK,cAAY,KAClC,CACA,KAAM,CAAE,MAAAN,EAAO,YAAA2K,CAAY,EAAIJ,EAAarJ,CAAW,EACjD0J,EAAYT,EAAgB,IAAIjJ,EAAY,YAA2B,CAAA,EAEzE,GAAAyJ,EAAoB,OAAAE,EAA0B3J,EAAaY,CAAK,EAEpE,KAAM,CAAE,IAAAuI,EAAK,QAAAvE,EAAS,WAAAL,CAAA,EAAemF,GAAa,CAChD,QAAStK,cAAYN,CAAK,EAC1B,WAAYkB,CAAA,EAGd,OAAO,IAAIkJ,EAAW,CACpB,IAAAC,EACA,MAAOtC,EAAU,OAAOjG,CAAK,EAAGgJ,CAAW,EAC3C,WAAArF,EACA,QAAAK,CAAA,CACD,CACH,CAEA,OAAO,mBAAmB5E,EAAyBY,EAA0B,EAAG,CAC9E,KAAM,CAAE,MAAA9B,EAAO,YAAA2K,CAAY,EAAIJ,EAAarJ,CAAW,EACjD0J,EAAYT,EAAgB,IAAIjJ,CAAW,EAE7C,GAAAyJ,EAAoB,OAAAE,EAA0B3J,EAAaY,CAAK,EAQpE,KAAM,CAAE,IAAAuI,EAAK,QAAAvE,EAAS,WAAAL,CAAA,EAAemF,GAAa,CAChD,QAAStK,cAAYN,CAAK,EAC1B,WAAYkB,CAAA,EAEP,OAAA,IAAIkJ,EAAW,CAAE,IAAAC,EAAK,QAAAvE,EAAS,WAAAL,EAAY,MAAOsC,EAAUjG,EAAOgE,CAAO,CAAG,CAAA,CACtF,CAEA,OAAO,qBAAqB5E,EAAgCY,EAA0B,EAAG,CACvF,KAAM,CAAE,QAAAgE,EAAS,WAAAL,CAAW,EAAIxE,GAAmBC,CAAW,EACvD,OAAA,IAAIkJ,EAAW,CAAE,MAAOrC,EAAUjG,EAAOgE,CAAO,EAAG,QAAAA,EAAS,WAAAL,CAAA,CAAY,CACjF,CAEA,OAAO,kBAAmB,CACxB,OAAO,IAAI,QACT,MAAOuF,EAASC,IAAW,CACrB,GAAA,CACI,MAAAC,EAAgB,KAAM,QAAO,iBAAiB,EAEpD,OAAO,OAAOA,CAAa,EAAE,QAASC,GAAc,QACvC3J,EAAA2J,GAAA,YAAAA,EAAA,SAAA,MAAA3J,EAAQ,QAAQ,CAAC,CAAE,WAAAiE,EAAY,MAAAzF,EAAO,GAAGoL,KAAW,CAC7CjB,EAAA,IAAI1E,EAAW,cAA6B,CAC1D,WAAAA,EACA,QAAS,aAAc2F,EAAOA,EAAK,SAAW9K,cAAYN,CAAc,CAAA,CACzE,CAAA,EACF,CACF,EAEOgL,EAAA,CAAE,GAAI,EAAA,CAAM,QACb3K,EAAO,CACd,QAAQ,MAAMA,CAAK,EACZ4K,EAAA,CACL,GAAI,GACJ,MAAA5K,EACA,QACE,gFAAA,CACH,CACH,CACF,CAAA,CAEJ,CACF,CAEO,SAASgL,GAAoBrL,EAAc,CAC1C,MAAA4E,EAAQwF,EAAW,qBAAqBpK,CAAK,EAEnD,OAAQA,EAAO,CACb,KAAKS,EAAAA,MAAM,QACX,KAAKA,EAAAA,MAAM,SACX,KAAKA,EAAM,MAAA,YACF,OAAAmE,EAAM,IAAI,QAAU,EAE7B,KAAKnE,EAAM,MAAA,SACF,OAAAmE,EAAM,IAAI,UAAU,EAE7B,KAAKnE,EAAAA,MAAM,UACX,KAAKA,EAAM,MAAA,SACF,OAAAmE,EAAM,IAAI,IAAU,EAE7B,KAAKnE,EAAAA,MAAM,UACX,KAAKA,EAAM,MAAA,KACF,OAAAmE,EAAM,IAAI,CAAC,EAEpB,KAAKnE,EAAM,MAAA,OACF,OAAAmE,EAAM,IAAI,IAAQ,EAE3B,QACS,OAAAA,EAAM,IAAI,IAAU,CAC/B,CACF,CAEA,eAAe8F,EAAiBjF,EAAoB3D,EAA0B,EAAG,CAC/E0D,GAAmBC,CAAU,EAE7B,MAAM6F,EAAcnB,EAAgB,IAAI1E,EAAW,YAA2B,CAAA,EACxEK,GAAUwF,GAAA,YAAAA,EAAa,UAAY,MAAMzK,GAAW0J,EAAa9E,CAAU,CAAC,EAClF,OAAK6F,GACHnB,EAAgB,IAAI1E,EAAW,cAA6B,CAAE,WAAAA,EAAY,QAAAK,EAAS,EAG9E,IAAIsE,EAAW,CAAE,QAAAtE,EAAS,MAAOiC,EAAUjG,EAAOgE,CAAO,EAAG,WAAAL,CAAA,CAAY,CACjF,CAEA,SAASoF,EAA0BpF,EAAoB3D,EAA0B,EAAG,CAClF,KAAM,CAAC6D,EAAYnF,CAAM,EACvBiF,EAAW,MAAM,GAAG,EAAE,CAAC,EAAE,gBAAkBhF,EAAAA,MAAM,UAC7CgF,EAAW,MAAM,GAAG,EAAE,MAAM,CAAC,EAAG,KAAA,EAAO,MAAM,GAAG,EAChDA,EAAW,MAAM,GAAG,EAEtB,GAAA,CAACE,GAAc,CAACnF,EAAc,MAAA,IAAI,MAAM,0BAA0B,EAEtE,OAAO,IAAI4J,EAAW,CACpB,QAAS,EACT,MAAOrC,EAAUjG,EAAO,CAAC,EACzB,WAAY,GAAGrB,EAAAA,MAAM,SAAS,IAAIkF,CAAU,IAAInF,CAAM,EAAA,CACvD,CACH,CAEA,SAASuH,EAAUjG,EAAyBgE,EAAiB,CACpD,OAAA,OAAOhE,GAAU,SACpBmE,EAAwB,CAAE,MAAAnE,EAAO,cAAegE,EAAS,QAAAA,EAAS,EAClEhE,CACN,CAGA,SAASyI,EAAa9E,EAAoB,CACxC,MAAMkF,EAAclF,EAAW,MAAM,EAAG,EAAE,EAAE,SAAS,GAAG,EAElD,CAACE,EAAY4F,CAAW,EAC5B9F,EAAW,MAAM,GAAG,EAAE,CAAC,EAAE,gBAAkBhF,EAAAA,MAAM,UAC7CgF,EAAW,MAAM,GAAG,EAAE,MAAM,CAAC,EAAG,KAAA,EAAO,MAAM,GAAG,EAChDA,EAAW,MAAM,GAAG,EAEtB,GAAAkF,IAAgB,CAAChF,GAAc,CAAC4F,GAAoB,MAAA,IAAI,MAAM,0BAA0B,EAE5F,MAAMC,EACJ/F,EAAW,SAAS,GAAG,GAAK,CAACkF,EAAclF,EAAa,GAAGhF,EAAAA,MAAM,SAAS,IAAI8K,CAAW,GAErF,CAACvL,EAAO,GAAGoL,CAAI,EAAII,EAAmB,MAAM,GAAG,EAC/C,CAACjK,EAAQb,CAAO,GAAKiK,EAAcY,EAAcH,EAAK,KAAK,GAAG,GAAG,MAAM,GAAG,EAI1E5K,EAASmK,EAAcY,EAAcH,EAAK,KAAK,GAAG,EAEjD,MAAA,CACL,QAAS1K,GAAA,YAAAA,EAAS,cAClB,MAAAV,EACA,WAAYgB,GAAW,CAAE,MAAAhB,EAAO,OAAAQ,EAAQ,EACxC,YAAAmK,EACA,QACGA,EAAc,GAAGhF,CAAU,IAAM,KACjCjF,EAAU,GAAGa,CAAM,KAAIb,GAAA,YAAAA,EAAS,gBAAiB,EAAE,GAAKF,GAC3D,OAAAe,CAAA,CAEJ,CC/SA,MAAMkK,GAAgB,CAIpB,iCAAkC,MAClC,iDAAkD,MAClD,kBAAmB,MACnB,4BAA6B,MAC7B,6CAA8C,MAC9C,kBAAmB,MAInB,gCAAiC,MACjC,oCAAqC,MACrC,wCAAyC,MACzC,mCAAoC,MACpC,iCAAkC,MAClC,iCAAkC,MAClC,gCAAiC,MACjC,8BAA+B,MAC/B,kCAAmC,MAInC,yBAA0B,MAC1B,6BAA8B,MAC9B,+BAAgC,MAChC,6BAA8B,MAC9B,sCAAuC,MACvC,iCAAkC,MAClC,4BAA6B,MAC7B,mCAAoC,MAIpC,+BAAgC,MAChC,6CAA8C,MAC9C,8CAA+C,MAC/C,iDAAkD,MAClD,8CAA+C,MAC/C,+CAAgD,MAChD,0CAA2C,MAC3C,2CAA4C,MAC5C,gCAAiC,MACjC,uCAAwC,MACxC,kDAAmD,MACnD,mCAAoC,MACpC,wCAAyC,MACzC,sCAAuC,MACvC,+BAAgC,MAKhC,+BAAgC,MAChC,iCAAkC,MAClC,gCAAiC,MACjC,+BAAgC,MAChC,4BAA6B,MAK7B,kCAAmC,KACrC,EAIO,MAAMC,WAAqB,KAAM,CACtC,YAAYC,EAAqBC,EAAmB,CAC9CA,GACM,QAAA,MAAMA,EAAa,CAAE,MAAOA,GAAA,YAAAA,EAAa,MAAO,QAASA,GAAA,YAAAA,EAAa,OAAA,CAAS,EAGnF,MAAAD,EAAU,CAAE,MAAO,CAAE,KAAMF,GAAcE,CAAQ,EAAG,QAASA,CAAS,CAAG,CAAA,EACxE,OAAA,eAAe,KAAMD,GAAa,SAAS,CACpD,CACF"}
|