llll-sdk 0.0.0-experimental-20260115163234 → 0.0.0-experimental-20260115204202
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.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Fr=Object.create;var ir=Object.defineProperty;var Ur=Object.getOwnPropertyDescriptor;var jr=Object.getOwnPropertyNames;var $r=Object.getPrototypeOf,Wr=Object.prototype.hasOwnProperty;var Zr=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(r,i)=>(typeof require<"u"?require:r)[i]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var Kr=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var zr=(n,r,i,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of jr(r))!Wr.call(n,e)&&e!==i&&ir(n,e,{get:()=>r[e],enumerable:!(o=Ur(r,e))||o.enumerable});return n};var Gr=(n,r,i)=>(i=n!=null?Fr($r(n)):{},zr(r||!n||!n.__esModule?ir(i,"default",{value:n,enumerable:!0}):i,n));var Ir=Kr((Nr,Ui)=>{"use strict";(function(n,r){"use strict";function i(p,t){if(!p)throw new Error(t||"Assertion failed")}function o(p,t){p.super_=t;var s=function(){};s.prototype=t.prototype,p.prototype=new s,p.prototype.constructor=p}function e(p,t,s){if(e.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((t==="le"||t==="be")&&(s=t,t=10),this._init(p||0,t||10,s||"be"))}typeof n=="object"?n.exports=e:r.BN=e,e.BN=e,e.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=Zr("buffer").Buffer}catch{}e.isBN=function(t){return t instanceof e?!0:t!==null&&typeof t=="object"&&t.constructor.wordSize===e.wordSize&&Array.isArray(t.words)},e.max=function(t,s){return t.cmp(s)>0?t:s},e.min=function(t,s){return t.cmp(s)<0?t:s},e.prototype._init=function(t,s,u){if(typeof t=="number")return this._initNumber(t,s,u);if(typeof t=="object")return this._initArray(t,s,u);s==="hex"&&(s=16),i(s===(s|0)&&s>=2&&s<=36),t=t.toString().replace(/\s+/g,"");var f=0;t[0]==="-"&&(f++,this.negative=1),f<t.length&&(s===16?this._parseHex(t,f,u):(this._parseBase(t,s,f),u==="le"&&this._initArray(this.toArray(),s,u)))},e.prototype._initNumber=function(t,s,u){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[t&67108863],this.length=1):t<4503599627370496?(this.words=[t&67108863,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[t&67108863,t/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),s,u)},e.prototype._initArray=function(t,s,u){if(i(typeof t.length=="number"),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var f=0;f<this.length;f++)this.words[f]=0;var h,v,P=0;if(u==="be")for(f=t.length-1,h=0;f>=0;f-=3)v=t[f]|t[f-1]<<8|t[f-2]<<16,this.words[h]|=v<<P&67108863,this.words[h+1]=v>>>26-P&67108863,P+=24,P>=26&&(P-=26,h++);else if(u==="le")for(f=0,h=0;f<t.length;f+=3)v=t[f]|t[f+1]<<8|t[f+2]<<16,this.words[h]|=v<<P&67108863,this.words[h+1]=v>>>26-P&67108863,P+=24,P>=26&&(P-=26,h++);return this._strip()};function d(p,t){var s=p.charCodeAt(t);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;i(!1,"Invalid character in "+p)}function c(p,t,s){var u=d(p,s);return s-1>=t&&(u|=d(p,s-1)<<4),u}e.prototype._parseHex=function(t,s,u){this.length=Math.ceil((t.length-s)/6),this.words=new Array(this.length);for(var f=0;f<this.length;f++)this.words[f]=0;var h=0,v=0,P;if(u==="be")for(f=t.length-1;f>=s;f-=2)P=c(t,s,f)<<h,this.words[v]|=P&67108863,h>=18?(h-=18,v+=1,this.words[v]|=P>>>26):h+=8;else{var _=t.length-s;for(f=_%2===0?s+1:s;f<t.length;f+=2)P=c(t,s,f)<<h,this.words[v]|=P&67108863,h>=18?(h-=18,v+=1,this.words[v]|=P>>>26):h+=8}this._strip()};function g(p,t,s,u){for(var f=0,h=0,v=Math.min(p.length,s),P=t;P<v;P++){var _=p.charCodeAt(P)-48;f*=u,_>=49?h=_-49+10:_>=17?h=_-17+10:h=_,i(_>=0&&h<u,"Invalid character"),f+=h}return f}e.prototype._parseBase=function(t,s,u){this.words=[0],this.length=1;for(var f=0,h=1;h<=67108863;h*=s)f++;f--,h=h/s|0;for(var v=t.length-u,P=v%f,_=Math.min(v,v-P)+u,l=0,y=u;y<_;y+=f)l=g(t,y,y+f,s),this.imuln(h),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l);if(P!==0){var U=1;for(l=g(t,y,t.length,s),y=0;y<P;y++)U*=s;this.imuln(U),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l)}this._strip()},e.prototype.copy=function(t){t.words=new Array(this.length);for(var s=0;s<this.length;s++)t.words[s]=this.words[s];t.length=this.length,t.negative=this.negative,t.red=this.red};function m(p,t){p.words=t.words,p.length=t.length,p.negative=t.negative,p.red=t.red}if(e.prototype._move=function(t){m(t,this)},e.prototype.clone=function(){var t=new e(null);return this.copy(t),t},e.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},e.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},e.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{e.prototype[Symbol.for("nodejs.util.inspect.custom")]=M}catch{e.prototype.inspect=M}else e.prototype.inspect=M;function M(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],A=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],T=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];e.prototype.toString=function(t,s){t=t||10,s=s|0||1;var u;if(t===16||t==="hex"){u="";for(var f=0,h=0,v=0;v<this.length;v++){var P=this.words[v],_=((P<<f|h)&16777215).toString(16);h=P>>>24-f&16777215,f+=2,f>=26&&(f-=26,v--),h!==0||v!==this.length-1?u=S[6-_.length]+_+u:u=_+u}for(h!==0&&(u=h.toString(16)+u);u.length%s!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(t===(t|0)&&t>=2&&t<=36){var l=A[t],y=T[t];u="";var U=this.clone();for(U.negative=0;!U.isZero();){var B=U.modrn(y).toString(t);U=U.idivn(y),U.isZero()?u=B+u:u=S[l-B.length]+B+u}for(this.isZero()&&(u="0"+u);u.length%s!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},e.prototype.toNumber=function(){var t=this.words[0];return this.length===2?t+=this.words[1]*67108864:this.length===3&&this.words[2]===1?t+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-t:t},e.prototype.toJSON=function(){return this.toString(16,2)},a&&(e.prototype.toBuffer=function(t,s){return this.toArrayLike(a,t,s)}),e.prototype.toArray=function(t,s){return this.toArrayLike(Array,t,s)};var D=function(t,s){return t.allocUnsafe?t.allocUnsafe(s):new t(s)};e.prototype.toArrayLike=function(t,s,u){this._strip();var f=this.byteLength(),h=u||Math.max(1,f);i(f<=h,"byte array longer than desired length"),i(h>0,"Requested array length <= 0");var v=D(t,h),P=s==="le"?"LE":"BE";return this["_toArrayLike"+P](v,f),v},e.prototype._toArrayLikeLE=function(t,s){for(var u=0,f=0,h=0,v=0;h<this.length;h++){var P=this.words[h]<<v|f;t[u++]=P&255,u<t.length&&(t[u++]=P>>8&255),u<t.length&&(t[u++]=P>>16&255),v===6?(u<t.length&&(t[u++]=P>>24&255),f=0,v=0):(f=P>>>24,v+=2)}if(u<t.length)for(t[u++]=f;u<t.length;)t[u++]=0},e.prototype._toArrayLikeBE=function(t,s){for(var u=t.length-1,f=0,h=0,v=0;h<this.length;h++){var P=this.words[h]<<v|f;t[u--]=P&255,u>=0&&(t[u--]=P>>8&255),u>=0&&(t[u--]=P>>16&255),v===6?(u>=0&&(t[u--]=P>>24&255),f=0,v=0):(f=P>>>24,v+=2)}if(u>=0)for(t[u--]=f;u>=0;)t[u--]=0},Math.clz32?e.prototype._countBits=function(t){return 32-Math.clz32(t)}:e.prototype._countBits=function(t){var s=t,u=0;return s>=4096&&(u+=13,s>>>=13),s>=64&&(u+=7,s>>>=7),s>=8&&(u+=4,s>>>=4),s>=2&&(u+=2,s>>>=2),u+s},e.prototype._zeroBits=function(t){if(t===0)return 26;var s=t,u=0;return(s&8191)===0&&(u+=13,s>>>=13),(s&127)===0&&(u+=7,s>>>=7),(s&15)===0&&(u+=4,s>>>=4),(s&3)===0&&(u+=2,s>>>=2),(s&1)===0&&u++,u},e.prototype.bitLength=function(){var t=this.words[this.length-1],s=this._countBits(t);return(this.length-1)*26+s};function R(p){for(var t=new Array(p.bitLength()),s=0;s<t.length;s++){var u=s/26|0,f=s%26;t[s]=p.words[u]>>>f&1}return t}e.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,s=0;s<this.length;s++){var u=this._zeroBits(this.words[s]);if(t+=u,u!==26)break}return t},e.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},e.prototype.toTwos=function(t){return this.negative!==0?this.abs().inotn(t).iaddn(1):this.clone()},e.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},e.prototype.isNeg=function(){return this.negative!==0},e.prototype.neg=function(){return this.clone().ineg()},e.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},e.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var s=0;s<t.length;s++)this.words[s]=this.words[s]|t.words[s];return this._strip()},e.prototype.ior=function(t){return i((this.negative|t.negative)===0),this.iuor(t)},e.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},e.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},e.prototype.iuand=function(t){var s;this.length>t.length?s=t:s=this;for(var u=0;u<s.length;u++)this.words[u]=this.words[u]&t.words[u];return this.length=s.length,this._strip()},e.prototype.iand=function(t){return i((this.negative|t.negative)===0),this.iuand(t)},e.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},e.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},e.prototype.iuxor=function(t){var s,u;this.length>t.length?(s=this,u=t):(s=t,u=this);for(var f=0;f<u.length;f++)this.words[f]=s.words[f]^u.words[f];if(this!==s)for(;f<s.length;f++)this.words[f]=s.words[f];return this.length=s.length,this._strip()},e.prototype.ixor=function(t){return i((this.negative|t.negative)===0),this.iuxor(t)},e.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},e.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},e.prototype.inotn=function(t){i(typeof t=="number"&&t>=0);var s=Math.ceil(t/26)|0,u=t%26;this._expand(s),u>0&&s--;for(var f=0;f<s;f++)this.words[f]=~this.words[f]&67108863;return u>0&&(this.words[f]=~this.words[f]&67108863>>26-u),this._strip()},e.prototype.notn=function(t){return this.clone().inotn(t)},e.prototype.setn=function(t,s){i(typeof t=="number"&&t>=0);var u=t/26|0,f=t%26;return this._expand(u+1),s?this.words[u]=this.words[u]|1<<f:this.words[u]=this.words[u]&~(1<<f),this._strip()},e.prototype.iadd=function(t){var s;if(this.negative!==0&&t.negative===0)return this.negative=0,s=this.isub(t),this.negative^=1,this._normSign();if(this.negative===0&&t.negative!==0)return t.negative=0,s=this.isub(t),t.negative=1,s._normSign();var u,f;this.length>t.length?(u=this,f=t):(u=t,f=this);for(var h=0,v=0;v<f.length;v++)s=(u.words[v]|0)+(f.words[v]|0)+h,this.words[v]=s&67108863,h=s>>>26;for(;h!==0&&v<u.length;v++)s=(u.words[v]|0)+h,this.words[v]=s&67108863,h=s>>>26;if(this.length=u.length,h!==0)this.words[this.length]=h,this.length++;else if(u!==this)for(;v<u.length;v++)this.words[v]=u.words[v];return this},e.prototype.add=function(t){var s;return t.negative!==0&&this.negative===0?(t.negative=0,s=this.sub(t),t.negative^=1,s):t.negative===0&&this.negative!==0?(this.negative=0,s=t.sub(this),this.negative=1,s):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},e.prototype.isub=function(t){if(t.negative!==0){t.negative=0;var s=this.iadd(t);return t.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var u=this.cmp(t);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var f,h;u>0?(f=this,h=t):(f=t,h=this);for(var v=0,P=0;P<h.length;P++)s=(f.words[P]|0)-(h.words[P]|0)+v,v=s>>26,this.words[P]=s&67108863;for(;v!==0&&P<f.length;P++)s=(f.words[P]|0)+v,v=s>>26,this.words[P]=s&67108863;if(v===0&&P<f.length&&f!==this)for(;P<f.length;P++)this.words[P]=f.words[P];return this.length=Math.max(this.length,P),f!==this&&(this.negative=1),this._strip()},e.prototype.sub=function(t){return this.clone().isub(t)};function N(p,t,s){s.negative=t.negative^p.negative;var u=p.length+t.length|0;s.length=u,u=u-1|0;var f=p.words[0]|0,h=t.words[0]|0,v=f*h,P=v&67108863,_=v/67108864|0;s.words[0]=P;for(var l=1;l<u;l++){for(var y=_>>>26,U=_&67108863,B=Math.min(l,t.length-1),$=Math.max(0,l-p.length+1);$<=B;$++){var K=l-$|0;f=p.words[K]|0,h=t.words[$]|0,v=f*h+U,y+=v/67108864|0,U=v&67108863}s.words[l]=U|0,_=y|0}return _!==0?s.words[l]=_|0:s.length--,s._strip()}var L=function(t,s,u){var f=t.words,h=s.words,v=u.words,P=0,_,l,y,U=f[0]|0,B=U&8191,$=U>>>13,K=f[1]|0,V=K&8191,J=K>>>13,rt=f[2]|0,G=rt&8191,it=rt>>>13,ft=f[3]|0,et=ft&8191,X=ft>>>13,de=f[4]|0,lt=de&8191,st=de>>>13,oe=f[5]|0,at=oe&8191,nt=oe>>>13,Oe=f[6]|0,ht=Oe&8191,pt=Oe>>>13,Wi=f[7]|0,mt=Wi&8191,gt=Wi>>>13,Zi=f[8]|0,_t=Zi&8191,wt=Zi>>>13,Ki=f[9]|0,vt=Ki&8191,Mt=Ki>>>13,zi=h[0]|0,bt=zi&8191,yt=zi>>>13,Gi=h[1]|0,kt=Gi&8191,St=Gi>>>13,Hi=h[2]|0,Pt=Hi&8191,At=Hi>>>13,Vi=h[3]|0,Ct=Vi&8191,xt=Vi>>>13,Xi=h[4]|0,Tt=Xi&8191,Dt=Xi>>>13,Ji=h[5]|0,Ot=Ji&8191,Rt=Ji>>>13,Yi=h[6]|0,Lt=Yi&8191,Nt=Yi>>>13,Qi=h[7]|0,It=Qi&8191,Et=Qi>>>13,tr=h[8]|0,Bt=tr&8191,qt=tr>>>13,er=h[9]|0,Ft=er&8191,Ut=er>>>13;u.negative=t.negative^s.negative,u.length=19,_=Math.imul(B,bt),l=Math.imul(B,yt),l=l+Math.imul($,bt)|0,y=Math.imul($,yt);var ri=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ri>>>26)|0,ri&=67108863,_=Math.imul(V,bt),l=Math.imul(V,yt),l=l+Math.imul(J,bt)|0,y=Math.imul(J,yt),_=_+Math.imul(B,kt)|0,l=l+Math.imul(B,St)|0,l=l+Math.imul($,kt)|0,y=y+Math.imul($,St)|0;var ni=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ni>>>26)|0,ni&=67108863,_=Math.imul(G,bt),l=Math.imul(G,yt),l=l+Math.imul(it,bt)|0,y=Math.imul(it,yt),_=_+Math.imul(V,kt)|0,l=l+Math.imul(V,St)|0,l=l+Math.imul(J,kt)|0,y=y+Math.imul(J,St)|0,_=_+Math.imul(B,Pt)|0,l=l+Math.imul(B,At)|0,l=l+Math.imul($,Pt)|0,y=y+Math.imul($,At)|0;var oi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(oi>>>26)|0,oi&=67108863,_=Math.imul(et,bt),l=Math.imul(et,yt),l=l+Math.imul(X,bt)|0,y=Math.imul(X,yt),_=_+Math.imul(G,kt)|0,l=l+Math.imul(G,St)|0,l=l+Math.imul(it,kt)|0,y=y+Math.imul(it,St)|0,_=_+Math.imul(V,Pt)|0,l=l+Math.imul(V,At)|0,l=l+Math.imul(J,Pt)|0,y=y+Math.imul(J,At)|0,_=_+Math.imul(B,Ct)|0,l=l+Math.imul(B,xt)|0,l=l+Math.imul($,Ct)|0,y=y+Math.imul($,xt)|0;var si=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(si>>>26)|0,si&=67108863,_=Math.imul(lt,bt),l=Math.imul(lt,yt),l=l+Math.imul(st,bt)|0,y=Math.imul(st,yt),_=_+Math.imul(et,kt)|0,l=l+Math.imul(et,St)|0,l=l+Math.imul(X,kt)|0,y=y+Math.imul(X,St)|0,_=_+Math.imul(G,Pt)|0,l=l+Math.imul(G,At)|0,l=l+Math.imul(it,Pt)|0,y=y+Math.imul(it,At)|0,_=_+Math.imul(V,Ct)|0,l=l+Math.imul(V,xt)|0,l=l+Math.imul(J,Ct)|0,y=y+Math.imul(J,xt)|0,_=_+Math.imul(B,Tt)|0,l=l+Math.imul(B,Dt)|0,l=l+Math.imul($,Tt)|0,y=y+Math.imul($,Dt)|0;var ai=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ai>>>26)|0,ai&=67108863,_=Math.imul(at,bt),l=Math.imul(at,yt),l=l+Math.imul(nt,bt)|0,y=Math.imul(nt,yt),_=_+Math.imul(lt,kt)|0,l=l+Math.imul(lt,St)|0,l=l+Math.imul(st,kt)|0,y=y+Math.imul(st,St)|0,_=_+Math.imul(et,Pt)|0,l=l+Math.imul(et,At)|0,l=l+Math.imul(X,Pt)|0,y=y+Math.imul(X,At)|0,_=_+Math.imul(G,Ct)|0,l=l+Math.imul(G,xt)|0,l=l+Math.imul(it,Ct)|0,y=y+Math.imul(it,xt)|0,_=_+Math.imul(V,Tt)|0,l=l+Math.imul(V,Dt)|0,l=l+Math.imul(J,Tt)|0,y=y+Math.imul(J,Dt)|0,_=_+Math.imul(B,Ot)|0,l=l+Math.imul(B,Rt)|0,l=l+Math.imul($,Ot)|0,y=y+Math.imul($,Rt)|0;var li=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(li>>>26)|0,li&=67108863,_=Math.imul(ht,bt),l=Math.imul(ht,yt),l=l+Math.imul(pt,bt)|0,y=Math.imul(pt,yt),_=_+Math.imul(at,kt)|0,l=l+Math.imul(at,St)|0,l=l+Math.imul(nt,kt)|0,y=y+Math.imul(nt,St)|0,_=_+Math.imul(lt,Pt)|0,l=l+Math.imul(lt,At)|0,l=l+Math.imul(st,Pt)|0,y=y+Math.imul(st,At)|0,_=_+Math.imul(et,Ct)|0,l=l+Math.imul(et,xt)|0,l=l+Math.imul(X,Ct)|0,y=y+Math.imul(X,xt)|0,_=_+Math.imul(G,Tt)|0,l=l+Math.imul(G,Dt)|0,l=l+Math.imul(it,Tt)|0,y=y+Math.imul(it,Dt)|0,_=_+Math.imul(V,Ot)|0,l=l+Math.imul(V,Rt)|0,l=l+Math.imul(J,Ot)|0,y=y+Math.imul(J,Rt)|0,_=_+Math.imul(B,Lt)|0,l=l+Math.imul(B,Nt)|0,l=l+Math.imul($,Lt)|0,y=y+Math.imul($,Nt)|0;var ui=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ui>>>26)|0,ui&=67108863,_=Math.imul(mt,bt),l=Math.imul(mt,yt),l=l+Math.imul(gt,bt)|0,y=Math.imul(gt,yt),_=_+Math.imul(ht,kt)|0,l=l+Math.imul(ht,St)|0,l=l+Math.imul(pt,kt)|0,y=y+Math.imul(pt,St)|0,_=_+Math.imul(at,Pt)|0,l=l+Math.imul(at,At)|0,l=l+Math.imul(nt,Pt)|0,y=y+Math.imul(nt,At)|0,_=_+Math.imul(lt,Ct)|0,l=l+Math.imul(lt,xt)|0,l=l+Math.imul(st,Ct)|0,y=y+Math.imul(st,xt)|0,_=_+Math.imul(et,Tt)|0,l=l+Math.imul(et,Dt)|0,l=l+Math.imul(X,Tt)|0,y=y+Math.imul(X,Dt)|0,_=_+Math.imul(G,Ot)|0,l=l+Math.imul(G,Rt)|0,l=l+Math.imul(it,Ot)|0,y=y+Math.imul(it,Rt)|0,_=_+Math.imul(V,Lt)|0,l=l+Math.imul(V,Nt)|0,l=l+Math.imul(J,Lt)|0,y=y+Math.imul(J,Nt)|0,_=_+Math.imul(B,It)|0,l=l+Math.imul(B,Et)|0,l=l+Math.imul($,It)|0,y=y+Math.imul($,Et)|0;var ci=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ci>>>26)|0,ci&=67108863,_=Math.imul(_t,bt),l=Math.imul(_t,yt),l=l+Math.imul(wt,bt)|0,y=Math.imul(wt,yt),_=_+Math.imul(mt,kt)|0,l=l+Math.imul(mt,St)|0,l=l+Math.imul(gt,kt)|0,y=y+Math.imul(gt,St)|0,_=_+Math.imul(ht,Pt)|0,l=l+Math.imul(ht,At)|0,l=l+Math.imul(pt,Pt)|0,y=y+Math.imul(pt,At)|0,_=_+Math.imul(at,Ct)|0,l=l+Math.imul(at,xt)|0,l=l+Math.imul(nt,Ct)|0,y=y+Math.imul(nt,xt)|0,_=_+Math.imul(lt,Tt)|0,l=l+Math.imul(lt,Dt)|0,l=l+Math.imul(st,Tt)|0,y=y+Math.imul(st,Dt)|0,_=_+Math.imul(et,Ot)|0,l=l+Math.imul(et,Rt)|0,l=l+Math.imul(X,Ot)|0,y=y+Math.imul(X,Rt)|0,_=_+Math.imul(G,Lt)|0,l=l+Math.imul(G,Nt)|0,l=l+Math.imul(it,Lt)|0,y=y+Math.imul(it,Nt)|0,_=_+Math.imul(V,It)|0,l=l+Math.imul(V,Et)|0,l=l+Math.imul(J,It)|0,y=y+Math.imul(J,Et)|0,_=_+Math.imul(B,Bt)|0,l=l+Math.imul(B,qt)|0,l=l+Math.imul($,Bt)|0,y=y+Math.imul($,qt)|0;var fi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(fi>>>26)|0,fi&=67108863,_=Math.imul(vt,bt),l=Math.imul(vt,yt),l=l+Math.imul(Mt,bt)|0,y=Math.imul(Mt,yt),_=_+Math.imul(_t,kt)|0,l=l+Math.imul(_t,St)|0,l=l+Math.imul(wt,kt)|0,y=y+Math.imul(wt,St)|0,_=_+Math.imul(mt,Pt)|0,l=l+Math.imul(mt,At)|0,l=l+Math.imul(gt,Pt)|0,y=y+Math.imul(gt,At)|0,_=_+Math.imul(ht,Ct)|0,l=l+Math.imul(ht,xt)|0,l=l+Math.imul(pt,Ct)|0,y=y+Math.imul(pt,xt)|0,_=_+Math.imul(at,Tt)|0,l=l+Math.imul(at,Dt)|0,l=l+Math.imul(nt,Tt)|0,y=y+Math.imul(nt,Dt)|0,_=_+Math.imul(lt,Ot)|0,l=l+Math.imul(lt,Rt)|0,l=l+Math.imul(st,Ot)|0,y=y+Math.imul(st,Rt)|0,_=_+Math.imul(et,Lt)|0,l=l+Math.imul(et,Nt)|0,l=l+Math.imul(X,Lt)|0,y=y+Math.imul(X,Nt)|0,_=_+Math.imul(G,It)|0,l=l+Math.imul(G,Et)|0,l=l+Math.imul(it,It)|0,y=y+Math.imul(it,Et)|0,_=_+Math.imul(V,Bt)|0,l=l+Math.imul(V,qt)|0,l=l+Math.imul(J,Bt)|0,y=y+Math.imul(J,qt)|0,_=_+Math.imul(B,Ft)|0,l=l+Math.imul(B,Ut)|0,l=l+Math.imul($,Ft)|0,y=y+Math.imul($,Ut)|0;var di=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(di>>>26)|0,di&=67108863,_=Math.imul(vt,kt),l=Math.imul(vt,St),l=l+Math.imul(Mt,kt)|0,y=Math.imul(Mt,St),_=_+Math.imul(_t,Pt)|0,l=l+Math.imul(_t,At)|0,l=l+Math.imul(wt,Pt)|0,y=y+Math.imul(wt,At)|0,_=_+Math.imul(mt,Ct)|0,l=l+Math.imul(mt,xt)|0,l=l+Math.imul(gt,Ct)|0,y=y+Math.imul(gt,xt)|0,_=_+Math.imul(ht,Tt)|0,l=l+Math.imul(ht,Dt)|0,l=l+Math.imul(pt,Tt)|0,y=y+Math.imul(pt,Dt)|0,_=_+Math.imul(at,Ot)|0,l=l+Math.imul(at,Rt)|0,l=l+Math.imul(nt,Ot)|0,y=y+Math.imul(nt,Rt)|0,_=_+Math.imul(lt,Lt)|0,l=l+Math.imul(lt,Nt)|0,l=l+Math.imul(st,Lt)|0,y=y+Math.imul(st,Nt)|0,_=_+Math.imul(et,It)|0,l=l+Math.imul(et,Et)|0,l=l+Math.imul(X,It)|0,y=y+Math.imul(X,Et)|0,_=_+Math.imul(G,Bt)|0,l=l+Math.imul(G,qt)|0,l=l+Math.imul(it,Bt)|0,y=y+Math.imul(it,qt)|0,_=_+Math.imul(V,Ft)|0,l=l+Math.imul(V,Ut)|0,l=l+Math.imul(J,Ft)|0,y=y+Math.imul(J,Ut)|0;var hi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(hi>>>26)|0,hi&=67108863,_=Math.imul(vt,Pt),l=Math.imul(vt,At),l=l+Math.imul(Mt,Pt)|0,y=Math.imul(Mt,At),_=_+Math.imul(_t,Ct)|0,l=l+Math.imul(_t,xt)|0,l=l+Math.imul(wt,Ct)|0,y=y+Math.imul(wt,xt)|0,_=_+Math.imul(mt,Tt)|0,l=l+Math.imul(mt,Dt)|0,l=l+Math.imul(gt,Tt)|0,y=y+Math.imul(gt,Dt)|0,_=_+Math.imul(ht,Ot)|0,l=l+Math.imul(ht,Rt)|0,l=l+Math.imul(pt,Ot)|0,y=y+Math.imul(pt,Rt)|0,_=_+Math.imul(at,Lt)|0,l=l+Math.imul(at,Nt)|0,l=l+Math.imul(nt,Lt)|0,y=y+Math.imul(nt,Nt)|0,_=_+Math.imul(lt,It)|0,l=l+Math.imul(lt,Et)|0,l=l+Math.imul(st,It)|0,y=y+Math.imul(st,Et)|0,_=_+Math.imul(et,Bt)|0,l=l+Math.imul(et,qt)|0,l=l+Math.imul(X,Bt)|0,y=y+Math.imul(X,qt)|0,_=_+Math.imul(G,Ft)|0,l=l+Math.imul(G,Ut)|0,l=l+Math.imul(it,Ft)|0,y=y+Math.imul(it,Ut)|0;var pi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(pi>>>26)|0,pi&=67108863,_=Math.imul(vt,Ct),l=Math.imul(vt,xt),l=l+Math.imul(Mt,Ct)|0,y=Math.imul(Mt,xt),_=_+Math.imul(_t,Tt)|0,l=l+Math.imul(_t,Dt)|0,l=l+Math.imul(wt,Tt)|0,y=y+Math.imul(wt,Dt)|0,_=_+Math.imul(mt,Ot)|0,l=l+Math.imul(mt,Rt)|0,l=l+Math.imul(gt,Ot)|0,y=y+Math.imul(gt,Rt)|0,_=_+Math.imul(ht,Lt)|0,l=l+Math.imul(ht,Nt)|0,l=l+Math.imul(pt,Lt)|0,y=y+Math.imul(pt,Nt)|0,_=_+Math.imul(at,It)|0,l=l+Math.imul(at,Et)|0,l=l+Math.imul(nt,It)|0,y=y+Math.imul(nt,Et)|0,_=_+Math.imul(lt,Bt)|0,l=l+Math.imul(lt,qt)|0,l=l+Math.imul(st,Bt)|0,y=y+Math.imul(st,qt)|0,_=_+Math.imul(et,Ft)|0,l=l+Math.imul(et,Ut)|0,l=l+Math.imul(X,Ft)|0,y=y+Math.imul(X,Ut)|0;var mi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(mi>>>26)|0,mi&=67108863,_=Math.imul(vt,Tt),l=Math.imul(vt,Dt),l=l+Math.imul(Mt,Tt)|0,y=Math.imul(Mt,Dt),_=_+Math.imul(_t,Ot)|0,l=l+Math.imul(_t,Rt)|0,l=l+Math.imul(wt,Ot)|0,y=y+Math.imul(wt,Rt)|0,_=_+Math.imul(mt,Lt)|0,l=l+Math.imul(mt,Nt)|0,l=l+Math.imul(gt,Lt)|0,y=y+Math.imul(gt,Nt)|0,_=_+Math.imul(ht,It)|0,l=l+Math.imul(ht,Et)|0,l=l+Math.imul(pt,It)|0,y=y+Math.imul(pt,Et)|0,_=_+Math.imul(at,Bt)|0,l=l+Math.imul(at,qt)|0,l=l+Math.imul(nt,Bt)|0,y=y+Math.imul(nt,qt)|0,_=_+Math.imul(lt,Ft)|0,l=l+Math.imul(lt,Ut)|0,l=l+Math.imul(st,Ft)|0,y=y+Math.imul(st,Ut)|0;var gi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(gi>>>26)|0,gi&=67108863,_=Math.imul(vt,Ot),l=Math.imul(vt,Rt),l=l+Math.imul(Mt,Ot)|0,y=Math.imul(Mt,Rt),_=_+Math.imul(_t,Lt)|0,l=l+Math.imul(_t,Nt)|0,l=l+Math.imul(wt,Lt)|0,y=y+Math.imul(wt,Nt)|0,_=_+Math.imul(mt,It)|0,l=l+Math.imul(mt,Et)|0,l=l+Math.imul(gt,It)|0,y=y+Math.imul(gt,Et)|0,_=_+Math.imul(ht,Bt)|0,l=l+Math.imul(ht,qt)|0,l=l+Math.imul(pt,Bt)|0,y=y+Math.imul(pt,qt)|0,_=_+Math.imul(at,Ft)|0,l=l+Math.imul(at,Ut)|0,l=l+Math.imul(nt,Ft)|0,y=y+Math.imul(nt,Ut)|0;var _i=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(_i>>>26)|0,_i&=67108863,_=Math.imul(vt,Lt),l=Math.imul(vt,Nt),l=l+Math.imul(Mt,Lt)|0,y=Math.imul(Mt,Nt),_=_+Math.imul(_t,It)|0,l=l+Math.imul(_t,Et)|0,l=l+Math.imul(wt,It)|0,y=y+Math.imul(wt,Et)|0,_=_+Math.imul(mt,Bt)|0,l=l+Math.imul(mt,qt)|0,l=l+Math.imul(gt,Bt)|0,y=y+Math.imul(gt,qt)|0,_=_+Math.imul(ht,Ft)|0,l=l+Math.imul(ht,Ut)|0,l=l+Math.imul(pt,Ft)|0,y=y+Math.imul(pt,Ut)|0;var wi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(wi>>>26)|0,wi&=67108863,_=Math.imul(vt,It),l=Math.imul(vt,Et),l=l+Math.imul(Mt,It)|0,y=Math.imul(Mt,Et),_=_+Math.imul(_t,Bt)|0,l=l+Math.imul(_t,qt)|0,l=l+Math.imul(wt,Bt)|0,y=y+Math.imul(wt,qt)|0,_=_+Math.imul(mt,Ft)|0,l=l+Math.imul(mt,Ut)|0,l=l+Math.imul(gt,Ft)|0,y=y+Math.imul(gt,Ut)|0;var vi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(vi>>>26)|0,vi&=67108863,_=Math.imul(vt,Bt),l=Math.imul(vt,qt),l=l+Math.imul(Mt,Bt)|0,y=Math.imul(Mt,qt),_=_+Math.imul(_t,Ft)|0,l=l+Math.imul(_t,Ut)|0,l=l+Math.imul(wt,Ft)|0,y=y+Math.imul(wt,Ut)|0;var Mi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(Mi>>>26)|0,Mi&=67108863,_=Math.imul(vt,Ft),l=Math.imul(vt,Ut),l=l+Math.imul(Mt,Ft)|0,y=Math.imul(Mt,Ut);var bi=(P+_|0)+((l&8191)<<13)|0;return P=(y+(l>>>13)|0)+(bi>>>26)|0,bi&=67108863,v[0]=ri,v[1]=ni,v[2]=oi,v[3]=si,v[4]=ai,v[5]=li,v[6]=ui,v[7]=ci,v[8]=fi,v[9]=di,v[10]=hi,v[11]=pi,v[12]=mi,v[13]=gi,v[14]=_i,v[15]=wi,v[16]=vi,v[17]=Mi,v[18]=bi,P!==0&&(v[19]=P,u.length++),u};Math.imul||(L=N);function O(p,t,s){s.negative=t.negative^p.negative,s.length=p.length+t.length;for(var u=0,f=0,h=0;h<s.length-1;h++){var v=f;f=0;for(var P=u&67108863,_=Math.min(h,t.length-1),l=Math.max(0,h-p.length+1);l<=_;l++){var y=h-l,U=p.words[y]|0,B=t.words[l]|0,$=U*B,K=$&67108863;v=v+($/67108864|0)|0,K=K+P|0,P=K&67108863,v=v+(K>>>26)|0,f+=v>>>26,v&=67108863}s.words[h]=P,u=v,v=f}return u!==0?s.words[h]=u:s.length--,s._strip()}function F(p,t,s){return O(p,t,s)}e.prototype.mulTo=function(t,s){var u,f=this.length+t.length;return this.length===10&&t.length===10?u=L(this,t,s):f<63?u=N(this,t,s):f<1024?u=O(this,t,s):u=F(this,t,s),u};function q(p,t){this.x=p,this.y=t}q.prototype.makeRBT=function(t){for(var s=new Array(t),u=e.prototype._countBits(t)-1,f=0;f<t;f++)s[f]=this.revBin(f,u,t);return s},q.prototype.revBin=function(t,s,u){if(t===0||t===u-1)return t;for(var f=0,h=0;h<s;h++)f|=(t&1)<<s-h-1,t>>=1;return f},q.prototype.permute=function(t,s,u,f,h,v){for(var P=0;P<v;P++)f[P]=s[t[P]],h[P]=u[t[P]]},q.prototype.transform=function(t,s,u,f,h,v){this.permute(v,t,s,u,f,h);for(var P=1;P<h;P<<=1)for(var _=P<<1,l=Math.cos(2*Math.PI/_),y=Math.sin(2*Math.PI/_),U=0;U<h;U+=_)for(var B=l,$=y,K=0;K<P;K++){var V=u[U+K],J=f[U+K],rt=u[U+K+P],G=f[U+K+P],it=B*rt-$*G;G=B*G+$*rt,rt=it,u[U+K]=V+rt,f[U+K]=J+G,u[U+K+P]=V-rt,f[U+K+P]=J-G,K!==_&&(it=l*B-y*$,$=l*$+y*B,B=it)}},q.prototype.guessLen13b=function(t,s){var u=Math.max(s,t)|1,f=u&1,h=0;for(u=u/2|0;u;u=u>>>1)h++;return 1<<h+1+f},q.prototype.conjugate=function(t,s,u){if(!(u<=1))for(var f=0;f<u/2;f++){var h=t[f];t[f]=t[u-f-1],t[u-f-1]=h,h=s[f],s[f]=-s[u-f-1],s[u-f-1]=-h}},q.prototype.normalize13b=function(t,s){for(var u=0,f=0;f<s/2;f++){var h=Math.round(t[2*f+1]/s)*8192+Math.round(t[2*f]/s)+u;t[f]=h&67108863,h<67108864?u=0:u=h/67108864|0}return t},q.prototype.convert13b=function(t,s,u,f){for(var h=0,v=0;v<s;v++)h=h+(t[v]|0),u[2*v]=h&8191,h=h>>>13,u[2*v+1]=h&8191,h=h>>>13;for(v=2*s;v<f;++v)u[v]=0;i(h===0),i((h&-8192)===0)},q.prototype.stub=function(t){for(var s=new Array(t),u=0;u<t;u++)s[u]=0;return s},q.prototype.mulp=function(t,s,u){var f=2*this.guessLen13b(t.length,s.length),h=this.makeRBT(f),v=this.stub(f),P=new Array(f),_=new Array(f),l=new Array(f),y=new Array(f),U=new Array(f),B=new Array(f),$=u.words;$.length=f,this.convert13b(t.words,t.length,P,f),this.convert13b(s.words,s.length,y,f),this.transform(P,v,_,l,f,h),this.transform(y,v,U,B,f,h);for(var K=0;K<f;K++){var V=_[K]*U[K]-l[K]*B[K];l[K]=_[K]*B[K]+l[K]*U[K],_[K]=V}return this.conjugate(_,l,f),this.transform(_,l,$,v,f,h),this.conjugate($,v,f),this.normalize13b($,f),u.negative=t.negative^s.negative,u.length=t.length+s.length,u._strip()},e.prototype.mul=function(t){var s=new e(null);return s.words=new Array(this.length+t.length),this.mulTo(t,s)},e.prototype.mulf=function(t){var s=new e(null);return s.words=new Array(this.length+t.length),F(this,t,s)},e.prototype.imul=function(t){return this.clone().mulTo(t,this)},e.prototype.imuln=function(t){var s=t<0;s&&(t=-t),i(typeof t=="number"),i(t<67108864);for(var u=0,f=0;f<this.length;f++){var h=(this.words[f]|0)*t,v=(h&67108863)+(u&67108863);u>>=26,u+=h/67108864|0,u+=v>>>26,this.words[f]=v&67108863}return u!==0&&(this.words[f]=u,this.length++),this.length=t===0?1:this.length,s?this.ineg():this},e.prototype.muln=function(t){return this.clone().imuln(t)},e.prototype.sqr=function(){return this.mul(this)},e.prototype.isqr=function(){return this.imul(this.clone())},e.prototype.pow=function(t){var s=R(t);if(s.length===0)return new e(1);for(var u=this,f=0;f<s.length&&s[f]===0;f++,u=u.sqr());if(++f<s.length)for(var h=u.sqr();f<s.length;f++,h=h.sqr())s[f]!==0&&(u=u.mul(h));return u},e.prototype.iushln=function(t){i(typeof t=="number"&&t>=0);var s=t%26,u=(t-s)/26,f=67108863>>>26-s<<26-s,h;if(s!==0){var v=0;for(h=0;h<this.length;h++){var P=this.words[h]&f,_=(this.words[h]|0)-P<<s;this.words[h]=_|v,v=P>>>26-s}v&&(this.words[h]=v,this.length++)}if(u!==0){for(h=this.length-1;h>=0;h--)this.words[h+u]=this.words[h];for(h=0;h<u;h++)this.words[h]=0;this.length+=u}return this._strip()},e.prototype.ishln=function(t){return i(this.negative===0),this.iushln(t)},e.prototype.iushrn=function(t,s,u){i(typeof t=="number"&&t>=0);var f;s?f=(s-s%26)/26:f=0;var h=t%26,v=Math.min((t-h)/26,this.length),P=67108863^67108863>>>h<<h,_=u;if(f-=v,f=Math.max(0,f),_){for(var l=0;l<v;l++)_.words[l]=this.words[l];_.length=v}if(v!==0)if(this.length>v)for(this.length-=v,l=0;l<this.length;l++)this.words[l]=this.words[l+v];else this.words[0]=0,this.length=1;var y=0;for(l=this.length-1;l>=0&&(y!==0||l>=f);l--){var U=this.words[l]|0;this.words[l]=y<<26-h|U>>>h,y=U&P}return _&&y!==0&&(_.words[_.length++]=y),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},e.prototype.ishrn=function(t,s,u){return i(this.negative===0),this.iushrn(t,s,u)},e.prototype.shln=function(t){return this.clone().ishln(t)},e.prototype.ushln=function(t){return this.clone().iushln(t)},e.prototype.shrn=function(t){return this.clone().ishrn(t)},e.prototype.ushrn=function(t){return this.clone().iushrn(t)},e.prototype.testn=function(t){i(typeof t=="number"&&t>=0);var s=t%26,u=(t-s)/26,f=1<<s;if(this.length<=u)return!1;var h=this.words[u];return!!(h&f)},e.prototype.imaskn=function(t){i(typeof t=="number"&&t>=0);var s=t%26,u=(t-s)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(s!==0&&u++,this.length=Math.min(u,this.length),s!==0){var f=67108863^67108863>>>s<<s;this.words[this.length-1]&=f}return this._strip()},e.prototype.maskn=function(t){return this.clone().imaskn(t)},e.prototype.iaddn=function(t){return i(typeof t=="number"),i(t<67108864),t<0?this.isubn(-t):this.negative!==0?this.length===1&&(this.words[0]|0)<=t?(this.words[0]=t-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},e.prototype._iaddn=function(t){this.words[0]+=t;for(var s=0;s<this.length&&this.words[s]>=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},e.prototype.isubn=function(t){if(i(typeof t=="number"),i(t<67108864),t<0)return this.iaddn(-t);if(this.negative!==0)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s<this.length&&this.words[s]<0;s++)this.words[s]+=67108864,this.words[s+1]-=1;return this._strip()},e.prototype.addn=function(t){return this.clone().iaddn(t)},e.prototype.subn=function(t){return this.clone().isubn(t)},e.prototype.iabs=function(){return this.negative=0,this},e.prototype.abs=function(){return this.clone().iabs()},e.prototype._ishlnsubmul=function(t,s,u){var f=t.length+u,h;this._expand(f);var v,P=0;for(h=0;h<t.length;h++){v=(this.words[h+u]|0)+P;var _=(t.words[h]|0)*s;v-=_&67108863,P=(v>>26)-(_/67108864|0),this.words[h+u]=v&67108863}for(;h<this.length-u;h++)v=(this.words[h+u]|0)+P,P=v>>26,this.words[h+u]=v&67108863;if(P===0)return this._strip();for(i(P===-1),P=0,h=0;h<this.length;h++)v=-(this.words[h]|0)+P,P=v>>26,this.words[h]=v&67108863;return this.negative=1,this._strip()},e.prototype._wordDiv=function(t,s){var u=this.length-t.length,f=this.clone(),h=t,v=h.words[h.length-1]|0,P=this._countBits(v);u=26-P,u!==0&&(h=h.ushln(u),f.iushln(u),v=h.words[h.length-1]|0);var _=f.length-h.length,l;if(s!=="mod"){l=new e(null),l.length=_+1,l.words=new Array(l.length);for(var y=0;y<l.length;y++)l.words[y]=0}var U=f.clone()._ishlnsubmul(h,1,_);U.negative===0&&(f=U,l&&(l.words[_]=1));for(var B=_-1;B>=0;B--){var $=(f.words[h.length+B]|0)*67108864+(f.words[h.length+B-1]|0);for($=Math.min($/v|0,67108863),f._ishlnsubmul(h,$,B);f.negative!==0;)$--,f.negative=0,f._ishlnsubmul(h,1,B),f.isZero()||(f.negative^=1);l&&(l.words[B]=$)}return l&&l._strip(),f._strip(),s!=="div"&&u!==0&&f.iushrn(u),{div:l||null,mod:f}},e.prototype.divmod=function(t,s,u){if(i(!t.isZero()),this.isZero())return{div:new e(0),mod:new e(0)};var f,h,v;return this.negative!==0&&t.negative===0?(v=this.neg().divmod(t,s),s!=="mod"&&(f=v.div.neg()),s!=="div"&&(h=v.mod.neg(),u&&h.negative!==0&&h.iadd(t)),{div:f,mod:h}):this.negative===0&&t.negative!==0?(v=this.divmod(t.neg(),s),s!=="mod"&&(f=v.div.neg()),{div:f,mod:v.mod}):(this.negative&t.negative)!==0?(v=this.neg().divmod(t.neg(),s),s!=="div"&&(h=v.mod.neg(),u&&h.negative!==0&&h.isub(t)),{div:v.div,mod:h}):t.length>this.length||this.cmp(t)<0?{div:new e(0),mod:this}:t.length===1?s==="div"?{div:this.divn(t.words[0]),mod:null}:s==="mod"?{div:null,mod:new e(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new e(this.modrn(t.words[0]))}:this._wordDiv(t,s)},e.prototype.div=function(t){return this.divmod(t,"div",!1).div},e.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},e.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},e.prototype.divRound=function(t){var s=this.divmod(t);if(s.mod.isZero())return s.div;var u=s.div.negative!==0?s.mod.isub(t):s.mod,f=t.ushrn(1),h=t.andln(1),v=u.cmp(f);return v<0||h===1&&v===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},e.prototype.modrn=function(t){var s=t<0;s&&(t=-t),i(t<=67108863);for(var u=(1<<26)%t,f=0,h=this.length-1;h>=0;h--)f=(u*f+(this.words[h]|0))%t;return s?-f:f},e.prototype.modn=function(t){return this.modrn(t)},e.prototype.idivn=function(t){var s=t<0;s&&(t=-t),i(t<=67108863);for(var u=0,f=this.length-1;f>=0;f--){var h=(this.words[f]|0)+u*67108864;this.words[f]=h/t|0,u=h%t}return this._strip(),s?this.ineg():this},e.prototype.divn=function(t){return this.clone().idivn(t)},e.prototype.egcd=function(t){i(t.negative===0),i(!t.isZero());var s=this,u=t.clone();s.negative!==0?s=s.umod(t):s=s.clone();for(var f=new e(1),h=new e(0),v=new e(0),P=new e(1),_=0;s.isEven()&&u.isEven();)s.iushrn(1),u.iushrn(1),++_;for(var l=u.clone(),y=s.clone();!s.isZero();){for(var U=0,B=1;(s.words[0]&B)===0&&U<26;++U,B<<=1);if(U>0)for(s.iushrn(U);U-- >0;)(f.isOdd()||h.isOdd())&&(f.iadd(l),h.isub(y)),f.iushrn(1),h.iushrn(1);for(var $=0,K=1;(u.words[0]&K)===0&&$<26;++$,K<<=1);if($>0)for(u.iushrn($);$-- >0;)(v.isOdd()||P.isOdd())&&(v.iadd(l),P.isub(y)),v.iushrn(1),P.iushrn(1);s.cmp(u)>=0?(s.isub(u),f.isub(v),h.isub(P)):(u.isub(s),v.isub(f),P.isub(h))}return{a:v,b:P,gcd:u.iushln(_)}},e.prototype._invmp=function(t){i(t.negative===0),i(!t.isZero());var s=this,u=t.clone();s.negative!==0?s=s.umod(t):s=s.clone();for(var f=new e(1),h=new e(0),v=u.clone();s.cmpn(1)>0&&u.cmpn(1)>0;){for(var P=0,_=1;(s.words[0]&_)===0&&P<26;++P,_<<=1);if(P>0)for(s.iushrn(P);P-- >0;)f.isOdd()&&f.iadd(v),f.iushrn(1);for(var l=0,y=1;(u.words[0]&y)===0&&l<26;++l,y<<=1);if(l>0)for(u.iushrn(l);l-- >0;)h.isOdd()&&h.iadd(v),h.iushrn(1);s.cmp(u)>=0?(s.isub(u),f.isub(h)):(u.isub(s),h.isub(f))}var U;return s.cmpn(1)===0?U=f:U=h,U.cmpn(0)<0&&U.iadd(t),U},e.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var s=this.clone(),u=t.clone();s.negative=0,u.negative=0;for(var f=0;s.isEven()&&u.isEven();f++)s.iushrn(1),u.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;u.isEven();)u.iushrn(1);var h=s.cmp(u);if(h<0){var v=s;s=u,u=v}else if(h===0||u.cmpn(1)===0)break;s.isub(u)}while(!0);return u.iushln(f)},e.prototype.invm=function(t){return this.egcd(t).a.umod(t)},e.prototype.isEven=function(){return(this.words[0]&1)===0},e.prototype.isOdd=function(){return(this.words[0]&1)===1},e.prototype.andln=function(t){return this.words[0]&t},e.prototype.bincn=function(t){i(typeof t=="number");var s=t%26,u=(t-s)/26,f=1<<s;if(this.length<=u)return this._expand(u+1),this.words[u]|=f,this;for(var h=f,v=u;h!==0&&v<this.length;v++){var P=this.words[v]|0;P+=h,h=P>>>26,P&=67108863,this.words[v]=P}return h!==0&&(this.words[v]=h,this.length++),this},e.prototype.isZero=function(){return this.length===1&&this.words[0]===0},e.prototype.cmpn=function(t){var s=t<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var u;if(this.length>1)u=1;else{s&&(t=-t),i(t<=67108863,"Number is too big");var f=this.words[0]|0;u=f===t?0:f<t?-1:1}return this.negative!==0?-u|0:u},e.prototype.cmp=function(t){if(this.negative!==0&&t.negative===0)return-1;if(this.negative===0&&t.negative!==0)return 1;var s=this.ucmp(t);return this.negative!==0?-s|0:s},e.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var s=0,u=this.length-1;u>=0;u--){var f=this.words[u]|0,h=t.words[u]|0;if(f!==h){f<h?s=-1:f>h&&(s=1);break}}return s},e.prototype.gtn=function(t){return this.cmpn(t)===1},e.prototype.gt=function(t){return this.cmp(t)===1},e.prototype.gten=function(t){return this.cmpn(t)>=0},e.prototype.gte=function(t){return this.cmp(t)>=0},e.prototype.ltn=function(t){return this.cmpn(t)===-1},e.prototype.lt=function(t){return this.cmp(t)===-1},e.prototype.lten=function(t){return this.cmpn(t)<=0},e.prototype.lte=function(t){return this.cmp(t)<=0},e.prototype.eqn=function(t){return this.cmpn(t)===0},e.prototype.eq=function(t){return this.cmp(t)===0},e.red=function(t){return new x(t)},e.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),t.convertTo(this)._forceRed(t)},e.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},e.prototype._forceRed=function(t){return this.red=t,this},e.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},e.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},e.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},e.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},e.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},e.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},e.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},e.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},e.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},e.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},e.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},e.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},e.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},e.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var W={k256:null,p224:null,p192:null,p25519:null};function j(p,t){this.name=p,this.p=new e(t,16),this.n=this.p.bitLength(),this.k=new e(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}j.prototype._tmp=function(){var t=new e(null);return t.words=new Array(Math.ceil(this.n/13)),t},j.prototype.ireduce=function(t){var s=t,u;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),u=s.bitLength();while(u>this.n);var f=u<this.n?-1:s.ucmp(this.p);return f===0?(s.words[0]=0,s.length=1):f>0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},j.prototype.split=function(t,s){t.iushrn(this.n,0,s)},j.prototype.imulK=function(t){return t.imul(this.k)};function Z(){j.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}o(Z,j),Z.prototype.split=function(t,s){for(var u=4194303,f=Math.min(t.length,9),h=0;h<f;h++)s.words[h]=t.words[h];if(s.length=f,t.length<=9){t.words[0]=0,t.length=1;return}var v=t.words[9];for(s.words[s.length++]=v&u,h=10;h<t.length;h++){var P=t.words[h]|0;t.words[h-10]=(P&u)<<4|v>>>22,v=P}v>>>=22,t.words[h-10]=v,v===0&&t.length>10?t.length-=10:t.length-=9},Z.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var s=0,u=0;u<t.length;u++){var f=t.words[u]|0;s+=f*977,t.words[u]=s&67108863,s=f*64+(s/67108864|0)}return t.words[t.length-1]===0&&(t.length--,t.words[t.length-1]===0&&t.length--),t};function w(){j.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}o(w,j);function b(){j.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}o(b,j);function k(){j.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}o(k,j),k.prototype.imulK=function(t){for(var s=0,u=0;u<t.length;u++){var f=(t.words[u]|0)*19+s,h=f&67108863;f>>>=26,t.words[u]=h,s=f}return s!==0&&(t.words[t.length++]=s),t},e._prime=function(t){if(W[t])return W[t];var s;if(t==="k256")s=new Z;else if(t==="p224")s=new w;else if(t==="p192")s=new b;else if(t==="p25519")s=new k;else throw new Error("Unknown prime "+t);return W[t]=s,s};function x(p){if(typeof p=="string"){var t=e._prime(p);this.m=t.p,this.prime=t}else i(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}x.prototype._verify1=function(t){i(t.negative===0,"red works only with positives"),i(t.red,"red works only with red numbers")},x.prototype._verify2=function(t,s){i((t.negative|s.negative)===0,"red works only with positives"),i(t.red&&t.red===s.red,"red works only with red numbers")},x.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(m(t,t.umod(this.m)._forceRed(this)),t)},x.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},x.prototype.add=function(t,s){this._verify2(t,s);var u=t.add(s);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},x.prototype.iadd=function(t,s){this._verify2(t,s);var u=t.iadd(s);return u.cmp(this.m)>=0&&u.isub(this.m),u},x.prototype.sub=function(t,s){this._verify2(t,s);var u=t.sub(s);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},x.prototype.isub=function(t,s){this._verify2(t,s);var u=t.isub(s);return u.cmpn(0)<0&&u.iadd(this.m),u},x.prototype.shl=function(t,s){return this._verify1(t),this.imod(t.ushln(s))},x.prototype.imul=function(t,s){return this._verify2(t,s),this.imod(t.imul(s))},x.prototype.mul=function(t,s){return this._verify2(t,s),this.imod(t.mul(s))},x.prototype.isqr=function(t){return this.imul(t,t.clone())},x.prototype.sqr=function(t){return this.mul(t,t)},x.prototype.sqrt=function(t){if(t.isZero())return t.clone();var s=this.m.andln(3);if(i(s%2===1),s===3){var u=this.m.add(new e(1)).iushrn(2);return this.pow(t,u)}for(var f=this.m.subn(1),h=0;!f.isZero()&&f.andln(1)===0;)h++,f.iushrn(1);i(!f.isZero());var v=new e(1).toRed(this),P=v.redNeg(),_=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new e(2*l*l).toRed(this);this.pow(l,_).cmp(P)!==0;)l.redIAdd(P);for(var y=this.pow(l,f),U=this.pow(t,f.addn(1).iushrn(1)),B=this.pow(t,f),$=h;B.cmp(v)!==0;){for(var K=B,V=0;K.cmp(v)!==0;V++)K=K.redSqr();i(V<$);var J=this.pow(y,new e(1).iushln($-V-1));U=U.redMul(J),y=J.redSqr(),B=B.redMul(y),$=V}return U},x.prototype.invm=function(t){var s=t._invmp(this.m);return s.negative!==0?(s.negative=0,this.imod(s).redNeg()):this.imod(s)},x.prototype.pow=function(t,s){if(s.isZero())return new e(1).toRed(this);if(s.cmpn(1)===0)return t.clone();var u=4,f=new Array(1<<u);f[0]=new e(1).toRed(this),f[1]=t;for(var h=2;h<f.length;h++)f[h]=this.mul(f[h-1],t);var v=f[0],P=0,_=0,l=s.bitLength()%26;for(l===0&&(l=26),h=s.length-1;h>=0;h--){for(var y=s.words[h],U=l-1;U>=0;U--){var B=y>>U&1;if(v!==f[0]&&(v=this.sqr(v)),B===0&&P===0){_=0;continue}P<<=1,P|=B,_++,!(_!==u&&(h!==0||U!==0))&&(v=this.mul(v,f[P]),_=0,P=0)}l=26}return v},x.prototype.convertTo=function(t){var s=t.umod(this.m);return s===t?s.clone():s},x.prototype.convertFrom=function(t){var s=t.clone();return s.red=null,s},e.mont=function(t){return new C(t)};function C(p){x.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new e(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}o(C,x),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var s=this.imod(t.mul(this.rinv));return s.red=null,s},C.prototype.imul=function(t,s){if(t.isZero()||s.isZero())return t.words[0]=0,t.length=1,t;var u=t.imul(s),f=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=u.isub(f).iushrn(this.shift),v=h;return h.cmp(this.m)>=0?v=h.isub(this.m):h.cmpn(0)<0&&(v=h.iadd(this.m)),v._forceRed(this)},C.prototype.mul=function(t,s){if(t.isZero()||s.isZero())return new e(0)._forceRed(this);var u=t.mul(s),f=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=u.isub(f).iushrn(this.shift),v=h;return h.cmp(this.m)>=0?v=h.isub(this.m):h.cmpn(0)<0&&(v=h.iadd(this.m)),v._forceRed(this)},C.prototype.invm=function(t){var s=this.imod(t._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof Ui>"u"||Ui,Nr)});import{SuiClient as vo}from"@mysten/sui/client";import{normalizeSuiAddress as Mo}from"@mysten/sui/utils";import{SuiPriceServiceConnection as bo}from"@pythnetwork/pyth-sui-js";import{SdkWrapper as yo}from"@cetusprotocol/common-sdk";import{CetusClmmSDK as ko}from"@cetusprotocol/sui-clmm-sdk";import{AggregatorClient as So,Env as qr}from"@cetusprotocol/aggregator-sdk";import{FullRpcUrlMainnet as Hr}from"@cetusprotocol/common-sdk";var rr={full_rpc_url:Hr,env:"mainnet",aggregator_url:"https://api-sui.cetus.zone/router_v3",margin_trading:{package_id:"0xa079129c989dacac4f5ccb7b2bb2b8f233b13694c465466a344e2e095e987407",published_at:"0xa079129c989dacac4f5ccb7b2bb2b8f233b13694c465466a344e2e095e987407",version:0,config:{versioned_id:"0x85d30849a1e172e1f90bb42e22ed87457a8110dad7658d51c806baa84f5dcd94",admin_cap_id:"0xdae1da9a2bacb4738411365e9719b739b655ce6b737155ff58137b78c944112a",global_config_id:"0x267de967e72360eb09837bb595a0c6b54bb98a2a1ae47436ccab4a99e6b84f25",markets:"0xe0986f697a300da740d384e64c2ba010aa9caf37a54ed0cc8b4098c4d4e592d0",markets_table_id:"0xe9dd2dbc3d68c00f297dd84e57ad28f6a504effbf6b1b869b9e4138ead14c731"}},suilend:{package_id:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf",published_at:"0xe37cc7bb50fd9b6dbd3873df66fa2c554e973697f50ef97707311dc78bd08444",config:{lending_market:[{name:"Main market",slug:"main",id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",owner_cap_id:"0xf7a4defe0b6566b6a2674a02a0c61c9f99bd012eed21bc741a069eaa82d35927"},{name:"STEAMM LM",slug:"steamm-lm",id:"0xc1888ec1b81a414e427a44829310508352aec38252ee0daa9f8b181b6947de9f",type:"0x0a071f4976abae1a7f722199cf0bfcbe695ef9408a878e7d12a7ca87b7e582a6::lp_rewards::LP_REWARDS",owner_cap_id:"0x55a0f33b24e091830302726c8cfbff8cf8abd2ec1f83a4e6f4bf51c7ba3ad5ab",is_hidden:!0}],lending_market_id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",lending_market_type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",api_url:"https://d10td5ybgrf39v.cloudfront.net"}}};import{CACHE_TIME_5MIN as Yr,d as ae,getPackagerConfigs as Le}from"@cetusprotocol/common-sdk";import{Transaction as Ne}from"@mysten/sui/transactions";import{addHexPrefix as nr,d as se,getObjectFields as lr}from"@cetusprotocol/common-sdk";import{parseObligation as Vr}from"@suilend/sdk/parsers/obligation";import{getNetAprPercent as Xr,getTotalAprPercent as or,Side as sr,getFilteredRewards as ar}from"@suilend/sdk";var yi=n=>{let r=lr(n),{open_permissions_pause:i,close_permissions_pause:o,deposit_permissions_pause:e,withdraw_permissions_pause:a,borrow_permissions_pause:d,repay_permissions_pause:c}=Pi(r.permissions.toString(2));return{market_id:r.id.id,base_token:nr(r.base_token.fields.name),quote_token:nr(r.quote_token.fields.name),max_long_leverage:se(r.max_long_leverage).div(10**6).toString(),max_short_leverage:se(r.max_short_leverage).div(10**6).toString(),open_fee_rate:se(r.open_fee_rate).div(10**6).toString(),close_fee_rate:se(r.close_fee_rate).div(10**6).toString(),open_permissions_pause:i,close_permissions_pause:o,deposit_permissions_pause:e,withdraw_permissions_pause:a,borrow_permissions_pause:d,repay_permissions_pause:c}},ki=(n,r)=>{let i=lr(n);return{created_at:i.created_ts,position_id:i.id.id,init_deposit_amount:i.init_deposit_amount,is_long:i.is_long,lending_market_id:i.lending_market_id,obligation_owner_cap:i.obligation_owner_cap.fields.obligation_id,market_id:i.market_id,position_cap_id:r}},Si=(n,r,i,o,e)=>{let a=Vr(r,i),d=Xr(a,e,o);if(!a.deposits||a.deposits.length===0)throw new Error("No deposits found in obligation data");let c=a.deposits[0],g=se(c.reserve.config.closeLtvPct).div(100).toString(),m=se(c.reserve.config.openLtvPct).div(100).toString(),M=a.depositedAmountUsd.gt(0)?a.borrowedAmountUsd.div(a.depositedAmountUsd).toString():"0",S=se(1).div(g).toString(),A=se(g).sub(M).toString(),T="0",D="0",R="0",N="0";if(a.borrows&&a.borrows.length>0){let L=a.borrows[0],O=e[L?.coinType];O&&(T=or(sr.BORROW,L?.reserve.borrowAprPercent,ar(O.borrow)).toString()),R=L.borrowedAmountUsd.toString(),N=L.borrowedAmount.toString()}if(a.deposits&&a.deposits.length>0){let L=a.deposits[0],O=e[L?.coinType];O&&(D=or(sr.DEPOSIT,L?.reserve.depositAprPercent,ar(O.deposit)).toString())}return{...n,...a,origin_obligation:r,net_apr_percent:d.toString(),supplied_apr:se(D).toString(),borrowed_apr:se(T).toString(),close_ltv:g,open_ltv:m,cr:M,ltr:S,liquidation_buffer:A,deposited_amount_usd:c.depositedAmountUsd.toString(),borrowed_amount_usd:R,deposited_amount:c.depositedAmount.toString(),borrowed_amount:N}},Pi=n=>{let r=n.length,i=n.substring(r-1,r)==="0",o=n.substring(r-2,r-1)==="0",e=n.substring(r-3,r-2)==="0",a=n.substring(r-4,r-3)==="0",d=n.substring(r-5,r-4)==="0",c=n.substring(r-6,r-5)==="0";return{open_permissions_pause:i,close_permissions_pause:o,deposit_permissions_pause:e,withdraw_permissions_pause:d,borrow_permissions_pause:a,repay_permissions_pause:c}};import{getFilteredRewards as he,getStakingYieldAprPercent as ur,getTotalAprPercent as Ie,Side as ke}from"@suilend/sdk";import{BaseError as Jr}from"@cetusprotocol/common-sdk";var Re=class extends Jr{constructor(r,i,o){super(r,i||"UnknownError",o)}static isCrossSwapErrorCode(r,i){return this.isErrorCode(r,i)}},Gt=(n,r,i)=>{let o={...i,stack:r instanceof Error?r.stack:void 0};throw r instanceof Error?new Re(r.message,n,o):new Re(r,n,o)};var Ee=class{constructor(r){this.createMarket=async r=>{let{package_id:i}=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:e,markets:a,global_config_id:d}=Le(this._sdk.sdkOptions.margin_trading),c=new Ne;return c.moveCall({target:`${i}::market::create_market`,arguments:[c.object(e),c.object(d),c.object(a),c.pure.u64(r.open_fee_rate),c.pure.u64(r.close_fee_rate),c.object(o)],typeArguments:[r.base_token,r.quote_token]}),c};this.updateMarketFeeRate=async r=>{let{package_id:i}=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:e}=Le(this._sdk.sdkOptions.margin_trading),{market_id:a,open_fee_rate:d,close_fee_rate:c}=r,g=new Ne;return g.moveCall({target:`${i}::market::set_fee_rate`,arguments:[g.object(e),g.object(a),g.pure.u64(d),g.pure.u64(c),g.object(o)],typeArguments:[]}),g};this.claimMarketFees=async(r,i)=>{let{package_id:o}=this._sdk.sdkOptions.margin_trading,{versioned_id:e,admin_cap_id:a}=Le(this._sdk.sdkOptions.margin_trading),d=i||new Ne,{base_token:c,quote_token:g}=await this._sdk.MarketModules.getMarketInfo(r);return d.moveCall({target:`${o}::market::claim_fees`,arguments:[d.object(a),d.object(r),d.object(e)],typeArguments:[c,g]}),d};this.claimAllMarketFees=async r=>{let i=new Ne;for(let o=0;o<r.length;o++){let e=r[o];this.claimMarketFees(e,i)}return i};this.getMarginTradingConfig=async()=>{let{package_id:r}=this._sdk.sdkOptions.margin_trading;try{let i=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${r}::versioned::InitEvent`}),o=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${r}::admin_cap::InitEvent`}),e=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${r}::config::InitEvent`}),d=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${r}::market::InitEvent`})).data[0].parsedJson.markets_id,g=(await this._sdk.FullClient.getObject({id:d,options:{showContent:!0}})).data.content.fields.list.fields.id.id;return{versioned_id:i.data[0].parsedJson.versioned_id,admin_cap_id:o.data[0].parsedJson.admin_cap_id,global_config_id:e.data[0].parsedJson.global_config_id,markets:d,markets_table_id:g}}catch(i){return Gt("FetchError",i),{versioned_id:"",admin_cap_id:"",global_config_id:"",markets_table_id:"",markets:""}}};this.getMarketList=async(r=!1)=>{let o=this._sdk.getCache("margin_trading_markets_list",r);if(o)return o;let{package_id:e}=this._sdk.sdkOptions.margin_trading,a=[];try{let d=`${e}::market::CreateMarketEvent`,g=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:d})).data.map(m=>m.parsedJson.market_id);return g.length>0?((await this._sdk.FullClient.batchGetObjects(g,{showContent:!0,showType:!0})).forEach(M=>{let S=yi(M),A=`margin_trading_market_info_${S.market_id}`;this._sdk.updateCache(A,S),a.push(S)}),a):(Gt("MarketNotFound","Market not found"),[])}catch(d){return Gt("FetchError",d),[]}};this.getMarketInfo=async(r,i=!1)=>{let o=`margin_trading_market_info_${r}`,e=this._sdk.getCache(o,i);if(e)return e;try{let a=await this._sdk.FullClient.getObject({id:r,options:{showContent:!0}}),d=yi(a);return this._sdk.updateCache(o,d,Yr),d}catch(a){return Gt("FetchError",a),{}}};this.getMarketSuilendInfo=async r=>{try{let{base_token:i,quote_token:o}=await this.getMarketInfo(r),{lending_market_id:e}=Le(this._sdk.sdkOptions.suilend),{allLendingMarketData:a,lstAprPercentMap:d}=await this._sdk.SuiLendModule.getLendingMarketData(!0),{base_reserve_map_info:c,quote_reserve_map_info:g}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(i,o,a);console.log("\u{1F680}\u{1F680}\u{1F680} ~ marketModules.ts:188 ~ MarketModules ~ base_reserve_map_info:",c);let m=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:a,lstAprPercentMap:d},!0),M=m[e].rewardMap[i],S=m[e].rewardMap[o],{depositedAmountUsd:A,borrowedAmountUsd:T,depositAprPercent:D,borrowAprPercent:R,depositedAmount:N,borrowedAmount:L}=c,{depositLimit:O,borrowLimit:F}=c.config,{depositedAmountUsd:q,borrowedAmountUsd:W,depositAprPercent:j,borrowAprPercent:Z,depositedAmount:w,borrowedAmount:b}=g,{depositLimit:k,borrowLimit:x}=g.config,C=Ie(ke.DEPOSIT,D,he(M.deposit),ur(ke.DEPOSIT,i,d)),p=Ie(ke.BORROW,R,he(M.borrow)),t=Ie(ke.DEPOSIT,j,he(S.deposit),ur(ke.DEPOSIT,i,d)),s=Ie(ke.BORROW,Z,he(S.borrow)),u=ae(q.toString()).sub(W.toString()).toString(),f=ae(A.toString()).sub(T.toString()).toString(),h=ae(O.toString()).sub(ae(N.toString())).toString(),v=ae(F.toString()).sub(ae(L.toString())).toString(),P=ae(k.toString()).sub(ae(w.toString())).toString(),_=ae(x.toString()).sub(ae(b.toString())).toString();return{long_liquidity:u,short_liquidity:f,base_total_deposit_apr_percent:C.toString(),base_total_borrow_apr_percent:p.toString(),quote_total_deposit_apr_percent:t.toString(),quote_total_borrow_apr_percent:s.toString(),base_token_available_deposit_amount:h,base_token_available_borrow_amount:v,quote_token_available_deposit_amount:P,quote_token_available_borrow_amount:_,base_deposit_rewards:he(M.deposit),quote_deposit_rewards:he(S.deposit),base_borrow_rewards:he(M.borrow),quote_borrow_rewards:he(S.borrow),base_deposit_apr_percent:D.toString(),base_borrow_apr_percent:R.toString(),quote_deposit_apr_percent:j.toString(),quote_borrow_apr_percent:Z.toString(),obligations:m[e],base_reserve_map_info:c,quote_reserve_map_info:g}}catch(i){return Gt("FetchError",i),{}}};this._sdk=r}};import{CLOCK_ADDRESS as Se,getPackagerConfigs as Jt}from"@cetusprotocol/common-sdk";import{Transaction as Ht}from"@mysten/sui/transactions";var Be=class{constructor(r){this.queryGlobalPermissions=async()=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:i}=Jt(r),o=await this._sdk.FullClient.getObject({id:i,options:{showContent:!0}});if(o){let e=o.data.content.fields.permissions.toString(2),{open_permissions_pause:a,close_permissions_pause:d,deposit_permissions_pause:c,withdraw_permissions_pause:g,borrow_permissions_pause:m,repay_permissions_pause:M}=Pi(e);return{open_permissions_pause:a,close_permissions_pause:d,deposit_permissions_pause:c,withdraw_permissions_pause:g,borrow_permissions_pause:m,repay_permissions_pause:M}}};this.updateGlobalPermissions=async r=>{let i=new Ht;return this.updateGlobalOpenPositionPermissions(r,i),this.updateGlobalClosePositionPermissions(r,i),this.updateGlobalDepositPermissions(r,i),this.updateGlobalBorrowPermissions(r,i),this.updateGlobalWithdrawPermissions(r,i),this.updateGlobalRepayPermissions(r,i),i};this.updateGlobalOpenPositionPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_open_position_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalClosePositionPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_close_position_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalDepositPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_deposit_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalBorrowPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_borrow_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalWithdrawPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_withdraw_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalRepayPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_repay_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateMarketCreatePositionPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_open_position_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketClosePositionPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_close_position_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketDepositPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_deposit_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketWithdrawPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_withdraw_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketBorrowPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_borrow_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketRepayPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_repay_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketPermissions=async(r,i,o)=>{let e=o||new Ht;return this.updateMarketCreatePositionPermissions(r,i,e),this.updateMarketClosePositionPermissions(r,i,e),this.updateMarketDepositPermissions(r,i,e),this.updateMarketWithdrawPermissions(r,i,e),this.updateMarketBorrowPermissions(r,i,e),this.updateMarketRepayPermissions(r,i,e),e};this._sdk=r}};import{CACHE_TIME_24H as Vn,CLOCK_ADDRESS as be,CoinAssist as Q,d as I,getObjectFields as Ar,getPackagerConfigs as jt,removeHexPrefix as Ce,SUI_SYSTEM_STATE_OBJECT_ID as Cr,U64_MAX as He}from"@cetusprotocol/common-sdk";var Qr=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Ci=Math.ceil,Qt=Math.floor,Vt="[BigNumber Error] ",cr=Vt+"Number primitive has more than 15 significant digits: ",ie=1e14,tt=14,xi=9007199254740991,Ti=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],pe=1e7,Wt=1e9;function fr(n){var r,i,o,e=O.prototype={constructor:O,toString:null,valueOf:null},a=new O(1),d=20,c=4,g=-7,m=21,M=-1e7,S=1e7,A=!1,T=1,D=0,R={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},N="0123456789abcdefghijklmnopqrstuvwxyz",L=!0;function O(w,b){var k,x,C,p,t,s,u,f,h=this;if(!(h instanceof O))return new O(w,b);if(b==null){if(w&&w._isBigNumber===!0){h.s=w.s,!w.c||w.e>S?h.c=h.e=null:w.e<M?h.c=[h.e=0]:(h.e=w.e,h.c=w.c.slice());return}if((s=typeof w=="number")&&w*0==0){if(h.s=1/w<0?(w=-w,-1):1,w===~~w){for(p=0,t=w;t>=10;t/=10,p++);p>S?h.c=h.e=null:(h.e=p,h.c=[w]);return}f=String(w)}else{if(!Qr.test(f=String(w)))return o(h,f,s);h.s=f.charCodeAt(0)==45?(f=f.slice(1),-1):1}(p=f.indexOf("."))>-1&&(f=f.replace(".","")),(t=f.search(/e/i))>0?(p<0&&(p=t),p+=+f.slice(t+1),f=f.substring(0,t)):p<0&&(p=f.length)}else{if(ct(b,2,N.length,"Base"),b==10&&L)return h=new O(w),j(h,d+h.e+1,c);if(f=String(w),s=typeof w=="number"){if(w*0!=0)return o(h,f,s,b);if(h.s=1/w<0?(f=f.slice(1),-1):1,O.DEBUG&&f.replace(/^0\.0*|\./,"").length>15)throw Error(cr+w)}else h.s=f.charCodeAt(0)===45?(f=f.slice(1),-1):1;for(k=N.slice(0,b),p=t=0,u=f.length;t<u;t++)if(k.indexOf(x=f.charAt(t))<0){if(x=="."){if(t>p){p=u;continue}}else if(!C&&(f==f.toUpperCase()&&(f=f.toLowerCase())||f==f.toLowerCase()&&(f=f.toUpperCase()))){C=!0,t=-1,p=0;continue}return o(h,String(w),s,b)}s=!1,f=i(f,b,10,h.s),(p=f.indexOf("."))>-1?f=f.replace(".",""):p=f.length}for(t=0;f.charCodeAt(t)===48;t++);for(u=f.length;f.charCodeAt(--u)===48;);if(f=f.slice(t,++u)){if(u-=t,s&&O.DEBUG&&u>15&&(w>xi||w!==Qt(w)))throw Error(cr+h.s*w);if((p=p-t-1)>S)h.c=h.e=null;else if(p<M)h.c=[h.e=0];else{if(h.e=p,h.c=[],t=(p+1)%tt,p<0&&(t+=tt),t<u){for(t&&h.c.push(+f.slice(0,t)),u-=tt;t<u;)h.c.push(+f.slice(t,t+=tt));t=tt-(f=f.slice(t)).length}else t-=u;for(;t--;f+="0");h.c.push(+f)}}else h.c=[h.e=0]}O.clone=fr,O.ROUND_UP=0,O.ROUND_DOWN=1,O.ROUND_CEIL=2,O.ROUND_FLOOR=3,O.ROUND_HALF_UP=4,O.ROUND_HALF_DOWN=5,O.ROUND_HALF_EVEN=6,O.ROUND_HALF_CEIL=7,O.ROUND_HALF_FLOOR=8,O.EUCLID=9,O.config=O.set=function(w){var b,k;if(w!=null)if(typeof w=="object"){if(w.hasOwnProperty(b="DECIMAL_PLACES")&&(k=w[b],ct(k,0,Wt,b),d=k),w.hasOwnProperty(b="ROUNDING_MODE")&&(k=w[b],ct(k,0,8,b),c=k),w.hasOwnProperty(b="EXPONENTIAL_AT")&&(k=w[b],k&&k.pop?(ct(k[0],-Wt,0,b),ct(k[1],0,Wt,b),g=k[0],m=k[1]):(ct(k,-Wt,Wt,b),g=-(m=k<0?-k:k))),w.hasOwnProperty(b="RANGE"))if(k=w[b],k&&k.pop)ct(k[0],-Wt,-1,b),ct(k[1],1,Wt,b),M=k[0],S=k[1];else if(ct(k,-Wt,Wt,b),k)M=-(S=k<0?-k:k);else throw Error(Vt+b+" cannot be zero: "+k);if(w.hasOwnProperty(b="CRYPTO"))if(k=w[b],k===!!k)if(k)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))A=k;else throw A=!k,Error(Vt+"crypto unavailable");else A=k;else throw Error(Vt+b+" not true or false: "+k);if(w.hasOwnProperty(b="MODULO_MODE")&&(k=w[b],ct(k,0,9,b),T=k),w.hasOwnProperty(b="POW_PRECISION")&&(k=w[b],ct(k,0,Wt,b),D=k),w.hasOwnProperty(b="FORMAT"))if(k=w[b],typeof k=="object")R=k;else throw Error(Vt+b+" not an object: "+k);if(w.hasOwnProperty(b="ALPHABET"))if(k=w[b],typeof k=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(k))L=k.slice(0,10)=="0123456789",N=k;else throw Error(Vt+b+" invalid: "+k)}else throw Error(Vt+"Object expected: "+w);return{DECIMAL_PLACES:d,ROUNDING_MODE:c,EXPONENTIAL_AT:[g,m],RANGE:[M,S],CRYPTO:A,MODULO_MODE:T,POW_PRECISION:D,FORMAT:R,ALPHABET:N}},O.isBigNumber=function(w){if(!w||w._isBigNumber!==!0)return!1;if(!O.DEBUG)return!0;var b,k,x=w.c,C=w.e,p=w.s;t:if({}.toString.call(x)=="[object Array]"){if((p===1||p===-1)&&C>=-Wt&&C<=Wt&&C===Qt(C)){if(x[0]===0){if(C===0&&x.length===1)return!0;break t}if(b=(C+1)%tt,b<1&&(b+=tt),String(x[0]).length==b){for(b=0;b<x.length;b++)if(k=x[b],k<0||k>=ie||k!==Qt(k))break t;if(k!==0)return!0}}}else if(x===null&&C===null&&(p===null||p===1||p===-1))return!0;throw Error(Vt+"Invalid BigNumber: "+w)},O.maximum=O.max=function(){return q(arguments,-1)},O.minimum=O.min=function(){return q(arguments,1)},O.random=(function(){var w=9007199254740992,b=Math.random()*w&2097151?function(){return Qt(Math.random()*w)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(k){var x,C,p,t,s,u=0,f=[],h=new O(a);if(k==null?k=d:ct(k,0,Wt),t=Ci(k/tt),A)if(crypto.getRandomValues){for(x=crypto.getRandomValues(new Uint32Array(t*=2));u<t;)s=x[u]*131072+(x[u+1]>>>11),s>=9e15?(C=crypto.getRandomValues(new Uint32Array(2)),x[u]=C[0],x[u+1]=C[1]):(f.push(s%1e14),u+=2);u=t/2}else if(crypto.randomBytes){for(x=crypto.randomBytes(t*=7);u<t;)s=(x[u]&31)*281474976710656+x[u+1]*1099511627776+x[u+2]*4294967296+x[u+3]*16777216+(x[u+4]<<16)+(x[u+5]<<8)+x[u+6],s>=9e15?crypto.randomBytes(7).copy(x,u):(f.push(s%1e14),u+=7);u=t/7}else throw A=!1,Error(Vt+"crypto unavailable");if(!A)for(;u<t;)s=b(),s<9e15&&(f[u++]=s%1e14);for(t=f[--u],k%=tt,t&&k&&(s=Ti[tt-k],f[u]=Qt(t/s)*s);f[u]===0;f.pop(),u--);if(u<0)f=[p=0];else{for(p=-1;f[0]===0;f.splice(0,1),p-=tt);for(u=1,s=f[0];s>=10;s/=10,u++);u<tt&&(p-=tt-u)}return h.e=p,h.c=f,h}})(),O.sum=function(){for(var w=1,b=arguments,k=new O(b[0]);w<b.length;)k=k.plus(b[w++]);return k},i=(function(){var w="0123456789";function b(k,x,C,p){for(var t,s=[0],u,f=0,h=k.length;f<h;){for(u=s.length;u--;s[u]*=x);for(s[0]+=p.indexOf(k.charAt(f++)),t=0;t<s.length;t++)s[t]>C-1&&(s[t+1]==null&&(s[t+1]=0),s[t+1]+=s[t]/C|0,s[t]%=C)}return s.reverse()}return function(k,x,C,p,t){var s,u,f,h,v,P,_,l,y=k.indexOf("."),U=d,B=c;for(y>=0&&(h=D,D=0,k=k.replace(".",""),l=new O(x),P=l.pow(k.length-y),D=h,l.c=b(ce(Yt(P.c),P.e,"0"),10,C,w),l.e=l.c.length),_=b(k,x,C,t?(s=N,w):(s=w,N)),f=h=_.length;_[--h]==0;_.pop());if(!_[0])return s.charAt(0);if(y<0?--f:(P.c=_,P.e=f,P.s=p,P=r(P,l,U,B,C),_=P.c,v=P.r,f=P.e),u=f+U+1,y=_[u],h=C/2,v=v||u<0||_[u+1]!=null,v=B<4?(y!=null||v)&&(B==0||B==(P.s<0?3:2)):y>h||y==h&&(B==4||v||B==6&&_[u-1]&1||B==(P.s<0?8:7)),u<1||!_[0])k=v?ce(s.charAt(1),-U,s.charAt(0)):s.charAt(0);else{if(_.length=u,v)for(--C;++_[--u]>C;)_[u]=0,u||(++f,_=[1].concat(_));for(h=_.length;!_[--h];);for(y=0,k="";y<=h;k+=s.charAt(_[y++]));k=ce(k,f,s.charAt(0))}return k}})(),r=(function(){function w(x,C,p){var t,s,u,f,h=0,v=x.length,P=C%pe,_=C/pe|0;for(x=x.slice();v--;)u=x[v]%pe,f=x[v]/pe|0,t=_*u+f*P,s=P*u+t%pe*pe+h,h=(s/p|0)+(t/pe|0)+_*f,x[v]=s%p;return h&&(x=[h].concat(x)),x}function b(x,C,p,t){var s,u;if(p!=t)u=p>t?1:-1;else for(s=u=0;s<p;s++)if(x[s]!=C[s]){u=x[s]>C[s]?1:-1;break}return u}function k(x,C,p,t){for(var s=0;p--;)x[p]-=s,s=x[p]<C[p]?1:0,x[p]=s*t+x[p]-C[p];for(;!x[0]&&x.length>1;x.splice(0,1));}return function(x,C,p,t,s){var u,f,h,v,P,_,l,y,U,B,$,K,V,J,rt,G,it,ft=x.s==C.s?1:-1,et=x.c,X=C.c;if(!et||!et[0]||!X||!X[0])return new O(!x.s||!C.s||(et?X&&et[0]==X[0]:!X)?NaN:et&&et[0]==0||!X?ft*0:ft/0);for(y=new O(ft),U=y.c=[],f=x.e-C.e,ft=p+f+1,s||(s=ie,f=te(x.e/tt)-te(C.e/tt),ft=ft/tt|0),h=0;X[h]==(et[h]||0);h++);if(X[h]>(et[h]||0)&&f--,ft<0)U.push(1),v=!0;else{for(J=et.length,G=X.length,h=0,ft+=2,P=Qt(s/(X[0]+1)),P>1&&(X=w(X,P,s),et=w(et,P,s),G=X.length,J=et.length),V=G,B=et.slice(0,G),$=B.length;$<G;B[$++]=0);it=X.slice(),it=[0].concat(it),rt=X[0],X[1]>=s/2&&rt++;do{if(P=0,u=b(X,B,G,$),u<0){if(K=B[0],G!=$&&(K=K*s+(B[1]||0)),P=Qt(K/rt),P>1)for(P>=s&&(P=s-1),_=w(X,P,s),l=_.length,$=B.length;b(_,B,l,$)==1;)P--,k(_,G<l?it:X,l,s),l=_.length,u=1;else P==0&&(u=P=1),_=X.slice(),l=_.length;if(l<$&&(_=[0].concat(_)),k(B,_,$,s),$=B.length,u==-1)for(;b(X,B,G,$)<1;)P++,k(B,G<$?it:X,$,s),$=B.length}else u===0&&(P++,B=[0]);U[h++]=P,B[0]?B[$++]=et[V]||0:(B=[et[V]],$=1)}while((V++<J||B[0]!=null)&&ft--);v=B[0]!=null,U[0]||U.splice(0,1)}if(s==ie){for(h=1,ft=U[0];ft>=10;ft/=10,h++);j(y,p+(y.e=h+f*tt-1)+1,t,v)}else y.e=f,y.r=+v;return y}})();function F(w,b,k,x){var C,p,t,s,u;if(k==null?k=c:ct(k,0,8),!w.c)return w.toString();if(C=w.c[0],t=w.e,b==null)u=Yt(w.c),u=x==1||x==2&&(t<=g||t>=m)?Fe(u,t):ce(u,t,"0");else if(w=j(new O(w),b,k),p=w.e,u=Yt(w.c),s=u.length,x==1||x==2&&(b<=p||p<=g)){for(;s<b;u+="0",s++);u=Fe(u,p)}else if(b-=t+(x===2&&p>t),u=ce(u,p,"0"),p+1>s){if(--b>0)for(u+=".";b--;u+="0");}else if(b+=p-s,b>0)for(p+1==s&&(u+=".");b--;u+="0");return w.s<0&&C?"-"+u:u}function q(w,b){for(var k,x,C=1,p=new O(w[0]);C<w.length;C++)x=new O(w[C]),(!x.s||(k=Me(p,x))===b||k===0&&p.s===b)&&(p=x);return p}function W(w,b,k){for(var x=1,C=b.length;!b[--C];b.pop());for(C=b[0];C>=10;C/=10,x++);return(k=x+k*tt-1)>S?w.c=w.e=null:k<M?w.c=[w.e=0]:(w.e=k,w.c=b),w}o=(function(){var w=/^(-?)0([xbo])(?=\w[\w.]*$)/i,b=/^([^.]+)\.$/,k=/^\.([^.]+)$/,x=/^-?(Infinity|NaN)$/,C=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(p,t,s,u){var f,h=s?t:t.replace(C,"");if(x.test(h))p.s=isNaN(h)?null:h<0?-1:1;else{if(!s&&(h=h.replace(w,function(v,P,_){return f=(_=_.toLowerCase())=="x"?16:_=="b"?2:8,!u||u==f?P:v}),u&&(f=u,h=h.replace(b,"$1").replace(k,"0.$1")),t!=h))return new O(h,f);if(O.DEBUG)throw Error(Vt+"Not a"+(u?" base "+u:"")+" number: "+t);p.s=null}p.c=p.e=null}})();function j(w,b,k,x){var C,p,t,s,u,f,h,v=w.c,P=Ti;if(v){t:{for(C=1,s=v[0];s>=10;s/=10,C++);if(p=b-C,p<0)p+=tt,t=b,u=v[f=0],h=Qt(u/P[C-t-1]%10);else if(f=Ci((p+1)/tt),f>=v.length)if(x){for(;v.length<=f;v.push(0));u=h=0,C=1,p%=tt,t=p-tt+1}else break t;else{for(u=s=v[f],C=1;s>=10;s/=10,C++);p%=tt,t=p-tt+C,h=t<0?0:Qt(u/P[C-t-1]%10)}if(x=x||b<0||v[f+1]!=null||(t<0?u:u%P[C-t-1]),x=k<4?(h||x)&&(k==0||k==(w.s<0?3:2)):h>5||h==5&&(k==4||x||k==6&&(p>0?t>0?u/P[C-t]:0:v[f-1])%10&1||k==(w.s<0?8:7)),b<1||!v[0])return v.length=0,x?(b-=w.e+1,v[0]=P[(tt-b%tt)%tt],w.e=-b||0):v[0]=w.e=0,w;if(p==0?(v.length=f,s=1,f--):(v.length=f+1,s=P[tt-p],v[f]=t>0?Qt(u/P[C-t]%P[t])*s:0),x)for(;;)if(f==0){for(p=1,t=v[0];t>=10;t/=10,p++);for(t=v[0]+=s,s=1;t>=10;t/=10,s++);p!=s&&(w.e++,v[0]==ie&&(v[0]=1));break}else{if(v[f]+=s,v[f]!=ie)break;v[f--]=0,s=1}for(p=v.length;v[--p]===0;v.pop());}w.e>S?w.c=w.e=null:w.e<M&&(w.c=[w.e=0])}return w}function Z(w){var b,k=w.e;return k===null?w.toString():(b=Yt(w.c),b=k<=g||k>=m?Fe(b,k):ce(b,k,"0"),w.s<0?"-"+b:b)}return e.absoluteValue=e.abs=function(){var w=new O(this);return w.s<0&&(w.s=1),w},e.comparedTo=function(w,b){return Me(this,new O(w,b))},e.decimalPlaces=e.dp=function(w,b){var k,x,C,p=this;if(w!=null)return ct(w,0,Wt),b==null?b=c:ct(b,0,8),j(new O(p),w+p.e+1,b);if(!(k=p.c))return null;if(x=((C=k.length-1)-te(this.e/tt))*tt,C=k[C])for(;C%10==0;C/=10,x--);return x<0&&(x=0),x},e.dividedBy=e.div=function(w,b){return r(this,new O(w,b),d,c)},e.dividedToIntegerBy=e.idiv=function(w,b){return r(this,new O(w,b),0,1)},e.exponentiatedBy=e.pow=function(w,b){var k,x,C,p,t,s,u,f,h,v=this;if(w=new O(w),w.c&&!w.isInteger())throw Error(Vt+"Exponent not an integer: "+Z(w));if(b!=null&&(b=new O(b)),s=w.e>14,!v.c||!v.c[0]||v.c[0]==1&&!v.e&&v.c.length==1||!w.c||!w.c[0])return h=new O(Math.pow(+Z(v),s?w.s*(2-qe(w)):+Z(w))),b?h.mod(b):h;if(u=w.s<0,b){if(b.c?!b.c[0]:!b.s)return new O(NaN);x=!u&&v.isInteger()&&b.isInteger(),x&&(v=v.mod(b))}else{if(w.e>9&&(v.e>0||v.e<-1||(v.e==0?v.c[0]>1||s&&v.c[1]>=24e7:v.c[0]<8e13||s&&v.c[0]<=9999975e7)))return p=v.s<0&&qe(w)?-0:0,v.e>-1&&(p=1/p),new O(u?1/p:p);D&&(p=Ci(D/tt+2))}for(s?(k=new O(.5),u&&(w.s=1),f=qe(w)):(C=Math.abs(+Z(w)),f=C%2),h=new O(a);;){if(f){if(h=h.times(v),!h.c)break;p?h.c.length>p&&(h.c.length=p):x&&(h=h.mod(b))}if(C){if(C=Qt(C/2),C===0)break;f=C%2}else if(w=w.times(k),j(w,w.e+1,1),w.e>14)f=qe(w);else{if(C=+Z(w),C===0)break;f=C%2}v=v.times(v),p?v.c&&v.c.length>p&&(v.c.length=p):x&&(v=v.mod(b))}return x?h:(u&&(h=a.div(h)),b?h.mod(b):p?j(h,D,c,t):h)},e.integerValue=function(w){var b=new O(this);return w==null?w=c:ct(w,0,8),j(b,b.e+1,w)},e.isEqualTo=e.eq=function(w,b){return Me(this,new O(w,b))===0},e.isFinite=function(){return!!this.c},e.isGreaterThan=e.gt=function(w,b){return Me(this,new O(w,b))>0},e.isGreaterThanOrEqualTo=e.gte=function(w,b){return(b=Me(this,new O(w,b)))===1||b===0},e.isInteger=function(){return!!this.c&&te(this.e/tt)>this.c.length-2},e.isLessThan=e.lt=function(w,b){return Me(this,new O(w,b))<0},e.isLessThanOrEqualTo=e.lte=function(w,b){return(b=Me(this,new O(w,b)))===-1||b===0},e.isNaN=function(){return!this.s},e.isNegative=function(){return this.s<0},e.isPositive=function(){return this.s>0},e.isZero=function(){return!!this.c&&this.c[0]==0},e.minus=function(w,b){var k,x,C,p,t=this,s=t.s;if(w=new O(w,b),b=w.s,!s||!b)return new O(NaN);if(s!=b)return w.s=-b,t.plus(w);var u=t.e/tt,f=w.e/tt,h=t.c,v=w.c;if(!u||!f){if(!h||!v)return h?(w.s=-b,w):new O(v?t:NaN);if(!h[0]||!v[0])return v[0]?(w.s=-b,w):new O(h[0]?t:c==3?-0:0)}if(u=te(u),f=te(f),h=h.slice(),s=u-f){for((p=s<0)?(s=-s,C=h):(f=u,C=v),C.reverse(),b=s;b--;C.push(0));C.reverse()}else for(x=(p=(s=h.length)<(b=v.length))?s:b,s=b=0;b<x;b++)if(h[b]!=v[b]){p=h[b]<v[b];break}if(p&&(C=h,h=v,v=C,w.s=-w.s),b=(x=v.length)-(k=h.length),b>0)for(;b--;h[k++]=0);for(b=ie-1;x>s;){if(h[--x]<v[x]){for(k=x;k&&!h[--k];h[k]=b);--h[k],h[x]+=ie}h[x]-=v[x]}for(;h[0]==0;h.splice(0,1),--f);return h[0]?W(w,h,f):(w.s=c==3?-1:1,w.c=[w.e=0],w)},e.modulo=e.mod=function(w,b){var k,x,C=this;return w=new O(w,b),!C.c||!w.s||w.c&&!w.c[0]?new O(NaN):!w.c||C.c&&!C.c[0]?new O(C):(T==9?(x=w.s,w.s=1,k=r(C,w,0,3),w.s=x,k.s*=x):k=r(C,w,0,T),w=C.minus(k.times(w)),!w.c[0]&&T==1&&(w.s=C.s),w)},e.multipliedBy=e.times=function(w,b){var k,x,C,p,t,s,u,f,h,v,P,_,l,y,U,B=this,$=B.c,K=(w=new O(w,b)).c;if(!$||!K||!$[0]||!K[0])return!B.s||!w.s||$&&!$[0]&&!K||K&&!K[0]&&!$?w.c=w.e=w.s=null:(w.s*=B.s,!$||!K?w.c=w.e=null:(w.c=[0],w.e=0)),w;for(x=te(B.e/tt)+te(w.e/tt),w.s*=B.s,u=$.length,v=K.length,u<v&&(l=$,$=K,K=l,C=u,u=v,v=C),C=u+v,l=[];C--;l.push(0));for(y=ie,U=pe,C=v;--C>=0;){for(k=0,P=K[C]%U,_=K[C]/U|0,t=u,p=C+t;p>C;)f=$[--t]%U,h=$[t]/U|0,s=_*f+h*P,f=P*f+s%U*U+l[p]+k,k=(f/y|0)+(s/U|0)+_*h,l[p--]=f%y;l[p]=k}return k?++x:l.splice(0,1),W(w,l,x)},e.negated=function(){var w=new O(this);return w.s=-w.s||null,w},e.plus=function(w,b){var k,x=this,C=x.s;if(w=new O(w,b),b=w.s,!C||!b)return new O(NaN);if(C!=b)return w.s=-b,x.minus(w);var p=x.e/tt,t=w.e/tt,s=x.c,u=w.c;if(!p||!t){if(!s||!u)return new O(C/0);if(!s[0]||!u[0])return u[0]?w:new O(s[0]?x:C*0)}if(p=te(p),t=te(t),s=s.slice(),C=p-t){for(C>0?(t=p,k=u):(C=-C,k=s),k.reverse();C--;k.push(0));k.reverse()}for(C=s.length,b=u.length,C-b<0&&(k=u,u=s,s=k,b=C),C=0;b;)C=(s[--b]=s[b]+u[b]+C)/ie|0,s[b]=ie===s[b]?0:s[b]%ie;return C&&(s=[C].concat(s),++t),W(w,s,t)},e.precision=e.sd=function(w,b){var k,x,C,p=this;if(w!=null&&w!==!!w)return ct(w,1,Wt),b==null?b=c:ct(b,0,8),j(new O(p),w,b);if(!(k=p.c))return null;if(C=k.length-1,x=C*tt+1,C=k[C]){for(;C%10==0;C/=10,x--);for(C=k[0];C>=10;C/=10,x++);}return w&&p.e+1>x&&(x=p.e+1),x},e.shiftedBy=function(w){return ct(w,-xi,xi),this.times("1e"+w)},e.squareRoot=e.sqrt=function(){var w,b,k,x,C,p=this,t=p.c,s=p.s,u=p.e,f=d+4,h=new O("0.5");if(s!==1||!t||!t[0])return new O(!s||s<0&&(!t||t[0])?NaN:t?p:1/0);if(s=Math.sqrt(+Z(p)),s==0||s==1/0?(b=Yt(t),(b.length+u)%2==0&&(b+="0"),s=Math.sqrt(+b),u=te((u+1)/2)-(u<0||u%2),s==1/0?b="5e"+u:(b=s.toExponential(),b=b.slice(0,b.indexOf("e")+1)+u),k=new O(b)):k=new O(s+""),k.c[0]){for(u=k.e,s=u+f,s<3&&(s=0);;)if(C=k,k=h.times(C.plus(r(p,C,f,1))),Yt(C.c).slice(0,s)===(b=Yt(k.c)).slice(0,s))if(k.e<u&&--s,b=b.slice(s-3,s+1),b=="9999"||!x&&b=="4999"){if(!x&&(j(C,C.e+d+2,0),C.times(C).eq(p))){k=C;break}f+=4,s+=4,x=1}else{(!+b||!+b.slice(1)&&b.charAt(0)=="5")&&(j(k,k.e+d+2,1),w=!k.times(k).eq(p));break}}return j(k,k.e+d+1,c,w)},e.toExponential=function(w,b){return w!=null&&(ct(w,0,Wt),w++),F(this,w,b,1)},e.toFixed=function(w,b){return w!=null&&(ct(w,0,Wt),w=w+this.e+1),F(this,w,b)},e.toFormat=function(w,b,k){var x,C=this;if(k==null)w!=null&&b&&typeof b=="object"?(k=b,b=null):w&&typeof w=="object"?(k=w,w=b=null):k=R;else if(typeof k!="object")throw Error(Vt+"Argument not an object: "+k);if(x=C.toFixed(w,b),C.c){var p,t=x.split("."),s=+k.groupSize,u=+k.secondaryGroupSize,f=k.groupSeparator||"",h=t[0],v=t[1],P=C.s<0,_=P?h.slice(1):h,l=_.length;if(u&&(p=s,s=u,u=p,l-=p),s>0&&l>0){for(p=l%s||s,h=_.substr(0,p);p<l;p+=s)h+=f+_.substr(p,s);u>0&&(h+=f+_.slice(p)),P&&(h="-"+h)}x=v?h+(k.decimalSeparator||"")+((u=+k.fractionGroupSize)?v.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(k.fractionGroupSeparator||"")):v):h}return(k.prefix||"")+x+(k.suffix||"")},e.toFraction=function(w){var b,k,x,C,p,t,s,u,f,h,v,P,_=this,l=_.c;if(w!=null&&(s=new O(w),!s.isInteger()&&(s.c||s.s!==1)||s.lt(a)))throw Error(Vt+"Argument "+(s.isInteger()?"out of range: ":"not an integer: ")+Z(s));if(!l)return new O(_);for(b=new O(a),f=k=new O(a),x=u=new O(a),P=Yt(l),p=b.e=P.length-_.e-1,b.c[0]=Ti[(t=p%tt)<0?tt+t:t],w=!w||s.comparedTo(b)>0?p>0?b:f:s,t=S,S=1/0,s=new O(P),u.c[0]=0;h=r(s,b,0,1),C=k.plus(h.times(x)),C.comparedTo(w)!=1;)k=x,x=C,f=u.plus(h.times(C=f)),u=C,b=s.minus(h.times(C=b)),s=C;return C=r(w.minus(k),x,0,1),u=u.plus(C.times(f)),k=k.plus(C.times(x)),u.s=f.s=_.s,p=p*2,v=r(f,x,p,c).minus(_).abs().comparedTo(r(u,k,p,c).minus(_).abs())<1?[f,x]:[u,k],S=t,v},e.toNumber=function(){return+Z(this)},e.toPrecision=function(w,b){return w!=null&&ct(w,1,Wt),F(this,w,b,2)},e.toString=function(w){var b,k=this,x=k.s,C=k.e;return C===null?x?(b="Infinity",x<0&&(b="-"+b)):b="NaN":(w==null?b=C<=g||C>=m?Fe(Yt(k.c),C):ce(Yt(k.c),C,"0"):w===10&&L?(k=j(new O(k),d+C+1,c),b=ce(Yt(k.c),k.e,"0")):(ct(w,2,N.length,"Base"),b=i(ce(Yt(k.c),C,"0"),10,w,x,!0)),x<0&&k.c[0]&&(b="-"+b)),b},e.valueOf=e.toJSON=function(){return Z(this)},e._isBigNumber=!0,e[Symbol.toStringTag]="BigNumber",e[Symbol.for("nodejs.util.inspect.custom")]=e.valueOf,n!=null&&O.set(n),O}function te(n){var r=n|0;return n>0||n===r?r:r-1}function Yt(n){for(var r,i,o=1,e=n.length,a=n[0]+"";o<e;){for(r=n[o++]+"",i=tt-r.length;i--;r="0"+r);a+=r}for(e=a.length;a.charCodeAt(--e)===48;);return a.slice(0,e+1||1)}function Me(n,r){var i,o,e=n.c,a=r.c,d=n.s,c=r.s,g=n.e,m=r.e;if(!d||!c)return null;if(i=e&&!e[0],o=a&&!a[0],i||o)return i?o?0:-c:d;if(d!=c)return d;if(i=d<0,o=g==m,!e||!a)return o?0:!e^i?1:-1;if(!o)return g>m^i?1:-1;for(c=(g=e.length)<(m=a.length)?g:m,d=0;d<c;d++)if(e[d]!=a[d])return e[d]>a[d]^i?1:-1;return g==m?0:g>m^i?1:-1}function ct(n,r,i,o){if(n<r||n>i||n!==Qt(n))throw Error(Vt+(o||"Argument")+(typeof n=="number"?n<r||n>i?" out of range: ":" not an integer: ":" not a primitive number: ")+String(n))}function qe(n){var r=n.c.length-1;return te(n.e/tt)==r&&n.c[r]%2!=0}function Fe(n,r){return(n.length>1?n.charAt(0)+"."+n.slice(1):n)+(r<0?"e":"e+")+r}function ce(n,r,i){var o,e;if(r<0){for(e=i+".";++r;e+=i);n=e+n}else if(o=n.length,++r>o){for(e=i,r-=o;--r;e+=i);n+=e}else r<o&&(n=n.slice(0,r)+"."+n.slice(r));return n}var tn=fr(),ut=tn;import{Transaction as ne}from"@mysten/sui/transactions";var Pe=9e15,we=1e9,Di="0123456789abcdef",$e="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",We="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Oi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Pe,maxE:Pe,crypto:!1},mr,fe,Y=!0,Ke="[DecimalError] ",_e=Ke+"Invalid argument: ",gr=Ke+"Precision limit exceeded",_r=Ke+"crypto unavailable",wr="[object Decimal]",zt=Math.floor,$t=Math.pow,en=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,rn=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,nn=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,vr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,re=1e7,H=7,on=9007199254740991,sn=$e.length-1,Ri=We.length-1,E={toStringTag:wr};E.absoluteValue=E.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),z(n)};E.ceil=function(){return z(new this.constructor(this),this.e+1,2)};E.clampedTo=E.clamp=function(n,r){var i,o=this,e=o.constructor;if(n=new e(n),r=new e(r),!n.s||!r.s)return new e(NaN);if(n.gt(r))throw Error(_e+r);return i=o.cmp(n),i<0?n:o.cmp(r)>0?r:new e(o)};E.comparedTo=E.cmp=function(n){var r,i,o,e,a=this,d=a.d,c=(n=new a.constructor(n)).d,g=a.s,m=n.s;if(!d||!c)return!g||!m?NaN:g!==m?g:d===c?0:!d^g<0?1:-1;if(!d[0]||!c[0])return d[0]?g:c[0]?-m:0;if(g!==m)return g;if(a.e!==n.e)return a.e>n.e^g<0?1:-1;for(o=d.length,e=c.length,r=0,i=o<e?o:e;r<i;++r)if(d[r]!==c[r])return d[r]>c[r]^g<0?1:-1;return o===e?0:o>e^g<0?1:-1};E.cosine=E.cos=function(){var n,r,i=this,o=i.constructor;return i.d?i.d[0]?(n=o.precision,r=o.rounding,o.precision=n+Math.max(i.e,i.sd())+H,o.rounding=1,i=an(o,Sr(o,i)),o.precision=n,o.rounding=r,z(fe==2||fe==3?i.neg():i,n,r,!0)):new o(1):new o(NaN)};E.cubeRoot=E.cbrt=function(){var n,r,i,o,e,a,d,c,g,m,M=this,S=M.constructor;if(!M.isFinite()||M.isZero())return new S(M);for(Y=!1,a=M.s*$t(M.s*M,1/3),!a||Math.abs(a)==1/0?(i=Zt(M.d),n=M.e,(a=(n-i.length+1)%3)&&(i+=a==1||a==-2?"0":"00"),a=$t(i,1/3),n=zt((n+1)/3)-(n%3==(n<0?-1:2)),a==1/0?i="5e"+n:(i=a.toExponential(),i=i.slice(0,i.indexOf("e")+1)+n),o=new S(i),o.s=M.s):o=new S(a.toString()),d=(n=S.precision)+3;;)if(c=o,g=c.times(c).times(c),m=g.plus(M),o=ot(m.plus(M).times(c),m.plus(g),d+2,1),Zt(c.d).slice(0,d)===(i=Zt(o.d)).slice(0,d))if(i=i.slice(d-3,d+1),i=="9999"||!e&&i=="4999"){if(!e&&(z(c,n+1,0),c.times(c).times(c).eq(M))){o=c;break}d+=4,e=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(z(o,n+1,1),r=!o.times(o).times(o).eq(M));break}return Y=!0,z(o,n,S.rounding,r)};E.decimalPlaces=E.dp=function(){var n,r=this.d,i=NaN;if(r){if(n=r.length-1,i=(n-zt(this.e/H))*H,n=r[n],n)for(;n%10==0;n/=10)i--;i<0&&(i=0)}return i};E.dividedBy=E.div=function(n){return ot(this,new this.constructor(n))};E.dividedToIntegerBy=E.divToInt=function(n){var r=this,i=r.constructor;return z(ot(r,new i(n),0,1,1),i.precision,i.rounding)};E.equals=E.eq=function(n){return this.cmp(n)===0};E.floor=function(){return z(new this.constructor(this),this.e+1,3)};E.greaterThan=E.gt=function(n){return this.cmp(n)>0};E.greaterThanOrEqualTo=E.gte=function(n){var r=this.cmp(n);return r==1||r===0};E.hyperbolicCosine=E.cosh=function(){var n,r,i,o,e,a=this,d=a.constructor,c=new d(1);if(!a.isFinite())return new d(a.s?1/0:NaN);if(a.isZero())return c;i=d.precision,o=d.rounding,d.precision=i+Math.max(a.e,a.sd())+4,d.rounding=1,e=a.d.length,e<32?(n=Math.ceil(e/3),r=(1/Ge(4,n)).toString()):(n=16,r="2.3283064365386962890625e-10"),a=Ae(d,1,a.times(r),new d(1),!0);for(var g,m=n,M=new d(8);m--;)g=a.times(a),a=c.minus(g.times(M.minus(g.times(M))));return z(a,d.precision=i,d.rounding=o,!0)};E.hyperbolicSine=E.sinh=function(){var n,r,i,o,e=this,a=e.constructor;if(!e.isFinite()||e.isZero())return new a(e);if(r=a.precision,i=a.rounding,a.precision=r+Math.max(e.e,e.sd())+4,a.rounding=1,o=e.d.length,o<3)e=Ae(a,2,e,e,!0);else{n=1.4*Math.sqrt(o),n=n>16?16:n|0,e=e.times(1/Ge(5,n)),e=Ae(a,2,e,e,!0);for(var d,c=new a(5),g=new a(16),m=new a(20);n--;)d=e.times(e),e=e.times(c.plus(d.times(g.times(d).plus(m))))}return a.precision=r,a.rounding=i,z(e,r,i,!0)};E.hyperbolicTangent=E.tanh=function(){var n,r,i=this,o=i.constructor;return i.isFinite()?i.isZero()?new o(i):(n=o.precision,r=o.rounding,o.precision=n+7,o.rounding=1,ot(i.sinh(),i.cosh(),o.precision=n,o.rounding=r)):new o(i.s)};E.inverseCosine=E.acos=function(){var n=this,r=n.constructor,i=n.abs().cmp(1),o=r.precision,e=r.rounding;return i!==-1?i===0?n.isNeg()?le(r,o,e):new r(0):new r(NaN):n.isZero()?le(r,o+4,e).times(.5):(r.precision=o+6,r.rounding=1,n=new r(1).minus(n).div(n.plus(1)).sqrt().atan(),r.precision=o,r.rounding=e,n.times(2))};E.inverseHyperbolicCosine=E.acosh=function(){var n,r,i=this,o=i.constructor;return i.lte(1)?new o(i.eq(1)?0:NaN):i.isFinite()?(n=o.precision,r=o.rounding,o.precision=n+Math.max(Math.abs(i.e),i.sd())+4,o.rounding=1,Y=!1,i=i.times(i).minus(1).sqrt().plus(i),Y=!0,o.precision=n,o.rounding=r,i.ln()):new o(i)};E.inverseHyperbolicSine=E.asinh=function(){var n,r,i=this,o=i.constructor;return!i.isFinite()||i.isZero()?new o(i):(n=o.precision,r=o.rounding,o.precision=n+2*Math.max(Math.abs(i.e),i.sd())+6,o.rounding=1,Y=!1,i=i.times(i).plus(1).sqrt().plus(i),Y=!0,o.precision=n,o.rounding=r,i.ln())};E.inverseHyperbolicTangent=E.atanh=function(){var n,r,i,o,e=this,a=e.constructor;return e.isFinite()?e.e>=0?new a(e.abs().eq(1)?e.s/0:e.isZero()?e:NaN):(n=a.precision,r=a.rounding,o=e.sd(),Math.max(o,n)<2*-e.e-1?z(new a(e),n,r,!0):(a.precision=i=o-e.e,e=ot(e.plus(1),new a(1).minus(e),i+n,1),a.precision=n+4,a.rounding=1,e=e.ln(),a.precision=n,a.rounding=r,e.times(.5))):new a(NaN)};E.inverseSine=E.asin=function(){var n,r,i,o,e=this,a=e.constructor;return e.isZero()?new a(e):(r=e.abs().cmp(1),i=a.precision,o=a.rounding,r!==-1?r===0?(n=le(a,i+4,o).times(.5),n.s=e.s,n):new a(NaN):(a.precision=i+6,a.rounding=1,e=e.div(new a(1).minus(e.times(e)).sqrt().plus(1)).atan(),a.precision=i,a.rounding=o,e.times(2)))};E.inverseTangent=E.atan=function(){var n,r,i,o,e,a,d,c,g,m=this,M=m.constructor,S=M.precision,A=M.rounding;if(m.isFinite()){if(m.isZero())return new M(m);if(m.abs().eq(1)&&S+4<=Ri)return d=le(M,S+4,A).times(.25),d.s=m.s,d}else{if(!m.s)return new M(NaN);if(S+4<=Ri)return d=le(M,S+4,A).times(.5),d.s=m.s,d}for(M.precision=c=S+10,M.rounding=1,i=Math.min(28,c/H+2|0),n=i;n;--n)m=m.div(m.times(m).plus(1).sqrt().plus(1));for(Y=!1,r=Math.ceil(c/H),o=1,g=m.times(m),d=new M(m),e=m;n!==-1;)if(e=e.times(g),a=d.minus(e.div(o+=2)),e=e.times(g),d=a.plus(e.div(o+=2)),d.d[r]!==void 0)for(n=r;d.d[n]===a.d[n]&&n--;);return i&&(d=d.times(2<<i-1)),Y=!0,z(d,M.precision=S,M.rounding=A,!0)};E.isFinite=function(){return!!this.d};E.isInteger=E.isInt=function(){return!!this.d&&zt(this.e/H)>this.d.length-2};E.isNaN=function(){return!this.s};E.isNegative=E.isNeg=function(){return this.s<0};E.isPositive=E.isPos=function(){return this.s>0};E.isZero=function(){return!!this.d&&this.d[0]===0};E.lessThan=E.lt=function(n){return this.cmp(n)<0};E.lessThanOrEqualTo=E.lte=function(n){return this.cmp(n)<1};E.logarithm=E.log=function(n){var r,i,o,e,a,d,c,g,m=this,M=m.constructor,S=M.precision,A=M.rounding,T=5;if(n==null)n=new M(10),r=!0;else{if(n=new M(n),i=n.d,n.s<0||!i||!i[0]||n.eq(1))return new M(NaN);r=n.eq(10)}if(i=m.d,m.s<0||!i||!i[0]||m.eq(1))return new M(i&&!i[0]?-1/0:m.s!=1?NaN:i?0:1/0);if(r)if(i.length>1)a=!0;else{for(e=i[0];e%10===0;)e/=10;a=e!==1}if(Y=!1,c=S+T,d=ge(m,c),o=r?Ze(M,c+10):ge(n,c),g=ot(d,o,c,1),Te(g.d,e=S,A))do if(c+=10,d=ge(m,c),o=r?Ze(M,c+10):ge(n,c),g=ot(d,o,c,1),!a){+Zt(g.d).slice(e+1,e+15)+1==1e14&&(g=z(g,S+1,0));break}while(Te(g.d,e+=10,A));return Y=!0,z(g,S,A)};E.minus=E.sub=function(n){var r,i,o,e,a,d,c,g,m,M,S,A,T=this,D=T.constructor;if(n=new D(n),!T.d||!n.d)return!T.s||!n.s?n=new D(NaN):T.d?n.s=-n.s:n=new D(n.d||T.s!==n.s?T:NaN),n;if(T.s!=n.s)return n.s=-n.s,T.plus(n);if(m=T.d,A=n.d,c=D.precision,g=D.rounding,!m[0]||!A[0]){if(A[0])n.s=-n.s;else if(m[0])n=new D(T);else return new D(g===3?-0:0);return Y?z(n,c,g):n}if(i=zt(n.e/H),M=zt(T.e/H),m=m.slice(),a=M-i,a){for(S=a<0,S?(r=m,a=-a,d=A.length):(r=A,i=M,d=m.length),o=Math.max(Math.ceil(c/H),d)+2,a>o&&(a=o,r.length=1),r.reverse(),o=a;o--;)r.push(0);r.reverse()}else{for(o=m.length,d=A.length,S=o<d,S&&(d=o),o=0;o<d;o++)if(m[o]!=A[o]){S=m[o]<A[o];break}a=0}for(S&&(r=m,m=A,A=r,n.s=-n.s),d=m.length,o=A.length-d;o>0;--o)m[d++]=0;for(o=A.length;o>a;){if(m[--o]<A[o]){for(e=o;e&&m[--e]===0;)m[e]=re-1;--m[e],m[o]+=re}m[o]-=A[o]}for(;m[--d]===0;)m.pop();for(;m[0]===0;m.shift())--i;return m[0]?(n.d=m,n.e=ze(m,i),Y?z(n,c,g):n):new D(g===3?-0:0)};E.modulo=E.mod=function(n){var r,i=this,o=i.constructor;return n=new o(n),!i.d||!n.s||n.d&&!n.d[0]?new o(NaN):!n.d||i.d&&!i.d[0]?z(new o(i),o.precision,o.rounding):(Y=!1,o.modulo==9?(r=ot(i,n.abs(),0,3,1),r.s*=n.s):r=ot(i,n,0,o.modulo,1),r=r.times(n),Y=!0,i.minus(r))};E.naturalExponential=E.exp=function(){return Li(this)};E.naturalLogarithm=E.ln=function(){return ge(this)};E.negated=E.neg=function(){var n=new this.constructor(this);return n.s=-n.s,z(n)};E.plus=E.add=function(n){var r,i,o,e,a,d,c,g,m,M,S=this,A=S.constructor;if(n=new A(n),!S.d||!n.d)return!S.s||!n.s?n=new A(NaN):S.d||(n=new A(n.d||S.s===n.s?S:NaN)),n;if(S.s!=n.s)return n.s=-n.s,S.minus(n);if(m=S.d,M=n.d,c=A.precision,g=A.rounding,!m[0]||!M[0])return M[0]||(n=new A(S)),Y?z(n,c,g):n;if(a=zt(S.e/H),o=zt(n.e/H),m=m.slice(),e=a-o,e){for(e<0?(i=m,e=-e,d=M.length):(i=M,o=a,d=m.length),a=Math.ceil(c/H),d=a>d?a+1:d+1,e>d&&(e=d,i.length=1),i.reverse();e--;)i.push(0);i.reverse()}for(d=m.length,e=M.length,d-e<0&&(e=d,i=M,M=m,m=i),r=0;e;)r=(m[--e]=m[e]+M[e]+r)/re|0,m[e]%=re;for(r&&(m.unshift(r),++o),d=m.length;m[--d]==0;)m.pop();return n.d=m,n.e=ze(m,o),Y?z(n,c,g):n};E.precision=E.sd=function(n){var r,i=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(_e+n);return i.d?(r=Mr(i.d),n&&i.e+1>r&&(r=i.e+1)):r=NaN,r};E.round=function(){var n=this,r=n.constructor;return z(new r(n),n.e+1,r.rounding)};E.sine=E.sin=function(){var n,r,i=this,o=i.constructor;return i.isFinite()?i.isZero()?new o(i):(n=o.precision,r=o.rounding,o.precision=n+Math.max(i.e,i.sd())+H,o.rounding=1,i=un(o,Sr(o,i)),o.precision=n,o.rounding=r,z(fe>2?i.neg():i,n,r,!0)):new o(NaN)};E.squareRoot=E.sqrt=function(){var n,r,i,o,e,a,d=this,c=d.d,g=d.e,m=d.s,M=d.constructor;if(m!==1||!c||!c[0])return new M(!m||m<0&&(!c||c[0])?NaN:c?d:1/0);for(Y=!1,m=Math.sqrt(+d),m==0||m==1/0?(r=Zt(c),(r.length+g)%2==0&&(r+="0"),m=Math.sqrt(r),g=zt((g+1)/2)-(g<0||g%2),m==1/0?r="5e"+g:(r=m.toExponential(),r=r.slice(0,r.indexOf("e")+1)+g),o=new M(r)):o=new M(m.toString()),i=(g=M.precision)+3;;)if(a=o,o=a.plus(ot(d,a,i+2,1)).times(.5),Zt(a.d).slice(0,i)===(r=Zt(o.d)).slice(0,i))if(r=r.slice(i-3,i+1),r=="9999"||!e&&r=="4999"){if(!e&&(z(a,g+1,0),a.times(a).eq(d))){o=a;break}i+=4,e=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(z(o,g+1,1),n=!o.times(o).eq(d));break}return Y=!0,z(o,g,M.rounding,n)};E.tangent=E.tan=function(){var n,r,i=this,o=i.constructor;return i.isFinite()?i.isZero()?new o(i):(n=o.precision,r=o.rounding,o.precision=n+10,o.rounding=1,i=i.sin(),i.s=1,i=ot(i,new o(1).minus(i.times(i)).sqrt(),n+10,0),o.precision=n,o.rounding=r,z(fe==2||fe==4?i.neg():i,n,r,!0)):new o(NaN)};E.times=E.mul=function(n){var r,i,o,e,a,d,c,g,m,M=this,S=M.constructor,A=M.d,T=(n=new S(n)).d;if(n.s*=M.s,!A||!A[0]||!T||!T[0])return new S(!n.s||A&&!A[0]&&!T||T&&!T[0]&&!A?NaN:!A||!T?n.s/0:n.s*0);for(i=zt(M.e/H)+zt(n.e/H),g=A.length,m=T.length,g<m&&(a=A,A=T,T=a,d=g,g=m,m=d),a=[],d=g+m,o=d;o--;)a.push(0);for(o=m;--o>=0;){for(r=0,e=g+o;e>o;)c=a[e]+T[o]*A[e-o-1]+r,a[e--]=c%re|0,r=c/re|0;a[e]=(a[e]+r)%re|0}for(;!a[--d];)a.pop();return r?++i:a.shift(),n.d=a,n.e=ze(a,i),Y?z(n,S.precision,S.rounding):n};E.toBinary=function(n,r){return Ni(this,2,n,r)};E.toDecimalPlaces=E.toDP=function(n,r){var i=this,o=i.constructor;return i=new o(i),n===void 0?i:(Xt(n,0,we),r===void 0?r=o.rounding:Xt(r,0,8),z(i,n+i.e+1,r))};E.toExponential=function(n,r){var i,o=this,e=o.constructor;return n===void 0?i=ue(o,!0):(Xt(n,0,we),r===void 0?r=e.rounding:Xt(r,0,8),o=z(new e(o),n+1,r),i=ue(o,!0,n+1)),o.isNeg()&&!o.isZero()?"-"+i:i};E.toFixed=function(n,r){var i,o,e=this,a=e.constructor;return n===void 0?i=ue(e):(Xt(n,0,we),r===void 0?r=a.rounding:Xt(r,0,8),o=z(new a(e),n+e.e+1,r),i=ue(o,!1,n+o.e+1)),e.isNeg()&&!e.isZero()?"-"+i:i};E.toFraction=function(n){var r,i,o,e,a,d,c,g,m,M,S,A,T=this,D=T.d,R=T.constructor;if(!D)return new R(T);if(m=i=new R(1),o=g=new R(0),r=new R(o),a=r.e=Mr(D)-T.e-1,d=a%H,r.d[0]=$t(10,d<0?H+d:d),n==null)n=a>0?r:m;else{if(c=new R(n),!c.isInt()||c.lt(m))throw Error(_e+c);n=c.gt(r)?a>0?r:m:c}for(Y=!1,c=new R(Zt(D)),M=R.precision,R.precision=a=D.length*H*2;S=ot(c,r,0,1,1),e=i.plus(S.times(o)),e.cmp(n)!=1;)i=o,o=e,e=m,m=g.plus(S.times(e)),g=e,e=r,r=c.minus(S.times(e)),c=e;return e=ot(n.minus(i),o,0,1,1),g=g.plus(e.times(m)),i=i.plus(e.times(o)),g.s=m.s=T.s,A=ot(m,o,a,1).minus(T).abs().cmp(ot(g,i,a,1).minus(T).abs())<1?[m,o]:[g,i],R.precision=M,Y=!0,A};E.toHexadecimal=E.toHex=function(n,r){return Ni(this,16,n,r)};E.toNearest=function(n,r){var i=this,o=i.constructor;if(i=new o(i),n==null){if(!i.d)return i;n=new o(1),r=o.rounding}else{if(n=new o(n),r===void 0?r=o.rounding:Xt(r,0,8),!i.d)return n.s?i:n;if(!n.d)return n.s&&(n.s=i.s),n}return n.d[0]?(Y=!1,i=ot(i,n,0,r,1).times(n),Y=!0,z(i)):(n.s=i.s,i=n),i};E.toNumber=function(){return+this};E.toOctal=function(n,r){return Ni(this,8,n,r)};E.toPower=E.pow=function(n){var r,i,o,e,a,d,c=this,g=c.constructor,m=+(n=new g(n));if(!c.d||!n.d||!c.d[0]||!n.d[0])return new g($t(+c,m));if(c=new g(c),c.eq(1))return c;if(o=g.precision,a=g.rounding,n.eq(1))return z(c,o,a);if(r=zt(n.e/H),r>=n.d.length-1&&(i=m<0?-m:m)<=on)return e=br(g,c,i,o),n.s<0?new g(1).div(e):z(e,o,a);if(d=c.s,d<0){if(r<n.d.length-1)return new g(NaN);if((n.d[r]&1)==0&&(d=1),c.e==0&&c.d[0]==1&&c.d.length==1)return c.s=d,c}return i=$t(+c,m),r=i==0||!isFinite(i)?zt(m*(Math.log("0."+Zt(c.d))/Math.LN10+c.e+1)):new g(i+"").e,r>g.maxE+1||r<g.minE-1?new g(r>0?d/0:0):(Y=!1,g.rounding=c.s=1,i=Math.min(12,(r+"").length),e=Li(n.times(ge(c,o+i)),o),e.d&&(e=z(e,o+5,1),Te(e.d,o,a)&&(r=o+10,e=z(Li(n.times(ge(c,r+i)),r),r+5,1),+Zt(e.d).slice(o+1,o+15)+1==1e14&&(e=z(e,o+1,0)))),e.s=d,Y=!0,g.rounding=a,z(e,o,a))};E.toPrecision=function(n,r){var i,o=this,e=o.constructor;return n===void 0?i=ue(o,o.e<=e.toExpNeg||o.e>=e.toExpPos):(Xt(n,1,we),r===void 0?r=e.rounding:Xt(r,0,8),o=z(new e(o),n,r),i=ue(o,n<=o.e||o.e<=e.toExpNeg,n)),o.isNeg()&&!o.isZero()?"-"+i:i};E.toSignificantDigits=E.toSD=function(n,r){var i=this,o=i.constructor;return n===void 0?(n=o.precision,r=o.rounding):(Xt(n,1,we),r===void 0?r=o.rounding:Xt(r,0,8)),z(new o(i),n,r)};E.toString=function(){var n=this,r=n.constructor,i=ue(n,n.e<=r.toExpNeg||n.e>=r.toExpPos);return n.isNeg()&&!n.isZero()?"-"+i:i};E.truncated=E.trunc=function(){return z(new this.constructor(this),this.e+1,1)};E.valueOf=E.toJSON=function(){var n=this,r=n.constructor,i=ue(n,n.e<=r.toExpNeg||n.e>=r.toExpPos);return n.isNeg()?"-"+i:i};function Zt(n){var r,i,o,e=n.length-1,a="",d=n[0];if(e>0){for(a+=d,r=1;r<e;r++)o=n[r]+"",i=H-o.length,i&&(a+=me(i)),a+=o;d=n[r],o=d+"",i=H-o.length,i&&(a+=me(i))}else if(d===0)return"0";for(;d%10===0;)d/=10;return a+d}function Xt(n,r,i){if(n!==~~n||n<r||n>i)throw Error(_e+n)}function Te(n,r,i,o){var e,a,d,c;for(a=n[0];a>=10;a/=10)--r;return--r<0?(r+=H,e=0):(e=Math.ceil((r+1)/H),r%=H),a=$t(10,H-r),c=n[e]%a|0,o==null?r<3?(r==0?c=c/100|0:r==1&&(c=c/10|0),d=i<4&&c==99999||i>3&&c==49999||c==5e4||c==0):d=(i<4&&c+1==a||i>3&&c+1==a/2)&&(n[e+1]/a/100|0)==$t(10,r-2)-1||(c==a/2||c==0)&&(n[e+1]/a/100|0)==0:r<4?(r==0?c=c/1e3|0:r==1?c=c/100|0:r==2&&(c=c/10|0),d=(o||i<4)&&c==9999||!o&&i>3&&c==4999):d=((o||i<4)&&c+1==a||!o&&i>3&&c+1==a/2)&&(n[e+1]/a/1e3|0)==$t(10,r-3)-1,d}function Ue(n,r,i){for(var o,e=[0],a,d=0,c=n.length;d<c;){for(a=e.length;a--;)e[a]*=r;for(e[0]+=Di.indexOf(n.charAt(d++)),o=0;o<e.length;o++)e[o]>i-1&&(e[o+1]===void 0&&(e[o+1]=0),e[o+1]+=e[o]/i|0,e[o]%=i)}return e.reverse()}function an(n,r){var i,o,e;if(r.isZero())return r;o=r.d.length,o<32?(i=Math.ceil(o/3),e=(1/Ge(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),n.precision+=i,r=Ae(n,1,r.times(e),new n(1));for(var a=i;a--;){var d=r.times(r);r=d.times(d).minus(d).times(8).plus(1)}return n.precision-=i,r}var ot=(function(){function n(o,e,a){var d,c=0,g=o.length;for(o=o.slice();g--;)d=o[g]*e+c,o[g]=d%a|0,c=d/a|0;return c&&o.unshift(c),o}function r(o,e,a,d){var c,g;if(a!=d)g=a>d?1:-1;else for(c=g=0;c<a;c++)if(o[c]!=e[c]){g=o[c]>e[c]?1:-1;break}return g}function i(o,e,a,d){for(var c=0;a--;)o[a]-=c,c=o[a]<e[a]?1:0,o[a]=c*d+o[a]-e[a];for(;!o[0]&&o.length>1;)o.shift()}return function(o,e,a,d,c,g){var m,M,S,A,T,D,R,N,L,O,F,q,W,j,Z,w,b,k,x,C,p=o.constructor,t=o.s==e.s?1:-1,s=o.d,u=e.d;if(!s||!s[0]||!u||!u[0])return new p(!o.s||!e.s||(s?u&&s[0]==u[0]:!u)?NaN:s&&s[0]==0||!u?t*0:t/0);for(g?(T=1,M=o.e-e.e):(g=re,T=H,M=zt(o.e/T)-zt(e.e/T)),x=u.length,b=s.length,L=new p(t),O=L.d=[],S=0;u[S]==(s[S]||0);S++);if(u[S]>(s[S]||0)&&M--,a==null?(j=a=p.precision,d=p.rounding):c?j=a+(o.e-e.e)+1:j=a,j<0)O.push(1),D=!0;else{if(j=j/T+2|0,S=0,x==1){for(A=0,u=u[0],j++;(S<b||A)&&j--;S++)Z=A*g+(s[S]||0),O[S]=Z/u|0,A=Z%u|0;D=A||S<b}else{for(A=g/(u[0]+1)|0,A>1&&(u=n(u,A,g),s=n(s,A,g),x=u.length,b=s.length),w=x,F=s.slice(0,x),q=F.length;q<x;)F[q++]=0;C=u.slice(),C.unshift(0),k=u[0],u[1]>=g/2&&++k;do A=0,m=r(u,F,x,q),m<0?(W=F[0],x!=q&&(W=W*g+(F[1]||0)),A=W/k|0,A>1?(A>=g&&(A=g-1),R=n(u,A,g),N=R.length,q=F.length,m=r(R,F,N,q),m==1&&(A--,i(R,x<N?C:u,N,g))):(A==0&&(m=A=1),R=u.slice()),N=R.length,N<q&&R.unshift(0),i(F,R,q,g),m==-1&&(q=F.length,m=r(u,F,x,q),m<1&&(A++,i(F,x<q?C:u,q,g))),q=F.length):m===0&&(A++,F=[0]),O[S++]=A,m&&F[0]?F[q++]=s[w]||0:(F=[s[w]],q=1);while((w++<b||F[0]!==void 0)&&j--);D=F[0]!==void 0}O[0]||O.shift()}if(T==1)L.e=M,mr=D;else{for(S=1,A=O[0];A>=10;A/=10)S++;L.e=S+M*T-1,z(L,c?a+L.e+1:a,d,D)}return L}})();function z(n,r,i,o){var e,a,d,c,g,m,M,S,A,T=n.constructor;t:if(r!=null){if(S=n.d,!S)return n;for(e=1,c=S[0];c>=10;c/=10)e++;if(a=r-e,a<0)a+=H,d=r,M=S[A=0],g=M/$t(10,e-d-1)%10|0;else if(A=Math.ceil((a+1)/H),c=S.length,A>=c)if(o){for(;c++<=A;)S.push(0);M=g=0,e=1,a%=H,d=a-H+1}else break t;else{for(M=c=S[A],e=1;c>=10;c/=10)e++;a%=H,d=a-H+e,g=d<0?0:M/$t(10,e-d-1)%10|0}if(o=o||r<0||S[A+1]!==void 0||(d<0?M:M%$t(10,e-d-1)),m=i<4?(g||o)&&(i==0||i==(n.s<0?3:2)):g>5||g==5&&(i==4||o||i==6&&(a>0?d>0?M/$t(10,e-d):0:S[A-1])%10&1||i==(n.s<0?8:7)),r<1||!S[0])return S.length=0,m?(r-=n.e+1,S[0]=$t(10,(H-r%H)%H),n.e=-r||0):S[0]=n.e=0,n;if(a==0?(S.length=A,c=1,A--):(S.length=A+1,c=$t(10,H-a),S[A]=d>0?(M/$t(10,e-d)%$t(10,d)|0)*c:0),m)for(;;)if(A==0){for(a=1,d=S[0];d>=10;d/=10)a++;for(d=S[0]+=c,c=1;d>=10;d/=10)c++;a!=c&&(n.e++,S[0]==re&&(S[0]=1));break}else{if(S[A]+=c,S[A]!=re)break;S[A--]=0,c=1}for(a=S.length;S[--a]===0;)S.pop()}return Y&&(n.e>T.maxE?(n.d=null,n.e=NaN):n.e<T.minE&&(n.e=0,n.d=[0])),n}function ue(n,r,i){if(!n.isFinite())return kr(n);var o,e=n.e,a=Zt(n.d),d=a.length;return r?(i&&(o=i-d)>0?a=a.charAt(0)+"."+a.slice(1)+me(o):d>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(n.e<0?"e":"e+")+n.e):e<0?(a="0."+me(-e-1)+a,i&&(o=i-d)>0&&(a+=me(o))):e>=d?(a+=me(e+1-d),i&&(o=i-e-1)>0&&(a=a+"."+me(o))):((o=e+1)<d&&(a=a.slice(0,o)+"."+a.slice(o)),i&&(o=i-d)>0&&(e+1===d&&(a+="."),a+=me(o))),a}function ze(n,r){var i=n[0];for(r*=H;i>=10;i/=10)r++;return r}function Ze(n,r,i){if(r>sn)throw Y=!0,i&&(n.precision=i),Error(gr);return z(new n($e),r,1,!0)}function le(n,r,i){if(r>Ri)throw Error(gr);return z(new n(We),r,i,!0)}function Mr(n){var r=n.length-1,i=r*H+1;if(r=n[r],r){for(;r%10==0;r/=10)i--;for(r=n[0];r>=10;r/=10)i++}return i}function me(n){for(var r="";n--;)r+="0";return r}function br(n,r,i,o){var e,a=new n(1),d=Math.ceil(o/H+4);for(Y=!1;;){if(i%2&&(a=a.times(r),hr(a.d,d)&&(e=!0)),i=zt(i/2),i===0){i=a.d.length-1,e&&a.d[i]===0&&++a.d[i];break}r=r.times(r),hr(r.d,d)}return Y=!0,a}function dr(n){return n.d[n.d.length-1]&1}function yr(n,r,i){for(var o,e,a=new n(r[0]),d=0;++d<r.length;){if(e=new n(r[d]),!e.s){a=e;break}o=a.cmp(e),(o===i||o===0&&a.s===i)&&(a=e)}return a}function Li(n,r){var i,o,e,a,d,c,g,m=0,M=0,S=0,A=n.constructor,T=A.rounding,D=A.precision;if(!n.d||!n.d[0]||n.e>17)return new A(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(r==null?(Y=!1,g=D):g=r,c=new A(.03125);n.e>-2;)n=n.times(c),S+=5;for(o=Math.log($t(2,S))/Math.LN10*2+5|0,g+=o,i=a=d=new A(1),A.precision=g;;){if(a=z(a.times(n),g,1),i=i.times(++M),c=d.plus(ot(a,i,g,1)),Zt(c.d).slice(0,g)===Zt(d.d).slice(0,g)){for(e=S;e--;)d=z(d.times(d),g,1);if(r==null)if(m<3&&Te(d.d,g-o,T,m))A.precision=g+=10,i=a=c=new A(1),M=0,m++;else return z(d,A.precision=D,T,Y=!0);else return A.precision=D,d}d=c}}function ge(n,r){var i,o,e,a,d,c,g,m,M,S,A,T=1,D=10,R=n,N=R.d,L=R.constructor,O=L.rounding,F=L.precision;if(R.s<0||!N||!N[0]||!R.e&&N[0]==1&&N.length==1)return new L(N&&!N[0]?-1/0:R.s!=1?NaN:N?0:R);if(r==null?(Y=!1,M=F):M=r,L.precision=M+=D,i=Zt(N),o=i.charAt(0),Math.abs(a=R.e)<15e14){for(;o<7&&o!=1||o==1&&i.charAt(1)>3;)R=R.times(n),i=Zt(R.d),o=i.charAt(0),T++;a=R.e,o>1?(R=new L("0."+i),a++):R=new L(o+"."+i.slice(1))}else return m=Ze(L,M+2,F).times(a+""),R=ge(new L(o+"."+i.slice(1)),M-D).plus(m),L.precision=F,r==null?z(R,F,O,Y=!0):R;for(S=R,g=d=R=ot(R.minus(1),R.plus(1),M,1),A=z(R.times(R),M,1),e=3;;){if(d=z(d.times(A),M,1),m=g.plus(ot(d,new L(e),M,1)),Zt(m.d).slice(0,M)===Zt(g.d).slice(0,M))if(g=g.times(2),a!==0&&(g=g.plus(Ze(L,M+2,F).times(a+""))),g=ot(g,new L(T),M,1),r==null)if(Te(g.d,M-D,O,c))L.precision=M+=D,m=d=R=ot(S.minus(1),S.plus(1),M,1),A=z(R.times(R),M,1),e=c=1;else return z(g,L.precision=F,O,Y=!0);else return L.precision=F,g;g=m,e+=2}}function kr(n){return String(n.s*n.s/0)}function je(n,r){var i,o,e;for((i=r.indexOf("."))>-1&&(r=r.replace(".","")),(o=r.search(/e/i))>0?(i<0&&(i=o),i+=+r.slice(o+1),r=r.substring(0,o)):i<0&&(i=r.length),o=0;r.charCodeAt(o)===48;o++);for(e=r.length;r.charCodeAt(e-1)===48;--e);if(r=r.slice(o,e),r){if(e-=o,n.e=i=i-o-1,n.d=[],o=(i+1)%H,i<0&&(o+=H),o<e){for(o&&n.d.push(+r.slice(0,o)),e-=H;o<e;)n.d.push(+r.slice(o,o+=H));r=r.slice(o),o=H-r.length}else o-=e;for(;o--;)r+="0";n.d.push(+r),Y&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function ln(n,r){var i,o,e,a,d,c,g,m,M;if(r.indexOf("_")>-1){if(r=r.replace(/(\d)_(?=\d)/g,"$1"),vr.test(r))return je(n,r)}else if(r==="Infinity"||r==="NaN")return+r||(n.s=NaN),n.e=NaN,n.d=null,n;if(rn.test(r))i=16,r=r.toLowerCase();else if(en.test(r))i=2;else if(nn.test(r))i=8;else throw Error(_e+r);for(a=r.search(/p/i),a>0?(g=+r.slice(a+1),r=r.substring(2,a)):r=r.slice(2),a=r.indexOf("."),d=a>=0,o=n.constructor,d&&(r=r.replace(".",""),c=r.length,a=c-a,e=br(o,new o(i),a,a*2)),m=Ue(r,i,re),M=m.length-1,a=M;m[a]===0;--a)m.pop();return a<0?new o(n.s*0):(n.e=ze(m,M),n.d=m,Y=!1,d&&(n=ot(n,e,c*4)),g&&(n=n.times(Math.abs(g)<54?$t(2,g):De.pow(2,g))),Y=!0,n)}function un(n,r){var i,o=r.d.length;if(o<3)return r.isZero()?r:Ae(n,2,r,r);i=1.4*Math.sqrt(o),i=i>16?16:i|0,r=r.times(1/Ge(5,i)),r=Ae(n,2,r,r);for(var e,a=new n(5),d=new n(16),c=new n(20);i--;)e=r.times(r),r=r.times(a.plus(e.times(d.times(e).minus(c))));return r}function Ae(n,r,i,o,e){var a,d,c,g,m=1,M=n.precision,S=Math.ceil(M/H);for(Y=!1,g=i.times(i),c=new n(o);;){if(d=ot(c.times(g),new n(r++*r++),M,1),c=e?o.plus(d):o.minus(d),o=ot(d.times(g),new n(r++*r++),M,1),d=c.plus(o),d.d[S]!==void 0){for(a=S;d.d[a]===c.d[a]&&a--;);if(a==-1)break}a=c,c=o,o=d,d=a,m++}return Y=!0,d.d.length=S+1,d}function Ge(n,r){for(var i=n;--r;)i*=n;return i}function Sr(n,r){var i,o=r.s<0,e=le(n,n.precision,1),a=e.times(.5);if(r=r.abs(),r.lte(a))return fe=o?4:1,r;if(i=r.divToInt(e),i.isZero())fe=o?3:2;else{if(r=r.minus(i.times(e)),r.lte(a))return fe=dr(i)?o?2:3:o?4:1,r;fe=dr(i)?o?1:4:o?3:2}return r.minus(e).abs()}function Ni(n,r,i,o){var e,a,d,c,g,m,M,S,A,T=n.constructor,D=i!==void 0;if(D?(Xt(i,1,we),o===void 0?o=T.rounding:Xt(o,0,8)):(i=T.precision,o=T.rounding),!n.isFinite())M=kr(n);else{for(M=ue(n),d=M.indexOf("."),D?(e=2,r==16?i=i*4-3:r==8&&(i=i*3-2)):e=r,d>=0&&(M=M.replace(".",""),A=new T(1),A.e=M.length-d,A.d=Ue(ue(A),10,e),A.e=A.d.length),S=Ue(M,10,e),a=g=S.length;S[--g]==0;)S.pop();if(!S[0])M=D?"0p+0":"0";else{if(d<0?a--:(n=new T(n),n.d=S,n.e=a,n=ot(n,A,i,o,0,e),S=n.d,a=n.e,m=mr),d=S[i],c=e/2,m=m||S[i+1]!==void 0,m=o<4?(d!==void 0||m)&&(o===0||o===(n.s<0?3:2)):d>c||d===c&&(o===4||m||o===6&&S[i-1]&1||o===(n.s<0?8:7)),S.length=i,m)for(;++S[--i]>e-1;)S[i]=0,i||(++a,S.unshift(1));for(g=S.length;!S[g-1];--g);for(d=0,M="";d<g;d++)M+=Di.charAt(S[d]);if(D){if(g>1)if(r==16||r==8){for(d=r==16?4:3,--g;g%d;g++)M+="0";for(S=Ue(M,e,r),g=S.length;!S[g-1];--g);for(d=1,M="1.";d<g;d++)M+=Di.charAt(S[d])}else M=M.charAt(0)+"."+M.slice(1);M=M+(a<0?"p":"p+")+a}else if(a<0){for(;++a;)M="0"+M;M="0."+M}else if(++a>g)for(a-=g;a--;)M+="0";else a<g&&(M=M.slice(0,a)+"."+M.slice(a))}M=(r==16?"0x":r==2?"0b":r==8?"0o":"")+M}return n.s<0?"-"+M:M}function hr(n,r){if(n.length>r)return n.length=r,!0}function cn(n){return new this(n).abs()}function fn(n){return new this(n).acos()}function dn(n){return new this(n).acosh()}function hn(n,r){return new this(n).plus(r)}function pn(n){return new this(n).asin()}function mn(n){return new this(n).asinh()}function gn(n){return new this(n).atan()}function _n(n){return new this(n).atanh()}function wn(n,r){n=new this(n),r=new this(r);var i,o=this.precision,e=this.rounding,a=o+4;return!n.s||!r.s?i=new this(NaN):!n.d&&!r.d?(i=le(this,a,1).times(r.s>0?.25:.75),i.s=n.s):!r.d||n.isZero()?(i=r.s<0?le(this,o,e):new this(0),i.s=n.s):!n.d||r.isZero()?(i=le(this,a,1).times(.5),i.s=n.s):r.s<0?(this.precision=a,this.rounding=1,i=this.atan(ot(n,r,a,1)),r=le(this,a,1),this.precision=o,this.rounding=e,i=n.s<0?i.minus(r):i.plus(r)):i=this.atan(ot(n,r,a,1)),i}function vn(n){return new this(n).cbrt()}function Mn(n){return z(n=new this(n),n.e+1,2)}function bn(n,r,i){return new this(n).clamp(r,i)}function yn(n){if(!n||typeof n!="object")throw Error(Ke+"Object expected");var r,i,o,e=n.defaults===!0,a=["precision",1,we,"rounding",0,8,"toExpNeg",-Pe,0,"toExpPos",0,Pe,"maxE",0,Pe,"minE",-Pe,0,"modulo",0,9];for(r=0;r<a.length;r+=3)if(i=a[r],e&&(this[i]=Oi[i]),(o=n[i])!==void 0)if(zt(o)===o&&o>=a[r+1]&&o<=a[r+2])this[i]=o;else throw Error(_e+i+": "+o);if(i="crypto",e&&(this[i]=Oi[i]),(o=n[i])!==void 0)if(o===!0||o===!1||o===0||o===1)if(o)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(_r);else this[i]=!1;else throw Error(_e+i+": "+o);return this}function kn(n){return new this(n).cos()}function Sn(n){return new this(n).cosh()}function Pr(n){var r,i,o;function e(a){var d,c,g,m=this;if(!(m instanceof e))return new e(a);if(m.constructor=e,pr(a)){m.s=a.s,Y?!a.d||a.e>e.maxE?(m.e=NaN,m.d=null):a.e<e.minE?(m.e=0,m.d=[0]):(m.e=a.e,m.d=a.d.slice()):(m.e=a.e,m.d=a.d?a.d.slice():a.d);return}if(g=typeof a,g==="number"){if(a===0){m.s=1/a<0?-1:1,m.e=0,m.d=[0];return}if(a<0?(a=-a,m.s=-1):m.s=1,a===~~a&&a<1e7){for(d=0,c=a;c>=10;c/=10)d++;Y?d>e.maxE?(m.e=NaN,m.d=null):d<e.minE?(m.e=0,m.d=[0]):(m.e=d,m.d=[a]):(m.e=d,m.d=[a]);return}if(a*0!==0){a||(m.s=NaN),m.e=NaN,m.d=null;return}return je(m,a.toString())}if(g==="string")return(c=a.charCodeAt(0))===45?(a=a.slice(1),m.s=-1):(c===43&&(a=a.slice(1)),m.s=1),vr.test(a)?je(m,a):ln(m,a);if(g==="bigint")return a<0?(a=-a,m.s=-1):m.s=1,je(m,a.toString());throw Error(_e+a)}if(e.prototype=E,e.ROUND_UP=0,e.ROUND_DOWN=1,e.ROUND_CEIL=2,e.ROUND_FLOOR=3,e.ROUND_HALF_UP=4,e.ROUND_HALF_DOWN=5,e.ROUND_HALF_EVEN=6,e.ROUND_HALF_CEIL=7,e.ROUND_HALF_FLOOR=8,e.EUCLID=9,e.config=e.set=yn,e.clone=Pr,e.isDecimal=pr,e.abs=cn,e.acos=fn,e.acosh=dn,e.add=hn,e.asin=pn,e.asinh=mn,e.atan=gn,e.atanh=_n,e.atan2=wn,e.cbrt=vn,e.ceil=Mn,e.clamp=bn,e.cos=kn,e.cosh=Sn,e.div=Pn,e.exp=An,e.floor=Cn,e.hypot=xn,e.ln=Tn,e.log=Dn,e.log10=Rn,e.log2=On,e.max=Ln,e.min=Nn,e.mod=In,e.mul=En,e.pow=Bn,e.random=qn,e.round=Fn,e.sign=Un,e.sin=jn,e.sinh=$n,e.sqrt=Wn,e.sub=Zn,e.sum=Kn,e.tan=zn,e.tanh=Gn,e.trunc=Hn,n===void 0&&(n={}),n&&n.defaults!==!0)for(o=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],r=0;r<o.length;)n.hasOwnProperty(i=o[r++])||(n[i]=this[i]);return e.config(n),e}function Pn(n,r){return new this(n).div(r)}function An(n){return new this(n).exp()}function Cn(n){return z(n=new this(n),n.e+1,3)}function xn(){var n,r,i=new this(0);for(Y=!1,n=0;n<arguments.length;)if(r=new this(arguments[n++]),r.d)i.d&&(i=i.plus(r.times(r)));else{if(r.s)return Y=!0,new this(1/0);i=r}return Y=!0,i.sqrt()}function pr(n){return n instanceof De||n&&n.toStringTag===wr||!1}function Tn(n){return new this(n).ln()}function Dn(n,r){return new this(n).log(r)}function On(n){return new this(n).log(2)}function Rn(n){return new this(n).log(10)}function Ln(){return yr(this,arguments,-1)}function Nn(){return yr(this,arguments,1)}function In(n,r){return new this(n).mod(r)}function En(n,r){return new this(n).mul(r)}function Bn(n,r){return new this(n).pow(r)}function qn(n){var r,i,o,e,a=0,d=new this(1),c=[];if(n===void 0?n=this.precision:Xt(n,1,we),o=Math.ceil(n/H),this.crypto)if(crypto.getRandomValues)for(r=crypto.getRandomValues(new Uint32Array(o));a<o;)e=r[a],e>=429e7?r[a]=crypto.getRandomValues(new Uint32Array(1))[0]:c[a++]=e%1e7;else if(crypto.randomBytes){for(r=crypto.randomBytes(o*=4);a<o;)e=r[a]+(r[a+1]<<8)+(r[a+2]<<16)+((r[a+3]&127)<<24),e>=214e7?crypto.randomBytes(4).copy(r,a):(c.push(e%1e7),a+=4);a=o/4}else throw Error(_r);else for(;a<o;)c[a++]=Math.random()*1e7|0;for(o=c[--a],n%=H,o&&n&&(e=$t(10,H-n),c[a]=(o/e|0)*e);c[a]===0;a--)c.pop();if(a<0)i=0,c=[0];else{for(i=-1;c[0]===0;i-=H)c.shift();for(o=1,e=c[0];e>=10;e/=10)o++;o<H&&(i-=H-o)}return d.e=i,d.d=c,d}function Fn(n){return z(n=new this(n),n.e+1,this.rounding)}function Un(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function jn(n){return new this(n).sin()}function $n(n){return new this(n).sinh()}function Wn(n){return new this(n).sqrt()}function Zn(n,r){return new this(n).sub(r)}function Kn(){var n=0,r=arguments,i=new this(r[n]);for(Y=!1;i.s&&++n<r.length;)i=i.plus(r[n]);return Y=!0,z(i,this.precision,this.rounding)}function zn(n){return new this(n).tan()}function Gn(n){return new this(n).tanh()}function Hn(n){return z(n=new this(n),n.e+1,1)}E[Symbol.for("nodejs.util.inspect.custom")]=E.toString;E[Symbol.toStringTag]="Decimal";var De=E.constructor=Pr(Oi);$e=new De($e);We=new De(We);var dt=De;import{compoundDebt as Xn}from"@suilend/sdk";var Ve=class{constructor(r){this.getPositionList=async(r=this._sdk.getSenderAddress(),i=!1)=>{let{lending_market_id:o,lending_market_type:e}=jt(this._sdk.sdkOptions.suilend);try{let a=`cap_to_position_mapping_${r}`,d=this._sdk.getCache(a,i),c=await this._sdk.FullClient.getOwnedObjectsByPage(r,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{StructType:`${this._sdk.sdkOptions.margin_trading.package_id}::position::PositionCap`}]}});if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:42 ~ PositionModules ~ ownerRes.data.length:",c.data.length),c.data.length===0)return Gt("PositionNotFound","Position not found"),[];let g=await this._sdk.SuiLendModule.getSuilendClient(o,e);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:48 ~ PositionModules ~ suiLendClient:",g);let{allLendingMarketData:m,lstAprPercentMap:M}=await this._sdk.SuiLendModule.getLendingMarketData();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:50 ~ PositionModules ~ allLendingMarketData:",m);let S=m[o].reserveMap;d||(d=new Map);let A=[];for(let N=0;N<c.data.length;N++){let L=Ar(c.data[N]);L.position_id&&A.push(L.position_id),L.id.id&&d.set(L.id.id,L.position_id)}await this._sdk.updateCache(a,d,Vn);let T=await this._sdk.FullClient.batchGetObjects(A,{showContent:!0});console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:73 ~ PositionModules ~ positionRes:",T);let D=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:m,lstAprPercentMap:M},!0);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:75 ~ PositionModules ~ obligations:",D);let R=[];for(let N=0;N<T.length;N++){let L=A[N],O="";for(let[Z,w]of d.entries())if(w===L){O=Z;break}let F=ki(T[N],O),q=await g.getObligation(F.obligation_owner_cap),W=Si(F,q,S||{},M||{},D[o].rewardMap),j=this.getObligationRewardsInfo(q,Object.values(S));R.push({...W,claimable_rewards:j})}return R}catch(a){return Gt("FetchError",a),[]}};this.getPositionInfo=async(r,i=this._sdk.getSenderAddress(),o=!0)=>{let e=`cap_to_position_mapping_${i}`,a=this._sdk.getCache(e,o);a||(a=new Map);let d=this.getCapIdByPositionId(r,i)||"";if(!d){let q=await this._sdk.FullClient.getOwnedObjectsByPage(i,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{StructType:`${this._sdk.sdkOptions.margin_trading.package_id}::position::PositionCap`}]}});for(let W=0;W<q.data.length;W++){let j=Ar(q.data[W]);j.id.id&&a.set(j.id.id,j.position_id),j.position_id===r&&(d=j.id.id)}}let c=await this._sdk.FullClient.batchGetObjects([r],{showContent:!0}),g=ki(c[0],d||""),{lending_market_id:m,lending_market_type:M}=jt(this._sdk.sdkOptions.suilend),S=await this._sdk.SuiLendModule.getSuilendClient(m,M),{allLendingMarketData:A,lstAprPercentMap:T}=await this._sdk.SuiLendModule.getLendingMarketData(),D=A[m].reserveMap,R=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:A,lstAprPercentMap:T},!0),N=await S.getObligation(g.obligation_owner_cap),L=this.getObligationRewardsInfo(N,Object.values(D));return{...Si(g,N,D||{},T||{},R[m].rewardMap),claimable_rewards:L}};this.getCapIdByPositionId=(r,i=this._sdk.getSenderAddress())=>{let o=`cap_to_position_mapping_${i}`,e=this._sdk.getCache(o,!1);if(!e)return"";for(let[a,d]of e.entries())if(d===r)return a;return""};this.repay=r=>{let{margin_trading:i}=this._sdk.sdkOptions,{lending_market_id:o,lending_market_type:e}=jt(this._sdk.sdkOptions.suilend),{global_config_id:a,versioned_id:d}=jt(this._sdk.sdkOptions.margin_trading),{txb:c,repay_amount:g,repay_coin_type:m,repay_coin:M,repay_reserve_array_index:S,market_id:A,position_cap_id:T,margin_trading_context:D}=r,R=c||new ne,N=M||Q.buildCoinWithBalance(BigInt(g.toString()),m,R);R.moveCall({target:`${i.published_at}::router::repay`,typeArguments:[e,m],arguments:[D,R.object(a),R.object(o),R.object(A),R.object(T),N,R.pure.u64(S.toString()),R.object(be),R.object(d)]})};this.withdrawAsset=(r,i)=>{let{margin_trading:o}=this._sdk.sdkOptions,{lending_market_id:e,lending_market_type:a}=jt(this._sdk.sdkOptions.suilend),{global_config_id:d,versioned_id:c}=jt(this._sdk.sdkOptions.margin_trading),{package_id:g}=this._sdk.sdkOptions.suilend,{market_id:m,withdraw_amount:M,withdraw_reserve_array_index:S,withdraw_coin_type:A,position_cap_id:T,margin_trading_context:D}=r,[R]=i.moveCall({target:"0x1::option::none",typeArguments:[`${g}::lending_market::RateLimiterExemption<${a}, ${A}>`],arguments:[]});return i.moveCall({target:`${o.published_at}::router::withdraw`,typeArguments:[a,A],arguments:[D,i.object(d),i.object(e),i.object(m),i.object(T),i.object(R),i.pure.u64(M),i.pure.u64(S),i.object(Cr),i.object(be),i.object(c)]})};this.borrowAsset=(r,i)=>{let{reserve_array_index:o,borrow_amount:e,base_token:a,quote_token:d,lending_market_id:c,is_long:g,market_id:m,position_cap_id:M,position_cap:S,margin_trading_context:A}=r,{margin_trading:T}=this._sdk.sdkOptions,{lending_market_type:D}=jt(this._sdk.sdkOptions.suilend),{global_config_id:R,versioned_id:N}=jt(this._sdk.sdkOptions.margin_trading);return i.moveCall({target:`${T.published_at}::router::borrow`,typeArguments:[D,g?d:a],arguments:[A,i.object(R),i.object(c),i.object(m),M?i.object(M):S,i.pure.u64(o),i.pure.u64(e.toString()),i.object(Cr),i.object(be),i.object(N)]})};this.createMarginTradingContext=(r,i)=>{let{published_at:o}=this._sdk.sdkOptions.margin_trading,{market_id:e,position_cap_id:a,action:d,coin_type:c,amount:g}=r;return i.moveCall({target:`${o}::router::create_margin_trading_context`,arguments:[i.object(e),i.object(a),i.pure.string(d),i.pure.u64(g)],typeArguments:[c]})};this.marginTradingContextConfirm=(r,i)=>{let{published_at:o}=this._sdk.sdkOptions.margin_trading;return i.moveCall({target:`${o}::router::confirm`,arguments:[r],typeArguments:[]}),i};this.openPosition=async r=>{let{is_quote:i,is_long:o,amount:e,swap_clmm_pool:a="",slippage:d,leverage:c,market_id:g}=r,{lending_market_id:m}=jt(this._sdk.sdkOptions.suilend),M=new ne,{base_token:S,quote_token:A}=await this._sdk.MarketModules.getMarketInfo(g),{flash_amount:T,flash_loan_coin:D,is_flash_a:R,borrow_amount:N,clmm_pool_coin_type_a:L,clmm_pool_coin_type_b:O,clmm_pool:F,base_reserve_array_index:q,quote_reserve_array_index:W,reserve:j,has_swap:Z,routers:w}=await this.calculatePositionDeposit({is_long:o,is_quote:i,amount:e,swap_clmm_pool:a,leverage:c,slippage:d,market_id:g,base_token:S,quote_token:A,is_submit:!0});console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:492 ~ PositionModules ~ routers:",w),await this._sdk.SuiLendModule.refreshReservePrices(M,j);let{balance_a:b,balance_b:k,receipt:x}=this._sdk.SwapModules.flashLoan({amount:T,clmm_pool:F,clmm_pool_coin_type_a:L,clmm_pool_coin_type_b:O,flash_loan_coin:D,tx:M}),C=o?A:S,p=o?S:A,t=Q.buildCoinWithBalance(BigInt(e),i?A:S,M),s=Q.fromBalance(b,L,M),u=Q.fromBalance(k,O,M);Z&&(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:515 ~ PositionModules ~ is_flash_a:",R),M.mergeCoins(t,[R?s:u])),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:521 ~ PositionModules ~ d(flash_amount).add(amount).toString():",I(T).add(e).toString(),C,p);let f=await this._sdk.SwapModules.handleSwap({from:C,to:p,amount:Z?I(T).add(e).toString():T,input_coin:Z?t:R?s:u,swap_clmm_pool:a,slippage:d,tx:M}),{position_cap:h,margin_trading_context:v}=this.createLeveragePosition({leverage:c,market_id:g,base_token:S,quote_token:A,is_long:o,init_deposit_amount:I(e).toString(),init_coin_type:i?A:S,tx:M}),P=o?q:W;f.swap_out_coin&&!Z&&M.mergeCoins(f.swap_out_coin,[t]),await this.depositToLeveragePosition({is_long:o,market_id:g,position_cap:h,deposit_reserve_array_index:P,input_coin:f.swap_out_coin,margin_trading_context:v,base_token:S,quote_token:A},M),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:580 ~ PositionModules ~ borrow_amount:",N);let _=this.borrowAsset({position_cap:h,reserve_array_index:o?W:q,borrow_amount:N,base_token:S,quote_token:A,is_long:o,lending_market_id:m,market_id:g,margin_trading_context:v},M),l=Q.mintBalanceZero(R?O:L,M);return this._sdk.SwapModules.repayFlashLoan({tx:M,clmm_pool:F,repay_base:R?Q.intoBalance(_,L,M):l,repay_quote:R?l:Q.intoBalance(_,O,M),receipt:x,clmm_pool_coin_type_a:L,clmm_pool_coin_type_b:O}),M.transferObjects([h],M.pure.address(this._sdk.getSenderAddress())),Q.destroyBalanceZero(R?Q.intoBalance(u,O,M):Q.intoBalance(s,L,M),R?O:L,M),this.marginTradingContextConfirm(v,M),M};this.positionDeposit=async r=>{let{position_id:i,swap_clmm_pool:o="",is_quote:e,amount:a,slippage:d,leverage:c,txb:g}=r,{lending_market_id:m}=jt(this._sdk.sdkOptions.suilend),{is_long:M,deposits:S,borrows:A,position_cap_id:T,market_id:D}=await this.getPositionInfo(i),{base_token:R,quote_token:N}=await this._sdk.MarketModules.getMarketInfo(D),L=g||new ne,O=this.createMarginTradingContext({market_id:D,position_cap_id:T,action:"increase_size",coin_type:e?N:R,amount:a.toString()},L),F=S[0].reserveArrayIndex.toString(),q=A[0].reserveArrayIndex.toString(),{flash_amount:W,flash_loan_coin:j,is_flash_a:Z,borrow_amount:w,clmm_pool_coin_type_a:b,clmm_pool_coin_type_b:k,clmm_pool:x,reserve:C,has_swap:p}=await this.calculatePositionDeposit({market_id:D,is_long:M,is_quote:e,amount:a,swap_clmm_pool:o,leverage:c,slippage:d,base_token:R,quote_token:N,position_id:i,is_open:!1});console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:603 ~ PositionModules ~ flash_amount:",W),await this._sdk.SuiLendModule.refreshReservePrices(L,C);let{balance_a:t,balance_b:s,receipt:u}=this._sdk.SwapModules.flashLoan({amount:W,clmm_pool:x,clmm_pool_coin_type_a:b,clmm_pool_coin_type_b:k,flash_loan_coin:j,tx:L}),f=M?N:R,h=M?R:N,v=Q.buildCoinWithBalance(BigInt(a),e?N:R,L),P=Q.fromBalance(t,b,L),_=Q.fromBalance(s,k,L);p&&L.mergeCoins(v,[Z?P:_]);let l=await this._sdk.SwapModules.handleSwap({from:f,to:h,amount:p?I(W).add(a).toString():W,input_coin:p?v:Z?P:_,swap_clmm_pool:o,slippage:d,tx:L});l.swap_out_coin&&!p&&L.mergeCoins(l.swap_out_coin,[v]),await this.depositToLeveragePosition({is_long:M,market_id:D,position_cap_id:T,deposit_reserve_array_index:F,input_coin:l.swap_out_coin,margin_trading_context:O,base_token:R,quote_token:N},L);let y=await this.borrowAsset({position_cap_id:T,reserve_array_index:q,borrow_amount:w,base_token:R,quote_token:N,is_long:M,lending_market_id:m,market_id:D,margin_trading_context:O},L),U=Q.mintBalanceZero(Z?k:b,L);return this._sdk.SwapModules.repayFlashLoan({tx:L,clmm_pool:x,repay_base:Z?Q.intoBalance(y,b,L):U,repay_quote:Z?U:Q.intoBalance(y,k,L),receipt:u,clmm_pool_coin_type_a:b,clmm_pool_coin_type_b:k}),Q.destroyBalanceZero(Z?Q.intoBalance(_,k,L):Q.intoBalance(P,b,L),Z?k:b,L),await this.marginTradingContextConfirm(O,L),L};this.positionWithdraw=async r=>{let{amount:i,is_quote:o,txb:e,swap_clmm_pool:a="",slippage:d,position_id:c,leverage:g}=r,m=e||new ne,{withdraw_ctoken_amount:M,repay_amount:S,is_close:A,deposits:T,borrows:D,reserve:R,base_token:N,quote_token:L,clmm_pool:O,clmm_pool_coin_type_a:F,clmm_pool_coin_type_b:q,position_cap_id:W,market_id:j,is_long:Z,swap_convert_all:w,flash_loan_amount:b,routers:k,repay_flash_loan_amount:x="0",partial_amount_in:C,withdraw_amount:p,has_flash_loan:t}=await this.calculatePositionWithdraw({position_id:c,is_quote:o,swap_clmm_pool:a,amount:i,leverage:g,slippage:d});if(A)return this.positionClose({position_id:c,is_quote:o,leverage:g,slippage:d,swap_clmm_pool:a});let s=this.createMarginTradingContext({market_id:j,position_cap_id:W,action:"decrease_size",coin_type:o?L:N,amount:i.toString()},m);await this._sdk.SuiLendModule.refreshReservePrices(m,R);let u,f;if(t){let{balance_a:_,balance_b:l,receipt:y,is_loan_a:U}=this._sdk.SwapModules.flashLoan({tx:m,amount:b,flash_loan_coin:D[0].reserve.coinType,clmm_pool:O,clmm_pool_coin_type_a:F,clmm_pool_coin_type_b:q});u=y,f=U,Q.destroyBalanceZero(f?l:_,f?q:F,m);let B=U?Q.fromBalance(_,F,m):Q.fromBalance(l,q,m);this.repay({txb:m,position_cap_id:W,repay_reserve_array_index:D[0].reserveArrayIndex.toString(),repay_coin:B,repay_coin_type:Z?L:N,repay_amount:"0",market_id:j,margin_trading_context:s}),m.transferObjects([B],this._sdk.getSenderAddress())}let h=this.withdrawAsset({market_id:j,position_cap_id:W,withdraw_amount:M.toString(),withdraw_reserve_array_index:T[0].reserveArrayIndex.toString(),withdraw_coin_type:Z?N:L,margin_trading_context:s},m);for(let _=1;_<T.length;_++){let l=this.withdrawAsset({market_id:j,position_cap_id:W,withdraw_amount:He.toString(),withdraw_reserve_array_index:T[_].reserveArrayIndex.toString(),withdraw_coin_type:T[_].coinType,margin_trading_context:s},m);m.transferObjects([l],this._sdk.getSenderAddress())}let v;if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:778 ~ PositionModules ~ swap_convert_all:",{swap_convert_all:w,has_flash_loan:t}),w)v=await this._sdk.SwapModules.routerSwap({router:k?.route_obj,input_coin:h,slippage:d,txb:m});else{let _=m.splitCoins(h,[m.pure.u64(C?.toString()||"0")]);v=await this._sdk.SwapModules.routerSwap({router:k?.route_obj,input_coin:_,slippage:d,txb:m})}let P;if(v&&t&&(P=m.splitCoins(v,[m.pure.u64(x.toString())])),P&&t){let _=Q.mintBalanceZero(f?q:F,m);this._sdk.SwapModules.repayFlashLoan({tx:m,clmm_pool:O,repay_base:f?Q.intoBalance(P,F,m):_,repay_quote:f?_:Q.intoBalance(P,q,m),clmm_pool_coin_type_a:F,clmm_pool_coin_type_b:q,receipt:u})}else if(v){let _=m.splitCoins(v,[m.pure.u64(x.toString())]);this.repay({txb:m,position_cap_id:W,repay_reserve_array_index:D[0].reserveArrayIndex.toString(),repay_coin:_,repay_coin_type:Z?L:N,repay_amount:"0",market_id:j,margin_trading_context:s}),m.transferObjects([_],this._sdk.getSenderAddress())}return v&&m.transferObjects([v],this._sdk.getSenderAddress()),w||m.transferObjects([h],this._sdk.getSenderAddress()),await this.marginTradingContextConfirm(s,m),m};this.positionClose=async r=>{let{position_id:i,is_quote:o,slippage:e,leverage:a,swap_clmm_pool:d=""}=r,{margin_trading:c}=this._sdk.sdkOptions,{global_config_id:g,versioned_id:m}=jt(this._sdk.sdkOptions.margin_trading),{lending_market_type:M,lending_market_id:S}=jt(this._sdk.sdkOptions.suilend),A=new ne,{deposits:T,borrows:D,base_token:R,quote_token:N,clmm_pool:L,clmm_pool_coin_type_a:O,clmm_pool_coin_type_b:F,position_cap_id:q,market_id:W,swap_convert_all:j,routers:Z,partial_amount_in:w,is_long:b,flash_loan_amount:k,reserve:x,repay_flash_loan_amount:C="0"}=await this.calculatePositionWithdraw({position_id:i,is_quote:o,swap_clmm_pool:d,amount:He.toString(),leverage:a,slippage:e}),p=this.createMarginTradingContext({market_id:W,position_cap_id:q,action:"close_position",coin_type:o?N:R,amount:"0"},A);await this._sdk.SuiLendModule.refreshReservePrices(A,x);let t,s;if(I(k).gt(0)){let{balance_a:h,balance_b:v,receipt:P,is_loan_a:_}=this._sdk.SwapModules.flashLoan({tx:A,amount:k,flash_loan_coin:b?N:R,clmm_pool:L,clmm_pool_coin_type_a:O,clmm_pool_coin_type_b:F});t=P,s=_,Q.destroyBalanceZero(s?v:h,s?F:O,A);let l=s?Q.fromBalance(h,O,A):Q.fromBalance(v,F,A);this.repay({txb:A,position_cap_id:q,repay_reserve_array_index:D[0].reserveArrayIndex.toString(),repay_coin:l,repay_coin_type:D[0].reserve.coinType,repay_amount:"0",market_id:W,margin_trading_context:p}),A.transferObjects([l],this._sdk.getSenderAddress())}let u=this.withdrawAsset({market_id:W,position_cap_id:q,withdraw_amount:He.toString(),withdraw_reserve_array_index:T[0].reserveArrayIndex.toString(),withdraw_coin_type:b?R:N,margin_trading_context:p},A);for(let h=1;h<T.length;h++){let v=this.withdrawAsset({market_id:W,position_cap_id:q,withdraw_amount:He.toString(),withdraw_reserve_array_index:T[h].reserveArrayIndex.toString(),withdraw_coin_type:T[h].coinType,margin_trading_context:p},A);A.transferObjects([v],this._sdk.getSenderAddress())}let f;if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:895 ~ PositionModules ~ swap_convert_all:",j),j)f=await this._sdk.SwapModules.routerSwap({router:Z?.route_obj,input_coin:u,slippage:e,txb:A});else if(w&&I(w).gt(0)){let h=A.splitCoins(u,[A.pure.u64(w?.toString()||"0")]);f=await this._sdk.SwapModules.routerSwap({router:Z?.route_obj,input_coin:h,slippage:e,txb:A})}if(f&&t){let h=Q.mintBalanceZero(s?F:O,A),v=A.splitCoins(f,[A.pure.u64(C?.toString()||"0")]);this._sdk.SwapModules.repayFlashLoan({tx:A,clmm_pool:L,repay_base:s?Q.intoBalance(v,O,A):h,repay_quote:s?h:Q.intoBalance(v,F,A),clmm_pool_coin_type_a:O,clmm_pool_coin_type_b:F,receipt:t})}return A.moveCall({target:`${c.published_at}::router::close_position`,typeArguments:[M],arguments:[p,A.object(g),A.object(S),A.object(W),A.object(q),A.object(be),A.object(m)]}),f&&A.transferObjects([f],this._sdk.getSenderAddress()),j||A.transferObjects([u],this._sdk.getSenderAddress()),this.marginTradingContextConfirm(p,A),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:951 ~ PositionModules ~ tx:",A),A};this.positionLeverageIncrease=async r=>{let{current_leverage:i,target_leverage:o,swap_clmm_pool:e="",slippage:a,position_id:d}=r,{lending_market_id:c}=jt(this._sdk.sdkOptions.suilend),g=new ne,{flash_loan_amount:m,quote_token:M,base_token:S,reserve:A,deposits:T,borrow_amount:D,routers:R,position_cap_id:N,is_long:L,market_id:O,is_flash_loan:F}=await this.calculatePositionLeverage({position_id:d,current_leverage:i,target_leverage:o,swap_clmm_pool:e,slippage:a}),q=L?M:S,W=this.createMarginTradingContext({market_id:O,position_cap_id:N,action:"increase_leverage",coin_type:L?S:M,amount:"0"},g);if(await this._sdk.SuiLendModule.refreshReservePrices(g,A),F){let{clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:Z,clmm_pool:w}=await this._sdk.SwapModules.getFlashLoanPool(q,m?.toString()||""),{balance_a:b,balance_b:k,receipt:x,is_loan_a:C}=this._sdk.SwapModules.flashLoan({tx:g,amount:m?.toString()||"0",clmm_pool:w,clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:Z,flash_loan_coin:q}),p=await this._sdk.SwapModules.routerSwap({router:R?.route_obj,input_coin:C?Q.fromBalance(b,j,g):Q.fromBalance(k,Z,g),slippage:a,txb:g});this.depositToLeveragePosition({is_long:L,market_id:O,position_cap_id:N,deposit_reserve_array_index:T[0].reserveArrayIndex.toString(),input_coin:p,margin_trading_context:W,base_token:S,quote_token:M},g);let t=this.borrowAsset({position_cap_id:N,reserve_array_index:L?A[1].arrayIndex.toString():A[0].arrayIndex.toString(),borrow_amount:D,base_token:S,quote_token:M,is_long:L,lending_market_id:c,market_id:O,margin_trading_context:W},g),s=Q.mintBalanceZero(C?Z:j,g);this._sdk.SwapModules.repayFlashLoan({tx:g,clmm_pool:w,repay_base:C?Q.intoBalance(t,j,g):s,repay_quote:C?s:Q.intoBalance(t,Z,g),receipt:x,clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:Z}),Q.destroyBalanceZero(C?k:b,C?Z:j,g)}else{let j=this.borrowAsset({position_cap_id:N,reserve_array_index:L?A[1].arrayIndex.toString():A[0].arrayIndex.toString(),borrow_amount:D,base_token:S,quote_token:M,is_long:L,lending_market_id:c,market_id:O,margin_trading_context:W},g),Z=await this._sdk.SwapModules.routerSwap({router:R?.route_obj,input_coin:j,slippage:a,txb:g});this.depositToLeveragePosition({is_long:L,market_id:O,position_cap_id:N,deposit_reserve_array_index:T[0].reserveArrayIndex.toString(),input_coin:Z,margin_trading_context:W,base_token:S,quote_token:M},g)}return await this.marginTradingContextConfirm(W,g),g};this.positionLeverageDecrease=async r=>{let{current_leverage:i,target_leverage:o,swap_clmm_pool:e="",slippage:a,position_id:d}=r,{deposits:c,borrows:g,position_cap_id:m,market_id:M,is_long:S}=await this.getPositionInfo(d),{base_token:A,quote_token:T}=await this._sdk.MarketModules.getMarketInfo(M),D=new ne,{withdraw_ctoken_amount:R,routers:N,reserve:L,is_flash_loan:O}=await this.calculatePositionLeverage({position_id:d,current_leverage:i,target_leverage:o,swap_clmm_pool:e,slippage:a}),F=this.createMarginTradingContext({market_id:M,position_cap_id:m,action:"decrease_leverage",coin_type:S?A:T,amount:"0"},D);if(await this._sdk.SuiLendModule.refreshReservePrices(D,L),O){let{clmm_pool_coin_type_a:q,clmm_pool_coin_type_b:W,clmm_pool:j,clmm_fee_tier:Z}=await this._sdk.SwapModules.getFlashLoanPool(c[0].reserve.coinType,R.toString()),{balance_a:w,balance_b:b,receipt:k,is_loan_a:x}=this._sdk.SwapModules.flashLoan({tx:D,amount:R,clmm_pool:j,clmm_pool_coin_type_a:q,clmm_pool_coin_type_b:W,flash_loan_coin:c[0].reserve.coinType}),C=await this._sdk.SwapModules.routerSwap({router:N?.route_obj,input_coin:x?Q.fromBalance(w,q,D):Q.fromBalance(b,W,D),slippage:a,txb:D});this.repay({txb:D,market_id:M,position_cap_id:m,repay_reserve_array_index:g[0].reserveArrayIndex.toString(),repay_coin:C,repay_coin_type:S?T:A,repay_amount:"0",margin_trading_context:F}),C&&D.transferObjects([C],this._sdk.getSenderAddress());let p=I(R).mul(I(1).add(Z)).toDP(0,dt.ROUND_UP),t=this.withdrawAsset({market_id:M,position_cap_id:m,withdraw_amount:p.toString(),withdraw_reserve_array_index:c[0].reserveArrayIndex.toString(),withdraw_coin_type:S?A:T,margin_trading_context:F},D);this._sdk.SwapModules.repayFlashLoan({tx:D,clmm_pool:j,repay_base:x?Q.intoBalance(t,q,D):w,repay_quote:x?b:Q.intoBalance(t,W,D),receipt:k,clmm_pool_coin_type_a:q,clmm_pool_coin_type_b:W}),D.transferObjects([t],this._sdk.getSenderAddress())}else{let q=this.withdrawAsset({market_id:M,position_cap_id:m,withdraw_amount:R.toString(),withdraw_reserve_array_index:c[0].reserveArrayIndex.toString(),withdraw_coin_type:S?A:T,margin_trading_context:F},D);D.transferObjects([q],this._sdk.getSenderAddress())}return await this.marginTradingContextConfirm(F,D),D};this.positionRepay=async r=>{let{position_id:i,amount:o,is_quote:e,slippage:a}=r,{routers:d,repay_coin_type:c,base_token:g,quote_token:m,borrows:M,deposits:S,market_id:A,position_cap_id:T}=await this.calculatePositionRepay({position_id:i,amount:o,is_quote:e}),D=this.extractOtherTokenTypes(S,M,g,m),{reserve:R}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(g,m,void 0,D),N=new ne;await this._sdk.SuiLendModule.refreshReservePrices(N,R);let L=e?m!==c:g!==c,O,F=this.createMarginTradingContext({market_id:A,position_cap_id:T,action:"repay_debt",coin_type:e?m:g,amount:o.toString()},N);if(L){let q=Q.buildCoinWithBalance(BigInt(o.toString()),e?m:g,N);O=await this._sdk.SwapModules.routerSwap({router:d?.route_obj,input_coin:q,slippage:a,txb:N})}else O=Q.buildCoinWithBalance(BigInt(o.toString()),e?m:g,N);return this.repay({txb:N,position_cap_id:T,repay_reserve_array_index:M[0].reserveArrayIndex.toString(),repay_coin:O,repay_coin_type:c,repay_amount:"0",market_id:A,margin_trading_context:F}),N.transferObjects([O],this._sdk.getSenderAddress()),await this.marginTradingContextConfirm(F,N),N};this.positionTopUpCToken=async r=>{let{position_id:i,amount:o,is_quote:e,swap_clmm_pool:a="",slippage:d}=r,c=new ne,{is_long:g,market_id:m,position_cap_id:M,deposits:S,borrows:A}=await this.getPositionInfo(i),{base_token:T,quote_token:D}=await this._sdk.MarketModules.getMarketInfo(m),R=g&&e||!g&&!e,N=await this.createMarginTradingContext({market_id:m,position_cap_id:M,action:"top_up_collateral",coin_type:e?D:T,amount:o.toString()},c),L=this.extractOtherTokenTypes(S,A,T,D),{base_reserve_array_index:O,quote_reserve_array_index:F,reserve:q}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(T,D,void 0,L);await this._sdk.SuiLendModule.refreshReservePrices(c,q);let W;if(R){let j=await this._sdk.SwapModules.findRouters(e?D:T,e?T:D,o,!0,[a]),Z=Q.buildCoinWithBalance(BigInt(o.toString()),e?D:T,c);W=await this._sdk.SwapModules.routerSwap({router:j?.route_obj,input_coin:Z,slippage:d,txb:c})}else W=Q.buildCoinWithBalance(BigInt(o.toString()),e?D:T,c);return await this.depositToLeveragePosition({is_long:g,market_id:m,position_cap_id:M,deposit_reserve_array_index:g?O:F,input_coin:W,margin_trading_context:N,base_token:T,quote_token:D},c),await this.marginTradingContextConfirm(N,c),c};this.positionWithdrawCToken=async r=>{let{position_id:i,amount:o,is_quote:e,swap_clmm_pool:a="",slippage:d}=r,c=new ne,{is_long:g,market_id:m,position_cap_id:M,deposits:S,borrows:A}=await this.getPositionInfo(i),{base_token:T,quote_token:D}=await this._sdk.MarketModules.getMarketInfo(m),R=g&&e||!g&&!e,N=await this.createMarginTradingContext({market_id:m,position_cap_id:M,action:"withdraw_collateral",coin_type:e?D:T,amount:o.toString()},c),L=this.extractOtherTokenTypes(S,A,T,D),{base_reserve_array_index:O,quote_reserve_array_index:F,reserve:q}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(T,D,void 0,L);await this._sdk.SuiLendModule.refreshReservePrices(c,q);let W=await this._sdk.SuiLendModule.getLatestPriceFeeds(q,!0),j=W[Ce(D)]?.price,Z=W[Ce(T)]?.price,w=g?I(j).div(I(Z)).toString():I(Z).div(I(j)).toString(),b=q[0].mintDecimals,k=q[1].mintDecimals,x=R?I(o).mul(w).div(10**(e?k:b)).mul(10**(g?b:k)).toDP(0,dt.ROUND_DOWN).toString():o.toString(),C=this.withdrawAsset({market_id:m,position_cap_id:M,withdraw_amount:x,withdraw_reserve_array_index:g?O:F,withdraw_coin_type:g?T:D,margin_trading_context:N},c);if(R){let p=await this._sdk.SwapModules.findRouters(g?T:D,e?D:T,x,!0,[a]),t=await this._sdk.SwapModules.routerSwap({router:p?.route_obj,input_coin:C,slippage:d,txb:c});t&&c.transferObjects([t],this._sdk.getSenderAddress())}else c.transferObjects([C],this._sdk.getSenderAddress());return await this.marginTradingContextConfirm(N,c),c};this.positionClaim=async r=>{let i=new ne,{position_cap_id:o,obligation_owner_cap:e,market_id:a,claimable_rewards:d}=await this.getPositionInfo(r);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1650 ~ PositionModules ~ claimable_rewards:",d);let{suilend:c,margin_trading:g}=this._sdk.sdkOptions,m=jt(c).lending_market_id,M=jt(c).lending_market_type,{global_config_id:S,versioned_id:A}=jt(this._sdk.sdkOptions.margin_trading);for(let T=0;T<d.length;T++){let D=await this.createMarginTradingContext({market_id:a,position_cap_id:o,action:"claim_reward",coin_type:d[T].coinType,amount:I(d[T].earnedRewards).toFixed(0)},i),R=i.moveCall({target:`${g.published_at}::router::claim_rewards`,arguments:[D,i.object(S),i.object(m),i.object(a),i.object(o),i.pure.u64(d[T].reserveArrayIndex.toString()),i.pure.u64(d[T].rewardIndex.toString()),i.pure.bool(d[T].reserveType==="deposit"),i.object(be),i.object(A)],typeArguments:[M,d[T].coinType]});i.transferObjects([R],this._sdk.getSenderAddress()),await this.marginTradingContextConfirm(D,i)}return i};this.calculatePositionDeposit=async r=>{let{is_quote:i,is_long:o,amount:e,swap_clmm_pool:a="",leverage:d,by_amount_in:c=!0,base_token:g,quote_token:m,is_submit:M=!1,is_open:S=!0,position_id:A}=r,T=[],D=[],R=[];if(!S&&A){let{deposits:rt,borrows:G}=await this.getPositionInfo(A);D=rt,R=G,T=this.extractOtherTokenTypes(D,R,g,m)}let{reserve:N,base_reserve_array_index:L,quote_reserve_array_index:O}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(g,m,void 0,T),F=N[0].mintDecimals,q=N[1].mintDecimals,W=e.toString(),j=o&&i||!o&&!i,Z=await this._sdk.SuiLendModule.getLatestPriceFeedsByCoinTypes([g,m]),w=Z&&Z[m]?.price,b=Z&&Z[g]?.price;if(!w||!b)throw Gt("PriceNotFound","Price not found");if(j&&M){let rt=o?I(w).div(I(b)).toString():I(b).div(I(w)).toString();W=I(e).mul(rt).div(10**(i?q:F)).mul(10**(o?F:q)).toString(),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:492 ~ PositionModules ~ initDepositAmount:",{initDepositAmount:W,rate:rt})}else if(j&&!M){let rt=o?m:g,G=o?g:m;W=(await this._sdk.SwapModules.findRouters(rt,G,W,!0,[a]))?.amount_out.toString()}else W=e;let{base_price:k,quote_price:x,flash_amount:C,flash_loan_fee:p,flash_loan_coin:t,is_flash_a:s,clmm_pool:u,clmm_fee_tier:f,clmm_pool_coin_type_a:h,clmm_pool_coin_type_b:v}=await this._sdk.SwapModules.calculateFlashLoan({is_long:o,leverage:d,base_token:g,quote_token:m,deposit_amount:W,reserve:N,base_token_decimal:F,quote_token_decimal:q}),P=await this._sdk.SwapModules.findRouters(o?m:g,o?g:m,C.toString(),!0,[a]),_=I(W).add(I(P?.amount_out.toString())).toDP(0,dt.ROUND_DOWN).toString(),l=I(_).mul(o?k:x).toString(),y=I(C).add(p).toDP(0,dt.ROUND_UP).toString(),U=I(y).mul(o?x:k).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1575 ~ PositionModules ~ depositAmount:",{depositAmount:_,borrowAmount:y});let B=i?I(e).div(10**(i?q:F)).mul(10**F).mul(d).div(k).toDP(0,dt.ROUND_DOWN).toString():I(e).mul(d).toDP(0,dt.ROUND_DOWN).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1583 ~ PositionModules ~ leverageDepositAmount:",B);let $="0",K="0",V="0",J="0";return!S&&A&&(R&&R.length>0&&($=I(R[0].borrowedAmount.toString()).mul(o?10**q:10**F).add(I(y)).toString(),K=I($).mul(o?w:b).toString()),V=I(D[0].depositedAmount.toString()).mul(o?10**F:10**q).add(I(_)).toString(),J=I(V).mul(o?b:w).toString()),{routers:P,leverage_deposit_amount:B,quote_price:x,base_price:k,clmm_fee_tier:f,flash_loan_fee:p,flash_loan_coin:t,deposit_amount:_,borrow_amount:y,deposit_amount_usd:l,borrow_amount_usd:U,after_borrow_amount:$,after_borrow_amount_usd:K,after_deposit_amount:V,after_deposit_amount_usd:J,flash_amount:C,is_flash_a:s,init_deposit_amount:W,clmm_pool_coin_type_a:h,clmm_pool_coin_type_b:v,clmm_pool:u,base_reserve_array_index:L,quote_reserve_array_index:O,reserve:N,has_swap:j}};this.calculatePositionWithdraw=async r=>{let{position_id:i,is_quote:o,swap_clmm_pool:e="",amount:a,leverage:d,slippage:c,withdraw_max:g}=r,{deposits:m,borrows:M,origin_obligation:S,position_cap_id:A,market_id:T,is_long:D}=await this.getPositionInfo(i),{base_token:R,quote_token:N}=await this._sdk.MarketModules.getMarketInfo(T),L=i?this.extractOtherTokenTypes(m,M,R,N):[],{reserve:O,base_reserve_map_info:F,quote_reserve_map_info:q}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(R,N,void 0,L),W=O[0].mintDecimals,j=O[1].mintDecimals,Z=D?F.cTokenExchangeRate:q.cTokenExchangeRate,w=await this._sdk.SuiLendModule.getLatestPriceFeeds(O,!0),b=w[Ce(N)]?.price,k=w[Ce(R)]?.price,x=I(0),C;D?(x=I(o?I(a).mul(b).toString():I(a).mul(k).toString()).div(o?10**j:10**W),C=o?I(a).div(k).div(10**j).mul(10**W).toString():I(a)):(x=I(o?I(a).mul(b).toString():I(a).mul(k).toString()).div(o?10**j:10**W),C=o?I(a):I(a).mul(k).div(10**W).mul(10**j).toString());let p=I(m[0].depositedAmountUsd.toString()).sub(I(M&&M.length>0?M[0].borrowedAmountUsd.toString():"0")).toString(),t=x.div(I(p)),s=g||I(t).gte(1),u,f=new dt(0);S&&S.borrows&&S.borrows.length>0&&(u=Xn(S.borrows[0],D?O[1]:O[0]),f=I(u.borrowedAmount.value.toString()).div(10**18).toDP(0,dt.ROUND_UP));let h=f.mul(s?1:t).toDP(0,dt.ROUND_UP).toString(),v=h.toString(),P,_,l,y,U,B;if(I(h).gt(0)){let{clmm_pool_coin_type_a:oe,clmm_pool_coin_type_b:at,clmm_fee_tier:nt,clmm_pool:Oe}=await this._sdk.SwapModules.getFlashLoanPool(D?N:R,v);U=oe||"",B=at||"",l=nt||0,y=Oe||"",P=I(v).mul(nt).toString(),_=I(v).mul(I(1).add(nt)).toDP(0,dt.ROUND_UP).toString()}let $=D&&o||!D&&!o,K,V;if($){let oe=I(m[0].depositedAmount.toString()).mul(10**(D?W:j)).mul(s?1:t).toDP(0,dt.ROUND_DOWN).toString();K=await this._sdk.SwapModules.findRouters(m[0].reserve.coinType,D?N:R,oe,!0,[e])}else V=I(h).mul(D?b:k).div(10**(D?j:W)).mul(10**(D?W:j)).div(D?k:b).mul(I(1).add(.0025)).toDP(0,dt.ROUND_DOWN).toString(),K=await this._sdk.SwapModules.findRouters(m[0].reserve.coinType,D?N:R,V.toString(),!0,[e]),s||(h=I(K?.amount_out.toString()).mul(I(1).sub(c)).toDP(0,dt.ROUND_DOWN).toString());C=I(C).mul(d).toDP(0,dt.ROUND_DOWN).toString(),x=I(x).mul(d);let J=f.mul(I(1).sub(t)).toString(),rt=I(J).mul(D?b:k).toString(),G=I(m[0].depositedAmount.toString()).mul(D?10**W:10**j).sub(I(C)).toString(),it=I(G).mul(D?k:b).toString(),ft=I(K?.amount_in.toString()).toString(),et=I(K?.amount_out.toString()).toString(),X=I(C).div(Z.toString()).toDP(0,dt.ROUND_DOWN).toString(),de=I(rt).div(I(10**(D?j:W))),lt=I(it).div(I(10**(D?W:j))),st=!0;if(M.length>0){let oe=I(M[0].borrowedAmountUsd.toString()),at=oe.div(lt).toString(),nt=I(m[0].reserve.config.openLtvPct).mul(I(.95)).div(100).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1459 ~ PositionModules ~ afterLTV:",{afterLTV:at,ltv:nt,afterDepositAmount:G,afterDepositAmountUSD:lt,afterBorrowAmount:J,afterBorrowAmountUSD:de,withdrawAmount:C,currentBorrowAmountUSD:oe}),I(at).lte(nt)&&(st=!1)}return{amount_in:ft,amount_out:et,from:m[0].reserve.coinType,to:D?R:N,after_borrow_amount:J,after_borrow_amount_usd:rt,after_deposit_amount:G,after_deposit_amount_usd:it,flash_loan_fee:P,clmm_fee_tier:l,withdraw_amount:C,withdraw_ctoken_amount:X,repay_amount:h,ratio:t,is_close:s,is_long:D,deposits:m,borrows:M,reserve:O,base_token:R,quote_token:N,clmm_pool:y,clmm_pool_coin_type_a:U,clmm_pool_coin_type_b:B,position_cap_id:A,market_id:T,swap_convert_all:$,flash_loan_amount:v,routers:K,repay_flash_loan_amount:_,partial_amount_in:V,has_flash_loan:st}};this.calculatePositionLeverage=async r=>{let{position_id:i,current_leverage:o,target_leverage:e,swap_clmm_pool:a=""}=r,d=I(e).sub(I(o)),c=d.gt(0),{borrows:g,deposits:m,is_long:M,position_cap_id:S,market_id:A}=await this.getPositionInfo(i),{base_token:T,quote_token:D}=await this._sdk.MarketModules.getMarketInfo(A),R=this.extractOtherTokenTypes(m,g,T,D),{reserve:N}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(T,D,void 0,R),L=N[0].mintDecimals,O=N[1].mintDecimals,F=await this._sdk.SuiLendModule.getLatestPriceFeeds(N,!0),q=F[Ce(D)]?.price,W=F[Ce(T)]?.price,j=g.length>0,Z=m[0].depositedAmountUsd.toString(),w=m[0].depositedAmount.toString(),b=j?I(g[0].borrowedAmount.toString()).mul(10**(M?O:L)):I(0),k=j?g[0].borrowedAmountUsd.toString():I(0),x=j?I(g[0].reserve.config.borrowWeightBps.toString()).div(1e4).toString():"1",C=I(m[0].reserve.config.openLtvPct).mul(I(.95)).div(100).div(x).toString(),p=I(Z).sub(I(k)).mul(C).toString();if(c){let t=I(Z).div(o).mul(d),s=t.add(k).div(Z).toString(),u=t.div(M?q:W).mul(10**(M?O:L)).toDP(0,dt.ROUND_UP),f=I(s).gt(C),h=u,v=M?D:T,P=M?T:D,_=await this._sdk.SwapModules.findRouters(v,P,h.toString(),!0,[a]),l=I(_?.amount_out.toString()).toString(),y=I(l).mul(M?W:q).toString(),U,B,$,K,V,J="0",rt="0";if(f){let{clmm_pool_coin_type_a:X,clmm_pool_coin_type_b:de,clmm_pool:lt,clmm_fee_tier:st}=await this._sdk.SwapModules.getFlashLoanPool(v,h.toString());$=st,K=X,V=de,U=h.mul($).toString(),B=M?K==D:V==T,J=I(h).add(U).toDP(0,dt.ROUND_UP).toString(),rt=I(J).mul(M?q:W).toString()}else J=u.toString(),rt=t.toString();let G=I(w).add(I(l).div(10**(M?L:O))).toString(),it=I(G).mul(M?W:q).toString(),ft=I(b).add(I(J)).div(10**(M?O:L)).toString(),et=I(ft).mul(M?q:W).toString();return{amount_in:_?.amount_in.toString(),amount_out:_?.amount_out.toString(),flash_loan_fee:U,deposit_amount:l,borrow_amount:J,deposit_amount_usd:y,borrow_amount_usd:rt,flash_loan_amount:h,base_token:T,quote_token:D,reserve:N,deposits:m,borrows:g,clmm_fee_tier:$,is_flash_loan:f,is_loan_a:B,clmm_pool_coin_type_a:K,clmm_pool_coin_type_b:V,after_deposit_amount:G,after_borrow_amount:ft,after_deposit_amount_usd:it,after_borrow_amount_usd:et,position_cap_id:S,market_id:A,is_long:M,routers:_}}else{let s=I(Z).div(o).mul(d.abs()).div(M?q:W).mul(10**(M?O:L)).toDP(0,dt.ROUND_UP),u=await this._sdk.SwapModules.findRouters(m[0].reserve.coinType,g[0].reserve.coinType,s.toString(),!1,[a]),f=u?.amount_in.toString(),h=I(f).mul(M?W:q).div(10**(M?L:O)).toString(),v=I(Z).mul(C).toString(),P=I(k).div(I(Z).sub(I(h))).toString(),_=I(P).gt(C),l=s.toString(),y=I(l).mul(M?q:W).toString(),U=f,B=I(U).mul(M?W:q).toString(),$,K="",V="";if(_){let{clmm_pool_coin_type_a:ft,clmm_pool_coin_type_b:et,clmm_pool:X,clmm_fee_tier:de}=await this._sdk.SwapModules.getFlashLoanPool(g[0].reserve.coinType,l.toString());$=de,K=ft,V=et}let J=I(w).sub(I(U).div(10**(M?L:O))).toString(),rt=I(J).mul(M?W:q).toString(),G=I(b).sub(I(l)).div(10**(M?O:L)).toString(),it=I(G).mul(M?q:W).toString();return{amount_in:u?.amount_in.toString(),amount_out:u?.amount_out.toString(),deposit_amount:U,borrow_amount:l,deposit_amount_usd:B,borrow_amount_usd:y,base_token:T,quote_token:D,reserve:N,deposits:m,borrows:g,clmm_fee_tier:$,withdraw_ctoken_amount:f,is_flash_loan:_,clmm_pool_coin_type_a:K,clmm_pool_coin_type_b:V,after_deposit_amount:J,after_borrow_amount:G,after_deposit_amount_usd:rt,after_borrow_amount_usd:it,position_cap_id:S,market_id:A,is_long:M,routers:u}}};this.calculatePositionRepay=async r=>{let{position_id:i,amount:o,is_quote:e}=r,{borrows:a,deposits:d,is_long:c,market_id:g,position_cap_id:m}=await this._sdk.PositionModules.getPositionInfo(i),M=a[0].reserve.coinType,S=c?d[0].reserve.coinType:a[0].reserve.coinType,A=c?a[0].reserve.coinType:d[0].reserve.coinType,T,D=c?!e:e;return D&&(T=await this._sdk.SwapModules.findRouters(e?A:S,M,o,!0,[])),{routers:T,repay_coin_type:M,base_token:S,quote_token:A,is_long:c,borrows:a,deposits:d,market_id:g,position_cap_id:m,has_swap:D}};this._sdk=r}getObligationRewardsInfo(r,i){let o=[],e=new ut(10).pow(18),a={},d=Date.now();for(let g of i){let m=g.coinType,M=g.arrayIndex.toString(),S=g.depositsPoolRewardManager.poolRewards||[];for(let T of S){if(!T)continue;let D=T.id,R=T.coinType,N=parseInt(T.startTimeMs),L=parseInt(T.endTimeMs),O=d>=N&&d<L,F=T.mintDecimals,q=ut(T.cumulativeRewardsPerShare).times(10**F);a[D]={coinType:R,mintDecimals:F,isActive:O,reserveType:"deposit",reserveArrayIndex:M,reserveCoinType:m,globalCumulativePerShare:q,rewardIndex:T.rewardIndex,reserve:g}}let A=g.borrowsPoolRewardManager.poolRewards||[];for(let T of A){if(!T)continue;let D=T.id,R=T.coinType,N=parseInt(T.startTimeMs),L=parseInt(T.endTimeMs),O=d>=N&&d<L,F=T.mintDecimals,q=ut(T.cumulativeRewardsPerShare).times(10**F);a[D]={coinType:R,mintDecimals:F,isActive:O,reserveType:"borrow",reserveCoinType:m,reserveArrayIndex:M,rewardIndex:T.rewardIndex,globalCumulativePerShare:q,reserve:g}}}let c=r.userRewardManagers;for(let g of c)for(let m=0;m<g.rewards.length;m++){let M=g.rewards[m];if(!M)continue;let S=a[M.poolRewardId];if(!S)continue;let A=S.globalCumulativePerShare,T=new ut(M.cumulativeRewardsPerShare.value.toString()).div(e),D=new ut(g.share).times(A.minus(T)),R=new ut(M.earnedRewards.value).div(e),N=new ut(R).plus(D),L=S.reserve.price,O=N.div(10**S.mintDecimals),F=L?O.times(L).toFixed(12):0;I(F).gt(0)&&o.push({poolRewardId:M.poolRewardId,coinType:S.coinType,earnedRewards:N.toString(),earnedRewardsUsd:F,earnedRewardsFormatted:O.toFixed(12),isActive:S.isActive,reserveType:S.reserveType,reserveCoinType:S.reserveCoinType,reserveArrayIndex:S.reserveArrayIndex,rewardIndex:S.rewardIndex,rewardInfo:S})}return o}createLeveragePosition(r){let{lending_market_id:i,lending_market_type:o}=jt(this._sdk.sdkOptions.suilend),{global_config_id:e,versioned_id:a}=jt(this._sdk.sdkOptions.margin_trading),d=this._sdk.sdkOptions.margin_trading,{leverage:c,market_id:g,base_token:m,quote_token:M,is_long:S,init_deposit_amount:A,tx:T,init_coin_type:D}=r,[R,N]=T.moveCall({target:`${d.published_at}::router::open_position`,arguments:[T.object(e),T.object(g),T.object(i),T.pure.u64(A),T.pure.u64(I(c).mul(1e4).toString()),T.object(be),T.object(a)],typeArguments:[o,S?m:M,D]});return{position_cap:R,margin_trading_context:N}}async depositToLeveragePosition(r,i){let{margin_trading:o}=this._sdk.sdkOptions,{lending_market_type:e,lending_market_id:a}=jt(this._sdk.sdkOptions.suilend),{is_long:d,market_id:c,position_cap_id:g,position_cap:m,deposit_reserve_array_index:M,input_coin:S,margin_trading_context:A,base_token:T,quote_token:D}=r,{global_config_id:R,versioned_id:N}=jt(this._sdk.sdkOptions.margin_trading);return i.moveCall({target:`${o.published_at}::router::deposit`,typeArguments:[e,d?T:D],arguments:[A,i.object(R),i.object(a),i.object(c),g?i.object(g):m,S,i.pure.u64(M),i.object(be),i.object(N)]}),i}extractOtherTokenTypes(r,i,o,e){let a=[];return r.forEach(d=>{d.reserve.coinType!==o&&d.reserve.coinType!==e&&a.push(d.reserve.coinType)}),i.forEach(d=>{d.reserve.coinType!==o&&d.reserve.coinType!==e&&a.push(d.reserve.coinType)}),a}};import{SuilendClient as so}from"@suilend/sdk/client";import{initializeSuilend as ao,initializeSuilendRewards as lo,initializeObligations as uo,formatRewards as co,Side as ve,getFilteredRewards as fo,getStakingYieldAprPercent as ho,getDedupedPerDayRewards as po,getDedupedAprRewards as mo,getTotalAprPercent as Rr,getNetAprPercent as go}from"@suilend/sdk";import{linearlyInterpolate as to,Side as ye}from"@suilend/sdk";import{NORMALIZED_flSUI_COINTYPE as eo,NORMALIZED_jugSUI_COINTYPE as io,NORMALIZED_LBTC_COINTYPE as ro,formatLtvPercent as no}from"@suilend/sui-fe";import Jn from"crypto";var Je=new Uint8Array(256),Xe=Je.length;function Ii(){return Xe>Je.length-16&&(Jn.randomFillSync(Je),Xe=0),Je.slice(Xe,Xe+=16)}var Kt=[];for(let n=0;n<256;++n)Kt.push((n+256).toString(16).slice(1));function xr(n,r=0){return Kt[n[r+0]]+Kt[n[r+1]]+Kt[n[r+2]]+Kt[n[r+3]]+"-"+Kt[n[r+4]]+Kt[n[r+5]]+"-"+Kt[n[r+6]]+Kt[n[r+7]]+"-"+Kt[n[r+8]]+Kt[n[r+9]]+"-"+Kt[n[r+10]]+Kt[n[r+11]]+Kt[n[r+12]]+Kt[n[r+13]]+Kt[n[r+14]]+Kt[n[r+15]]}import Yn from"crypto";var Ei={randomUUID:Yn.randomUUID};function Qn(n,r,i){if(Ei.randomUUID&&!r&&!n)return Ei.randomUUID();n=n||{};let o=n.random||(n.rng||Ii)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,r){i=i||0;for(let e=0;e<16;++e)r[i+e]=o[e];return r}return xr(o)}var Ye=Qn;import{getPackagerConfigs as oo}from"@cetusprotocol/common-sdk";var Bi=10n;function Tr(n){return n.depositedAmount.eq(0)?new ut(0):n.borrowedAmount.div(n.depositedAmount).times(100)}function qi(n){let r=Tr(n);if(!r.gt(100))return to(n.config.interestRate,"utilPercent","aprPercent",r)}function Dr(n){let r=Tr(n),i=qi(n);if(!(i===void 0||r.gt(100)))return new ut(r.div(100)).times(i.div(100)).times(1-n.config.spreadFeeBps/1e4).times(100)}function ys(n,r,i,o){let{api_url:e}=oo(o.sdkOptions.suilend);n===ye.DEPOSIT&&([eo,io].includes(r.coinType)&&i.push({stats:{id:Ye(),isActive:!0,rewardIndex:-1,reserve:r,rewardCoinType:"LIQ_AG",mintDecimals:0,symbol:"LiqAg Points",iconUrl:`${e}/partners/LiqAg.png`,perDay:new ut(.036),side:ye.DEPOSIT},obligationClaims:{}}),r.coinType===ro&&i.push({stats:{id:Ye(),isActive:!0,rewardIndex:-1,reserve:r,rewardCoinType:"LOMBARD",mintDecimals:0,symbol:"3x Lombard Lux",iconUrl:`${e}/partners/Lombard Lux.png`,perDay:new ut(0),side:ye.DEPOSIT},obligationClaims:{}}))}function ks(n,r,i){return{...n,depositedAmount:r===ye.DEPOSIT?ut.max(n.depositedAmount.plus(i),0):n.depositedAmount,borrowedAmount:r===ye.BORROW?ut.max(n.borrowedAmount.plus(i),0):n.borrowedAmount}}function Ss(n,r,i){let o=n===ye.DEPOSIT?r.depositedAmount:r.borrowedAmount,e=n===ye.DEPOSIT?i.depositedAmount:i.borrowedAmount,a=e.eq(0)?new ut(-1):o.div(e);return{multiplier:a,isValid:!a.eq(-1)}}function Ps(n,r,i,o){let e=n.map(d=>({...d,stats:{...d.stats,perDay:o?d.stats.perDay.times(i):void 0}})),a=r.map(d=>({...d,stats:{...d.stats,aprPercent:o?d.stats.aprPercent.times(i):void 0}}));return{newPerDayRewards:e,newAprRewards:a}}function Or(n,r){if(!Bi)throw new Error("oraclePriceMultiplierDecimal is required");if(n===0n)throw new Error("Invalid oracle price");if(r<0n){let i=10n**(Bi- -r);return n*i}return n/10n**(r+Bi)}function As(n){return no(new ut(n))}import{d as Fi,getPackagerConfigs as xe,removeHexPrefix as Qe}from"@cetusprotocol/common-sdk";import{toHEX as Lr}from"@mysten/sui/utils";var ti=class{constructor(r){this.getCoinAprByAmount=async(r,i,o)=>{let e=new ut(i.toString()),{allLendingMarketData:a,lstAprPercentMap:d}=await this.getLendingMarketData(!1);if(await this.getInitializeObligations({allLendingMarketData:a,lstAprPercentMap:d},!0),!a||!d)throw new Error("lendingMarketCache is not initialized");let c=Object.values(a??{})[0],g=c.lendingMarket.reserves.find(w=>w.coinType===r);if(!g)throw new Error("reserve not found");let M=(this.obligationsCache?.[c.lendingMarket.id]).rewardMap[g.token.coinType]?.[o]??[],S=fo(M),A=ho(o,g.coinType,d),T=o===ve.DEPOSIT?g.depositAprPercent:g.borrowAprPercent,D=T,R=new ut(1),N=!0;if(o!==void 0&&e!==void 0&&e.gt(0)){let w={...g,depositedAmount:o===ve.DEPOSIT?ut.max(g.depositedAmount.plus(o===ve.DEPOSIT?e:e.negated()),0):g.depositedAmount,borrowedAmount:o===ve.BORROW?ut.max(g.borrowedAmount.plus(o===ve.BORROW?e:e.negated()),0):g.borrowedAmount};D=o===ve.DEPOSIT?Dr(w):qi(w);let b=o===ve.DEPOSIT?g.depositedAmount:g.borrowedAmount,k=o===ve.DEPOSIT?w.depositedAmount:w.borrowedAmount;R=k.eq(0)?new ut(-1):b.div(k),N=!R.eq(-1)}let F=po(S).map(w=>({...w,stats:{...w.stats,perDay:N?w.stats.perDay.times(R):void 0}})),W=mo(S).map(w=>({...w,stats:{...w.stats,aprPercent:N?w.stats.aprPercent.times(R):void 0}})),j=Rr(o,T,S,A),Z=D===void 0||W.some(w=>w.stats.aprPercent===void 0)?void 0:Rr(o,D,W,A);return console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:315 ~ SuiLendModule ~ newTotalAprPercent:",Z?.toString()),{new_total_apr_percent:Z?.toString(),total_apr_percent:j.toString()}};this.refreshReservePrice=async(r,i,o)=>{let{lending_market_id:e,lending_market_type:a}=xe(this.sdk.sdkOptions?.suilend),d=`${e}_${a}`;if(!this.suilendClientCache)throw new Error("suilendClientCache is not initialized");let c=await this.suilendClientCache[d].pythClient.getPriceFeedObjectId(i);this.suilendClientCache[d].refreshReservePrices(r,c,o)};this.getLatestPriceFeeds=async(r,i=!1)=>{let{lending_market_id:o,lending_market_type:e}=xe(this.sdk.sdkOptions?.suilend),a={},d=[];if(r.forEach(M=>{let S=this.sdk.getCache(`getLatestPrice_${M.coinType.name}`,i);S&&this.priceCheck(S,60)?a[M.coinType.name]=S:d.push(M.coinType.name)}),d.length==0)return a;let c=`${o}_${e}`;if(!this.suilendClientCache)throw new Error("suilendClient is not initialized");let g=Array.from(new Set(r.map(M=>M?.priceIdentifier?.bytes?Lr(new Uint8Array(M.priceIdentifier.bytes)):Qe(M.priceIdentifier.toString()))));return(await this.suilendClientCache[c].pythConnection.getLatestPriceFeeds(g))?.forEach((M,S)=>{let A=M.getPriceUnchecked(),T=r[S];if(A){let{price:D,expo:R}=A,N=Fi(D).mul(Fi(10).pow(Fi(R))).toString(),L={coin_type:T.coinType.name||T.coinType,price:N,oracle_price:0n,last_update_time:A.publishTime};L.oracle_price=Or(BigInt(D),BigInt(R)),a[T.coinType.name||T.coinType]=L,this.sdk.updateCache(`getLatestPrice_${L.coin_type}`,L)}}),a};this.getLatestPriceFeedsByCoinTypes=async(r,i=!1)=>{try{let{lending_market_id:o}=xe(this.sdk.sdkOptions?.suilend),{allLendingMarketData:e}=await this.getLendingMarketData(!1),a=[];return r.forEach(c=>{let g=e[o].reserveMap[c];a.push(g)}),await this.getLatestPriceFeeds(a,i)}catch(o){Gt("FetchError",o);return}};this.getSuiLendReserveInfo=async(r,i,o,e)=>{let{lending_market_id:a}=xe(this.sdk.sdkOptions?.suilend);o||(o=(await this.getLendingMarketData(!1)).allLendingMarketData);let d=o[a].reserveMap[r],c=o[a].reserveMap[i],g=o[a].refreshedRawReserves.filter(T=>T.coinType.name==Qe(r)),m=o[a].refreshedRawReserves.filter(T=>T.coinType.name==Qe(i)),M=o[a].reserveMap[r],S=o[a].reserveMap[i],A=[];return e&&e.forEach(T=>{let D=o[a].refreshedRawReserves.filter(R=>R.coinType.name==Qe(T));A.push(...D)}),{base_reserve_array_index:d.arrayIndex.toString(),quote_reserve_array_index:c.arrayIndex.toString(),reserve:[g[0],m[0],...A],base_reserve_map_info:M,quote_reserve_map_info:S}};this.refreshReservePrices=async(r,i)=>{for(let o=0;o<i.length;o++){let e=Lr(new Uint8Array(i[o].priceIdentifier.bytes));await this.refreshReservePrice(r,e,BigInt(i[o].arrayIndex))}};this.refreshReservePricesV2=async(r,i)=>{for(let o=0;o<i.length;o++){let e=i[o].priceIdentifier.toString();await this.refreshReservePrice(r,e,BigInt(i[o].arrayIndex))}};this.sdk=r}async getSuilendClient(r,i){let o=`${r}_${i}`;return this.suilendClientCache||(this.suilendClientCache={}),this.suilendClientCache[o]||(this.suilendClientCache[o]=await so.initialize(r,i,this.sdk.FullClient,!0)),this.suilendClientCache[o]}async getLendingMarketData(r=!0){let i="lendingMarketData",o=this.sdk.getCache(i,r);if(o)return o;let e=xe(this.sdk.sdkOptions?.suilend)?.lending_market||[];if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:67 ~ SuiLendModule ~ getLendingMarketData ~ lendingMarkets:",e),!e.length)return console.warn("\u26A0\uFE0F No lending markets configured."),{};try{let[a,d]=await Promise.all([(async()=>Object.fromEntries(await Promise.all(e.map(async g=>{let m=await this.getSuilendClient(g.id,g.type),{lendingMarket:M,coinMetadataMap:S,refreshedRawReserves:A,reserveMap:T,reserveCoinTypes:D,reserveCoinMetadataMap:R,rewardCoinTypes:N,activeRewardCoinTypes:L,rewardCoinMetadataMap:O}=await ao(this.sdk.FullClient,m),{rewardPriceMap:F}=await lo(T,L);return[g.id,{suilendClient:m,lendingMarket:M,coinMetadataMap:S,refreshedRawReserves:A,reserveMap:T,reserveCoinTypes:D,reserveCoinMetadataMap:R,rewardPriceMap:F,rewardCoinTypes:N,activeRewardCoinTypes:L,rewardCoinMetadataMap:O}]}))))(),(async()=>{try{let c=await fetch(`${this.sdk.sdkOptions?.suilend?.config?.api_url}/springsui/apy`),g=await c.json();if(c?.statusCode===500)throw new Error("Failed to fetch SpringSui LST APRs");return Object.fromEntries(Object.entries(g).map(([m,M])=>[m,new ut(M)]))}catch(c){return console.error(c),{}}})()]);return this.sdk.updateCache(i,{allLendingMarketData:a,lstAprPercentMap:d},30*1e3),{allLendingMarketData:a,lstAprPercentMap:d}}catch(a){throw console.log("\u{1F680} getLendingMarketData error:",a),a}}async getInitializeObligations(r,i=!1){if(!i&&this.obligationsCache)return this.obligationsCache;r||(r=await this.getLendingMarketData(!1));let o={};for(let e of Object.values(r.allLendingMarketData)){let{obligationOwnerCaps:a,obligations:d}=await uo(this.sdk.FullClient,e.suilendClient,e.refreshedRawReserves,e.reserveMap,this.sdk.senderAddress);d.length>0&&console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:181 ~ SuiLendModule ~ getInitializeObligations ~ obligations:",d[0].original.allowedBorrowValueUsd.value.toString());let c=co(e.reserveMap,e.rewardCoinMetadataMap,e.rewardPriceMap,d);o[e.lendingMarket.id]={obligationOwnerCaps:a,obligations:d,rewardMap:c}}return this.obligationsCache=o,this.obligationsCache}async getSuiLendUserData(r,i=!1){let{allLendingMarketData:o,lstAprPercentMap:e}=await this.getLendingMarketData(!1),a=await this.getInitializeObligations({allLendingMarketData:o,lstAprPercentMap:e},!1),{lending_market_id:d}=xe(this.sdk.sdkOptions?.suilend),c=a[d];if(!c)throw new Error(`No user data found for lending market: ${d}`);let g=c.obligations.find(M=>M.id===r);if(!g)throw new Error(`Obligation not found: ${r}`);let m=go(g,c.rewardMap,e??{});return{obligation:g,netAprPercent:m,deposits:g.deposits,borrowedAmount:g.borrowedAmount,depositedAmount:g.depositedAmount,netValueUsd:g.netValueUsd,rewardMap:c.rewardMap}}priceCheck(r,i=60){let o=Math.floor(Date.now()/1e3);if(!(Math.abs(o-r.last_update_time)>i))return r}};var $i=Gr(Ir());import{Transaction as _o}from"@mysten/sui/transactions";import{addHexPrefix as wo,CoinAssist as ji,d as ee,getPackagerConfigs as Er,removeHexPrefix as Br}from"@cetusprotocol/common-sdk";var ei=class{constructor(r){this.routerSwap=async r=>{let{slippage:i,txb:o,input_coin:e,router:a}=r,d=o||new _o;if(a)return await this._sdk.AggregatorClient.routerSwap({router:a,inputCoin:e,slippage:i,txb:d})};this.flashLoan=r=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:183 ~ SwapModules ~ params:",r);let{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:o}=Er(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{amount:e,clmm_pool:a,clmm_pool_coin_type_a:d,clmm_pool_coin_type_b:c,flash_loan_coin:g,tx:m}=r,M=wo(d)===g;console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:188 ~ SwapModules ~ isLoanA:",M);let[S,A,T]=m.moveCall({target:`${i.published_at}::pool::flash_loan`,arguments:[m.object(o),m.object(a),m.pure.bool(M),m.pure.u64(e.toString())],typeArguments:[d,c]});return{balance_a:S,balance_b:A,receipt:T,is_loan_a:M,loan_coin_type:M?d:c}};this.getFlashLoanPool=async(r,i)=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:201 ~ SwapModules ~ flash_amount:",i,r);try{let o=await fetch(`https://api-sui.cetus.zone/v3/sui/margin_trading/pools?coin_type=${r}&min_amount=${i}`),{data:e}=await o.json();return console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:206 ~ SwapModules ~ data:",e),e&&e.length>0?{clmm_pool_coin_type_a:e[0].coin_type_a,clmm_pool_coin_type_b:e[0].coin_type_b,clmm_pool:e[0].pool_id,clmm_fee_tier:ee(e[0].fee_rate).div(1e6).toString()}:(Gt("FlashLoanPoolNotFound","FlashLoanPoolNotFound"),{clmm_pool_coin_type_a:"",clmm_pool_coin_type_b:"",clmm_pool:"",clmm_fee_tier:""})}catch(o){return Gt("FetchError",o),{clmm_pool_coin_type_a:"",clmm_pool_coin_type_b:"",clmm_pool:"",clmm_fee_tier:""}}};this.repayFlashLoan=r=>{let{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:o}=Er(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{tx:e,repay_base:a,repay_quote:d,receipt:c,clmm_pool:g,clmm_pool_coin_type_a:m,clmm_pool_coin_type_b:M}=r;return e.moveCall({target:`${i.published_at}::pool::repay_flash_loan`,arguments:[e.object(o),e.object(g),a,d,c],typeArguments:[m,M]}),e};this._sdk=r}async findRouters(r,i,o,e,a){try{let d={from:r,target:i,amount:new $i.default(ee(o).toFixed(0).toString()),byAmountIn:e,depth:3},c=await this._sdk.AggregatorClient.findRouters(d);if(c?.error?.code===10001)return{...c,is_exceed:c.insufficientLiquidity};if(c?.insufficientLiquidity)return{...c,is_exceed:c.insufficientLiquidity};if(!c?.paths||c?.paths?.length===0)throw Error("Aggregator no router");return{amount_in:c.amountIn.toString(),amount_out:c.amountOut.toString(),is_exceed:c.insufficientLiquidity,route_obj:c,by_amount_in:!0,origin_res:c}}catch{try{if(a){let c=await this._sdk.AggregatorClient.swapInPools({from:r,target:i,amount:new $i.default(ee(o).toFixed(0).toString()),byAmountIn:e,pools:a});return c?{amount_in:c.routeData.amountIn.toString(),amount_out:c.routeData.amountOut.toString(),is_exceed:c.isExceed,route_obj:c.routeData,by_amount_in:!0,origin_res:c}:null}return null}catch{return null}}}async handleSwapLogic(r){let{is_long:i,is_quote:o,amount:e,base_token:a,quote_token:d,swap_clmm_pool:c="",slippage:g,tx:m}=r,M=i&&o||!i&&!o,S,A,T=e;if(M){let D=i&&o?d:a,R=i&&o?a:d,N=await this.findRouters(D,R,e,!0,[c]);if(T=N?.amount_out.toString(),N){let L=ji.buildCoinWithBalance(BigInt(e),D,m);A=await this.routerSwap({router:N.route_obj,slippage:g,input_coin:L,txb:m}),S=A}}else S=ji.buildCoinWithBalance(BigInt(e.toString()),o?d:a,m);return{has_swap:M,input_coin:S,init_deposit_amount:T}}async handleSwap(r){let{swap_clmm_pool:i="",slippage:o,amount:e,from:a,to:d,tx:c,input_coin:g}=r,m=await this.findRouters(a,d,e,!0,[i]),M=m.amount_out.toString();return{swap_out_coin:await this.routerSwap({router:m.route_obj,slippage:o,input_coin:g||ji.buildCoinWithBalance(BigInt(e),a,c),txb:c}),amount_out:M}}async calculateFlashLoan(r){let{is_long:i,leverage:o,base_token:e,quote_token:a,deposit_amount:d,reserve:c,base_token_decimal:g,quote_token_decimal:m}=r,M=await this._sdk.SuiLendModule.getLatestPriceFeeds(c),S=M&&M[Br(a)]?.price,A=M&&M[Br(e)]?.price,T=i?ee(A).div(ee(S)).toString():ee(S).div(ee(A)).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:267 ~ SwapModules ~ calculateFlashLoan ~ deposit_amount:",d,T,g,m);let D=ee(d).mul(ee(o).sub(1)).mul(T).div(10**(i?g:m)).mul(10**(i?m:g)).toDP(0,dt.ROUND_UP).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:274 ~ SwapModules ~ calculateFlashLoan ~ flashAmount:",ee(d).mul(ee(o).sub(1)).mul(T).div(10**(i?g:m)).mul(10**(i?m:g)).toString(),D);let R=i?a:e,{clmm_pool_coin_type_a:N,clmm_fee_tier:L,clmm_pool:O,clmm_pool_coin_type_b:F}=await this.getFlashLoanPool(R,D),q=N===R,W=ee(D).mul(L).toString();return{flash_amount:D,rate:T,quote_price:S,base_price:A,flash_loan_coin:R,is_flash_a:q,flash_loan_fee:W,clmm_pool:O,clmm_pool_coin_type_a:N,clmm_pool_coin_type_b:F,clmm_fee_tier:L}}};var ii=class n extends yo{constructor(r,i){super(r),this._suilendModule=new ti(this),this._permissionModules=new Be(this),this._marketModules=new Ee(this),this._positionModules=new Ve(this),this._swapModules=new ei(this),this._aggregatorClient=new So({signer:Mo("0x0"),client:r.sui_client||new vo({url:r.full_rpc_url}),env:r.env==="testnet"?qr.Testnet:qr.Mainnet}),this._clmmSDK=i||ko.createSDK({env:r.env,full_rpc_url:r.full_rpc_url}),this._pythConnection=new bo("https://hermes.pyth.network",{timeout:30*1e3})}get SuiLendModule(){return this._suilendModule}get PermissionModules(){return this._permissionModules}get MarketModules(){return this._marketModules}get PositionModules(){return this._positionModules}get SwapModules(){return this._swapModules}get AggregatorClient(){return this._aggregatorClient}get ClmmSDK(){return this._clmmSDK}get PythConnection(){return this._pythConnection}static createSDK(r){return n.createCustomSDK({...rr,...r})}static createCustomSDK(r){return new n(r)}};var da=ii;export{ii as CetusMarginTradingSDK,ys as appendExtraRewards,qi as calculateBorrowAprPercent,Dr as calculateDepositAprPercent,Tr as calculateUtilizationPercent,da as default,As as formatLtvPercentValue,Or as getPriceWithFormattedDecimals,Ss as getRewardsAprMultiplier,ks as getUpdatedReserve,rr as margin_trading_mainnet,Si as mergePositionData,Bi as oraclePriceMultiplierDecimal,Ps as updateRewardsWithMultiplier,yi as wrapMarketInfo,Pi as wrapMarketPermissions,ki as wrapPosition};
|
|
1
|
+
var Fr=Object.create;var ir=Object.defineProperty;var Ur=Object.getOwnPropertyDescriptor;var jr=Object.getOwnPropertyNames;var $r=Object.getPrototypeOf,Wr=Object.prototype.hasOwnProperty;var Zr=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(r,i)=>(typeof require<"u"?require:r)[i]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var Kr=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var zr=(n,r,i,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of jr(r))!Wr.call(n,e)&&e!==i&&ir(n,e,{get:()=>r[e],enumerable:!(o=Ur(r,e))||o.enumerable});return n};var Gr=(n,r,i)=>(i=n!=null?Fr($r(n)):{},zr(r||!n||!n.__esModule?ir(i,"default",{value:n,enumerable:!0}):i,n));var Ir=Kr((Nr,Ui)=>{"use strict";(function(n,r){"use strict";function i(p,t){if(!p)throw new Error(t||"Assertion failed")}function o(p,t){p.super_=t;var s=function(){};s.prototype=t.prototype,p.prototype=new s,p.prototype.constructor=p}function e(p,t,s){if(e.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((t==="le"||t==="be")&&(s=t,t=10),this._init(p||0,t||10,s||"be"))}typeof n=="object"?n.exports=e:r.BN=e,e.BN=e,e.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=Zr("buffer").Buffer}catch{}e.isBN=function(t){return t instanceof e?!0:t!==null&&typeof t=="object"&&t.constructor.wordSize===e.wordSize&&Array.isArray(t.words)},e.max=function(t,s){return t.cmp(s)>0?t:s},e.min=function(t,s){return t.cmp(s)<0?t:s},e.prototype._init=function(t,s,u){if(typeof t=="number")return this._initNumber(t,s,u);if(typeof t=="object")return this._initArray(t,s,u);s==="hex"&&(s=16),i(s===(s|0)&&s>=2&&s<=36),t=t.toString().replace(/\s+/g,"");var f=0;t[0]==="-"&&(f++,this.negative=1),f<t.length&&(s===16?this._parseHex(t,f,u):(this._parseBase(t,s,f),u==="le"&&this._initArray(this.toArray(),s,u)))},e.prototype._initNumber=function(t,s,u){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[t&67108863],this.length=1):t<4503599627370496?(this.words=[t&67108863,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[t&67108863,t/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),s,u)},e.prototype._initArray=function(t,s,u){if(i(typeof t.length=="number"),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var f=0;f<this.length;f++)this.words[f]=0;var h,v,P=0;if(u==="be")for(f=t.length-1,h=0;f>=0;f-=3)v=t[f]|t[f-1]<<8|t[f-2]<<16,this.words[h]|=v<<P&67108863,this.words[h+1]=v>>>26-P&67108863,P+=24,P>=26&&(P-=26,h++);else if(u==="le")for(f=0,h=0;f<t.length;f+=3)v=t[f]|t[f+1]<<8|t[f+2]<<16,this.words[h]|=v<<P&67108863,this.words[h+1]=v>>>26-P&67108863,P+=24,P>=26&&(P-=26,h++);return this._strip()};function d(p,t){var s=p.charCodeAt(t);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;i(!1,"Invalid character in "+p)}function c(p,t,s){var u=d(p,s);return s-1>=t&&(u|=d(p,s-1)<<4),u}e.prototype._parseHex=function(t,s,u){this.length=Math.ceil((t.length-s)/6),this.words=new Array(this.length);for(var f=0;f<this.length;f++)this.words[f]=0;var h=0,v=0,P;if(u==="be")for(f=t.length-1;f>=s;f-=2)P=c(t,s,f)<<h,this.words[v]|=P&67108863,h>=18?(h-=18,v+=1,this.words[v]|=P>>>26):h+=8;else{var _=t.length-s;for(f=_%2===0?s+1:s;f<t.length;f+=2)P=c(t,s,f)<<h,this.words[v]|=P&67108863,h>=18?(h-=18,v+=1,this.words[v]|=P>>>26):h+=8}this._strip()};function g(p,t,s,u){for(var f=0,h=0,v=Math.min(p.length,s),P=t;P<v;P++){var _=p.charCodeAt(P)-48;f*=u,_>=49?h=_-49+10:_>=17?h=_-17+10:h=_,i(_>=0&&h<u,"Invalid character"),f+=h}return f}e.prototype._parseBase=function(t,s,u){this.words=[0],this.length=1;for(var f=0,h=1;h<=67108863;h*=s)f++;f--,h=h/s|0;for(var v=t.length-u,P=v%f,_=Math.min(v,v-P)+u,l=0,y=u;y<_;y+=f)l=g(t,y,y+f,s),this.imuln(h),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l);if(P!==0){var U=1;for(l=g(t,y,t.length,s),y=0;y<P;y++)U*=s;this.imuln(U),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l)}this._strip()},e.prototype.copy=function(t){t.words=new Array(this.length);for(var s=0;s<this.length;s++)t.words[s]=this.words[s];t.length=this.length,t.negative=this.negative,t.red=this.red};function m(p,t){p.words=t.words,p.length=t.length,p.negative=t.negative,p.red=t.red}if(e.prototype._move=function(t){m(t,this)},e.prototype.clone=function(){var t=new e(null);return this.copy(t),t},e.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},e.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},e.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{e.prototype[Symbol.for("nodejs.util.inspect.custom")]=M}catch{e.prototype.inspect=M}else e.prototype.inspect=M;function M(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],A=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],T=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];e.prototype.toString=function(t,s){t=t||10,s=s|0||1;var u;if(t===16||t==="hex"){u="";for(var f=0,h=0,v=0;v<this.length;v++){var P=this.words[v],_=((P<<f|h)&16777215).toString(16);h=P>>>24-f&16777215,f+=2,f>=26&&(f-=26,v--),h!==0||v!==this.length-1?u=S[6-_.length]+_+u:u=_+u}for(h!==0&&(u=h.toString(16)+u);u.length%s!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(t===(t|0)&&t>=2&&t<=36){var l=A[t],y=T[t];u="";var U=this.clone();for(U.negative=0;!U.isZero();){var B=U.modrn(y).toString(t);U=U.idivn(y),U.isZero()?u=B+u:u=S[l-B.length]+B+u}for(this.isZero()&&(u="0"+u);u.length%s!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},e.prototype.toNumber=function(){var t=this.words[0];return this.length===2?t+=this.words[1]*67108864:this.length===3&&this.words[2]===1?t+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-t:t},e.prototype.toJSON=function(){return this.toString(16,2)},a&&(e.prototype.toBuffer=function(t,s){return this.toArrayLike(a,t,s)}),e.prototype.toArray=function(t,s){return this.toArrayLike(Array,t,s)};var D=function(t,s){return t.allocUnsafe?t.allocUnsafe(s):new t(s)};e.prototype.toArrayLike=function(t,s,u){this._strip();var f=this.byteLength(),h=u||Math.max(1,f);i(f<=h,"byte array longer than desired length"),i(h>0,"Requested array length <= 0");var v=D(t,h),P=s==="le"?"LE":"BE";return this["_toArrayLike"+P](v,f),v},e.prototype._toArrayLikeLE=function(t,s){for(var u=0,f=0,h=0,v=0;h<this.length;h++){var P=this.words[h]<<v|f;t[u++]=P&255,u<t.length&&(t[u++]=P>>8&255),u<t.length&&(t[u++]=P>>16&255),v===6?(u<t.length&&(t[u++]=P>>24&255),f=0,v=0):(f=P>>>24,v+=2)}if(u<t.length)for(t[u++]=f;u<t.length;)t[u++]=0},e.prototype._toArrayLikeBE=function(t,s){for(var u=t.length-1,f=0,h=0,v=0;h<this.length;h++){var P=this.words[h]<<v|f;t[u--]=P&255,u>=0&&(t[u--]=P>>8&255),u>=0&&(t[u--]=P>>16&255),v===6?(u>=0&&(t[u--]=P>>24&255),f=0,v=0):(f=P>>>24,v+=2)}if(u>=0)for(t[u--]=f;u>=0;)t[u--]=0},Math.clz32?e.prototype._countBits=function(t){return 32-Math.clz32(t)}:e.prototype._countBits=function(t){var s=t,u=0;return s>=4096&&(u+=13,s>>>=13),s>=64&&(u+=7,s>>>=7),s>=8&&(u+=4,s>>>=4),s>=2&&(u+=2,s>>>=2),u+s},e.prototype._zeroBits=function(t){if(t===0)return 26;var s=t,u=0;return(s&8191)===0&&(u+=13,s>>>=13),(s&127)===0&&(u+=7,s>>>=7),(s&15)===0&&(u+=4,s>>>=4),(s&3)===0&&(u+=2,s>>>=2),(s&1)===0&&u++,u},e.prototype.bitLength=function(){var t=this.words[this.length-1],s=this._countBits(t);return(this.length-1)*26+s};function R(p){for(var t=new Array(p.bitLength()),s=0;s<t.length;s++){var u=s/26|0,f=s%26;t[s]=p.words[u]>>>f&1}return t}e.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,s=0;s<this.length;s++){var u=this._zeroBits(this.words[s]);if(t+=u,u!==26)break}return t},e.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},e.prototype.toTwos=function(t){return this.negative!==0?this.abs().inotn(t).iaddn(1):this.clone()},e.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},e.prototype.isNeg=function(){return this.negative!==0},e.prototype.neg=function(){return this.clone().ineg()},e.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},e.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var s=0;s<t.length;s++)this.words[s]=this.words[s]|t.words[s];return this._strip()},e.prototype.ior=function(t){return i((this.negative|t.negative)===0),this.iuor(t)},e.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},e.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},e.prototype.iuand=function(t){var s;this.length>t.length?s=t:s=this;for(var u=0;u<s.length;u++)this.words[u]=this.words[u]&t.words[u];return this.length=s.length,this._strip()},e.prototype.iand=function(t){return i((this.negative|t.negative)===0),this.iuand(t)},e.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},e.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},e.prototype.iuxor=function(t){var s,u;this.length>t.length?(s=this,u=t):(s=t,u=this);for(var f=0;f<u.length;f++)this.words[f]=s.words[f]^u.words[f];if(this!==s)for(;f<s.length;f++)this.words[f]=s.words[f];return this.length=s.length,this._strip()},e.prototype.ixor=function(t){return i((this.negative|t.negative)===0),this.iuxor(t)},e.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},e.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},e.prototype.inotn=function(t){i(typeof t=="number"&&t>=0);var s=Math.ceil(t/26)|0,u=t%26;this._expand(s),u>0&&s--;for(var f=0;f<s;f++)this.words[f]=~this.words[f]&67108863;return u>0&&(this.words[f]=~this.words[f]&67108863>>26-u),this._strip()},e.prototype.notn=function(t){return this.clone().inotn(t)},e.prototype.setn=function(t,s){i(typeof t=="number"&&t>=0);var u=t/26|0,f=t%26;return this._expand(u+1),s?this.words[u]=this.words[u]|1<<f:this.words[u]=this.words[u]&~(1<<f),this._strip()},e.prototype.iadd=function(t){var s;if(this.negative!==0&&t.negative===0)return this.negative=0,s=this.isub(t),this.negative^=1,this._normSign();if(this.negative===0&&t.negative!==0)return t.negative=0,s=this.isub(t),t.negative=1,s._normSign();var u,f;this.length>t.length?(u=this,f=t):(u=t,f=this);for(var h=0,v=0;v<f.length;v++)s=(u.words[v]|0)+(f.words[v]|0)+h,this.words[v]=s&67108863,h=s>>>26;for(;h!==0&&v<u.length;v++)s=(u.words[v]|0)+h,this.words[v]=s&67108863,h=s>>>26;if(this.length=u.length,h!==0)this.words[this.length]=h,this.length++;else if(u!==this)for(;v<u.length;v++)this.words[v]=u.words[v];return this},e.prototype.add=function(t){var s;return t.negative!==0&&this.negative===0?(t.negative=0,s=this.sub(t),t.negative^=1,s):t.negative===0&&this.negative!==0?(this.negative=0,s=t.sub(this),this.negative=1,s):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},e.prototype.isub=function(t){if(t.negative!==0){t.negative=0;var s=this.iadd(t);return t.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var u=this.cmp(t);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var f,h;u>0?(f=this,h=t):(f=t,h=this);for(var v=0,P=0;P<h.length;P++)s=(f.words[P]|0)-(h.words[P]|0)+v,v=s>>26,this.words[P]=s&67108863;for(;v!==0&&P<f.length;P++)s=(f.words[P]|0)+v,v=s>>26,this.words[P]=s&67108863;if(v===0&&P<f.length&&f!==this)for(;P<f.length;P++)this.words[P]=f.words[P];return this.length=Math.max(this.length,P),f!==this&&(this.negative=1),this._strip()},e.prototype.sub=function(t){return this.clone().isub(t)};function N(p,t,s){s.negative=t.negative^p.negative;var u=p.length+t.length|0;s.length=u,u=u-1|0;var f=p.words[0]|0,h=t.words[0]|0,v=f*h,P=v&67108863,_=v/67108864|0;s.words[0]=P;for(var l=1;l<u;l++){for(var y=_>>>26,U=_&67108863,B=Math.min(l,t.length-1),$=Math.max(0,l-p.length+1);$<=B;$++){var K=l-$|0;f=p.words[K]|0,h=t.words[$]|0,v=f*h+U,y+=v/67108864|0,U=v&67108863}s.words[l]=U|0,_=y|0}return _!==0?s.words[l]=_|0:s.length--,s._strip()}var L=function(t,s,u){var f=t.words,h=s.words,v=u.words,P=0,_,l,y,U=f[0]|0,B=U&8191,$=U>>>13,K=f[1]|0,V=K&8191,J=K>>>13,rt=f[2]|0,G=rt&8191,it=rt>>>13,ft=f[3]|0,et=ft&8191,X=ft>>>13,de=f[4]|0,lt=de&8191,st=de>>>13,oe=f[5]|0,at=oe&8191,nt=oe>>>13,Oe=f[6]|0,ht=Oe&8191,pt=Oe>>>13,Wi=f[7]|0,mt=Wi&8191,gt=Wi>>>13,Zi=f[8]|0,_t=Zi&8191,wt=Zi>>>13,Ki=f[9]|0,vt=Ki&8191,Mt=Ki>>>13,zi=h[0]|0,bt=zi&8191,yt=zi>>>13,Gi=h[1]|0,kt=Gi&8191,St=Gi>>>13,Hi=h[2]|0,Pt=Hi&8191,At=Hi>>>13,Vi=h[3]|0,Ct=Vi&8191,xt=Vi>>>13,Xi=h[4]|0,Tt=Xi&8191,Dt=Xi>>>13,Ji=h[5]|0,Ot=Ji&8191,Rt=Ji>>>13,Yi=h[6]|0,Lt=Yi&8191,Nt=Yi>>>13,Qi=h[7]|0,It=Qi&8191,Et=Qi>>>13,tr=h[8]|0,Bt=tr&8191,qt=tr>>>13,er=h[9]|0,Ft=er&8191,Ut=er>>>13;u.negative=t.negative^s.negative,u.length=19,_=Math.imul(B,bt),l=Math.imul(B,yt),l=l+Math.imul($,bt)|0,y=Math.imul($,yt);var ri=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ri>>>26)|0,ri&=67108863,_=Math.imul(V,bt),l=Math.imul(V,yt),l=l+Math.imul(J,bt)|0,y=Math.imul(J,yt),_=_+Math.imul(B,kt)|0,l=l+Math.imul(B,St)|0,l=l+Math.imul($,kt)|0,y=y+Math.imul($,St)|0;var ni=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ni>>>26)|0,ni&=67108863,_=Math.imul(G,bt),l=Math.imul(G,yt),l=l+Math.imul(it,bt)|0,y=Math.imul(it,yt),_=_+Math.imul(V,kt)|0,l=l+Math.imul(V,St)|0,l=l+Math.imul(J,kt)|0,y=y+Math.imul(J,St)|0,_=_+Math.imul(B,Pt)|0,l=l+Math.imul(B,At)|0,l=l+Math.imul($,Pt)|0,y=y+Math.imul($,At)|0;var oi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(oi>>>26)|0,oi&=67108863,_=Math.imul(et,bt),l=Math.imul(et,yt),l=l+Math.imul(X,bt)|0,y=Math.imul(X,yt),_=_+Math.imul(G,kt)|0,l=l+Math.imul(G,St)|0,l=l+Math.imul(it,kt)|0,y=y+Math.imul(it,St)|0,_=_+Math.imul(V,Pt)|0,l=l+Math.imul(V,At)|0,l=l+Math.imul(J,Pt)|0,y=y+Math.imul(J,At)|0,_=_+Math.imul(B,Ct)|0,l=l+Math.imul(B,xt)|0,l=l+Math.imul($,Ct)|0,y=y+Math.imul($,xt)|0;var si=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(si>>>26)|0,si&=67108863,_=Math.imul(lt,bt),l=Math.imul(lt,yt),l=l+Math.imul(st,bt)|0,y=Math.imul(st,yt),_=_+Math.imul(et,kt)|0,l=l+Math.imul(et,St)|0,l=l+Math.imul(X,kt)|0,y=y+Math.imul(X,St)|0,_=_+Math.imul(G,Pt)|0,l=l+Math.imul(G,At)|0,l=l+Math.imul(it,Pt)|0,y=y+Math.imul(it,At)|0,_=_+Math.imul(V,Ct)|0,l=l+Math.imul(V,xt)|0,l=l+Math.imul(J,Ct)|0,y=y+Math.imul(J,xt)|0,_=_+Math.imul(B,Tt)|0,l=l+Math.imul(B,Dt)|0,l=l+Math.imul($,Tt)|0,y=y+Math.imul($,Dt)|0;var ai=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ai>>>26)|0,ai&=67108863,_=Math.imul(at,bt),l=Math.imul(at,yt),l=l+Math.imul(nt,bt)|0,y=Math.imul(nt,yt),_=_+Math.imul(lt,kt)|0,l=l+Math.imul(lt,St)|0,l=l+Math.imul(st,kt)|0,y=y+Math.imul(st,St)|0,_=_+Math.imul(et,Pt)|0,l=l+Math.imul(et,At)|0,l=l+Math.imul(X,Pt)|0,y=y+Math.imul(X,At)|0,_=_+Math.imul(G,Ct)|0,l=l+Math.imul(G,xt)|0,l=l+Math.imul(it,Ct)|0,y=y+Math.imul(it,xt)|0,_=_+Math.imul(V,Tt)|0,l=l+Math.imul(V,Dt)|0,l=l+Math.imul(J,Tt)|0,y=y+Math.imul(J,Dt)|0,_=_+Math.imul(B,Ot)|0,l=l+Math.imul(B,Rt)|0,l=l+Math.imul($,Ot)|0,y=y+Math.imul($,Rt)|0;var li=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(li>>>26)|0,li&=67108863,_=Math.imul(ht,bt),l=Math.imul(ht,yt),l=l+Math.imul(pt,bt)|0,y=Math.imul(pt,yt),_=_+Math.imul(at,kt)|0,l=l+Math.imul(at,St)|0,l=l+Math.imul(nt,kt)|0,y=y+Math.imul(nt,St)|0,_=_+Math.imul(lt,Pt)|0,l=l+Math.imul(lt,At)|0,l=l+Math.imul(st,Pt)|0,y=y+Math.imul(st,At)|0,_=_+Math.imul(et,Ct)|0,l=l+Math.imul(et,xt)|0,l=l+Math.imul(X,Ct)|0,y=y+Math.imul(X,xt)|0,_=_+Math.imul(G,Tt)|0,l=l+Math.imul(G,Dt)|0,l=l+Math.imul(it,Tt)|0,y=y+Math.imul(it,Dt)|0,_=_+Math.imul(V,Ot)|0,l=l+Math.imul(V,Rt)|0,l=l+Math.imul(J,Ot)|0,y=y+Math.imul(J,Rt)|0,_=_+Math.imul(B,Lt)|0,l=l+Math.imul(B,Nt)|0,l=l+Math.imul($,Lt)|0,y=y+Math.imul($,Nt)|0;var ui=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ui>>>26)|0,ui&=67108863,_=Math.imul(mt,bt),l=Math.imul(mt,yt),l=l+Math.imul(gt,bt)|0,y=Math.imul(gt,yt),_=_+Math.imul(ht,kt)|0,l=l+Math.imul(ht,St)|0,l=l+Math.imul(pt,kt)|0,y=y+Math.imul(pt,St)|0,_=_+Math.imul(at,Pt)|0,l=l+Math.imul(at,At)|0,l=l+Math.imul(nt,Pt)|0,y=y+Math.imul(nt,At)|0,_=_+Math.imul(lt,Ct)|0,l=l+Math.imul(lt,xt)|0,l=l+Math.imul(st,Ct)|0,y=y+Math.imul(st,xt)|0,_=_+Math.imul(et,Tt)|0,l=l+Math.imul(et,Dt)|0,l=l+Math.imul(X,Tt)|0,y=y+Math.imul(X,Dt)|0,_=_+Math.imul(G,Ot)|0,l=l+Math.imul(G,Rt)|0,l=l+Math.imul(it,Ot)|0,y=y+Math.imul(it,Rt)|0,_=_+Math.imul(V,Lt)|0,l=l+Math.imul(V,Nt)|0,l=l+Math.imul(J,Lt)|0,y=y+Math.imul(J,Nt)|0,_=_+Math.imul(B,It)|0,l=l+Math.imul(B,Et)|0,l=l+Math.imul($,It)|0,y=y+Math.imul($,Et)|0;var ci=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(ci>>>26)|0,ci&=67108863,_=Math.imul(_t,bt),l=Math.imul(_t,yt),l=l+Math.imul(wt,bt)|0,y=Math.imul(wt,yt),_=_+Math.imul(mt,kt)|0,l=l+Math.imul(mt,St)|0,l=l+Math.imul(gt,kt)|0,y=y+Math.imul(gt,St)|0,_=_+Math.imul(ht,Pt)|0,l=l+Math.imul(ht,At)|0,l=l+Math.imul(pt,Pt)|0,y=y+Math.imul(pt,At)|0,_=_+Math.imul(at,Ct)|0,l=l+Math.imul(at,xt)|0,l=l+Math.imul(nt,Ct)|0,y=y+Math.imul(nt,xt)|0,_=_+Math.imul(lt,Tt)|0,l=l+Math.imul(lt,Dt)|0,l=l+Math.imul(st,Tt)|0,y=y+Math.imul(st,Dt)|0,_=_+Math.imul(et,Ot)|0,l=l+Math.imul(et,Rt)|0,l=l+Math.imul(X,Ot)|0,y=y+Math.imul(X,Rt)|0,_=_+Math.imul(G,Lt)|0,l=l+Math.imul(G,Nt)|0,l=l+Math.imul(it,Lt)|0,y=y+Math.imul(it,Nt)|0,_=_+Math.imul(V,It)|0,l=l+Math.imul(V,Et)|0,l=l+Math.imul(J,It)|0,y=y+Math.imul(J,Et)|0,_=_+Math.imul(B,Bt)|0,l=l+Math.imul(B,qt)|0,l=l+Math.imul($,Bt)|0,y=y+Math.imul($,qt)|0;var fi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(fi>>>26)|0,fi&=67108863,_=Math.imul(vt,bt),l=Math.imul(vt,yt),l=l+Math.imul(Mt,bt)|0,y=Math.imul(Mt,yt),_=_+Math.imul(_t,kt)|0,l=l+Math.imul(_t,St)|0,l=l+Math.imul(wt,kt)|0,y=y+Math.imul(wt,St)|0,_=_+Math.imul(mt,Pt)|0,l=l+Math.imul(mt,At)|0,l=l+Math.imul(gt,Pt)|0,y=y+Math.imul(gt,At)|0,_=_+Math.imul(ht,Ct)|0,l=l+Math.imul(ht,xt)|0,l=l+Math.imul(pt,Ct)|0,y=y+Math.imul(pt,xt)|0,_=_+Math.imul(at,Tt)|0,l=l+Math.imul(at,Dt)|0,l=l+Math.imul(nt,Tt)|0,y=y+Math.imul(nt,Dt)|0,_=_+Math.imul(lt,Ot)|0,l=l+Math.imul(lt,Rt)|0,l=l+Math.imul(st,Ot)|0,y=y+Math.imul(st,Rt)|0,_=_+Math.imul(et,Lt)|0,l=l+Math.imul(et,Nt)|0,l=l+Math.imul(X,Lt)|0,y=y+Math.imul(X,Nt)|0,_=_+Math.imul(G,It)|0,l=l+Math.imul(G,Et)|0,l=l+Math.imul(it,It)|0,y=y+Math.imul(it,Et)|0,_=_+Math.imul(V,Bt)|0,l=l+Math.imul(V,qt)|0,l=l+Math.imul(J,Bt)|0,y=y+Math.imul(J,qt)|0,_=_+Math.imul(B,Ft)|0,l=l+Math.imul(B,Ut)|0,l=l+Math.imul($,Ft)|0,y=y+Math.imul($,Ut)|0;var di=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(di>>>26)|0,di&=67108863,_=Math.imul(vt,kt),l=Math.imul(vt,St),l=l+Math.imul(Mt,kt)|0,y=Math.imul(Mt,St),_=_+Math.imul(_t,Pt)|0,l=l+Math.imul(_t,At)|0,l=l+Math.imul(wt,Pt)|0,y=y+Math.imul(wt,At)|0,_=_+Math.imul(mt,Ct)|0,l=l+Math.imul(mt,xt)|0,l=l+Math.imul(gt,Ct)|0,y=y+Math.imul(gt,xt)|0,_=_+Math.imul(ht,Tt)|0,l=l+Math.imul(ht,Dt)|0,l=l+Math.imul(pt,Tt)|0,y=y+Math.imul(pt,Dt)|0,_=_+Math.imul(at,Ot)|0,l=l+Math.imul(at,Rt)|0,l=l+Math.imul(nt,Ot)|0,y=y+Math.imul(nt,Rt)|0,_=_+Math.imul(lt,Lt)|0,l=l+Math.imul(lt,Nt)|0,l=l+Math.imul(st,Lt)|0,y=y+Math.imul(st,Nt)|0,_=_+Math.imul(et,It)|0,l=l+Math.imul(et,Et)|0,l=l+Math.imul(X,It)|0,y=y+Math.imul(X,Et)|0,_=_+Math.imul(G,Bt)|0,l=l+Math.imul(G,qt)|0,l=l+Math.imul(it,Bt)|0,y=y+Math.imul(it,qt)|0,_=_+Math.imul(V,Ft)|0,l=l+Math.imul(V,Ut)|0,l=l+Math.imul(J,Ft)|0,y=y+Math.imul(J,Ut)|0;var hi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(hi>>>26)|0,hi&=67108863,_=Math.imul(vt,Pt),l=Math.imul(vt,At),l=l+Math.imul(Mt,Pt)|0,y=Math.imul(Mt,At),_=_+Math.imul(_t,Ct)|0,l=l+Math.imul(_t,xt)|0,l=l+Math.imul(wt,Ct)|0,y=y+Math.imul(wt,xt)|0,_=_+Math.imul(mt,Tt)|0,l=l+Math.imul(mt,Dt)|0,l=l+Math.imul(gt,Tt)|0,y=y+Math.imul(gt,Dt)|0,_=_+Math.imul(ht,Ot)|0,l=l+Math.imul(ht,Rt)|0,l=l+Math.imul(pt,Ot)|0,y=y+Math.imul(pt,Rt)|0,_=_+Math.imul(at,Lt)|0,l=l+Math.imul(at,Nt)|0,l=l+Math.imul(nt,Lt)|0,y=y+Math.imul(nt,Nt)|0,_=_+Math.imul(lt,It)|0,l=l+Math.imul(lt,Et)|0,l=l+Math.imul(st,It)|0,y=y+Math.imul(st,Et)|0,_=_+Math.imul(et,Bt)|0,l=l+Math.imul(et,qt)|0,l=l+Math.imul(X,Bt)|0,y=y+Math.imul(X,qt)|0,_=_+Math.imul(G,Ft)|0,l=l+Math.imul(G,Ut)|0,l=l+Math.imul(it,Ft)|0,y=y+Math.imul(it,Ut)|0;var pi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(pi>>>26)|0,pi&=67108863,_=Math.imul(vt,Ct),l=Math.imul(vt,xt),l=l+Math.imul(Mt,Ct)|0,y=Math.imul(Mt,xt),_=_+Math.imul(_t,Tt)|0,l=l+Math.imul(_t,Dt)|0,l=l+Math.imul(wt,Tt)|0,y=y+Math.imul(wt,Dt)|0,_=_+Math.imul(mt,Ot)|0,l=l+Math.imul(mt,Rt)|0,l=l+Math.imul(gt,Ot)|0,y=y+Math.imul(gt,Rt)|0,_=_+Math.imul(ht,Lt)|0,l=l+Math.imul(ht,Nt)|0,l=l+Math.imul(pt,Lt)|0,y=y+Math.imul(pt,Nt)|0,_=_+Math.imul(at,It)|0,l=l+Math.imul(at,Et)|0,l=l+Math.imul(nt,It)|0,y=y+Math.imul(nt,Et)|0,_=_+Math.imul(lt,Bt)|0,l=l+Math.imul(lt,qt)|0,l=l+Math.imul(st,Bt)|0,y=y+Math.imul(st,qt)|0,_=_+Math.imul(et,Ft)|0,l=l+Math.imul(et,Ut)|0,l=l+Math.imul(X,Ft)|0,y=y+Math.imul(X,Ut)|0;var mi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(mi>>>26)|0,mi&=67108863,_=Math.imul(vt,Tt),l=Math.imul(vt,Dt),l=l+Math.imul(Mt,Tt)|0,y=Math.imul(Mt,Dt),_=_+Math.imul(_t,Ot)|0,l=l+Math.imul(_t,Rt)|0,l=l+Math.imul(wt,Ot)|0,y=y+Math.imul(wt,Rt)|0,_=_+Math.imul(mt,Lt)|0,l=l+Math.imul(mt,Nt)|0,l=l+Math.imul(gt,Lt)|0,y=y+Math.imul(gt,Nt)|0,_=_+Math.imul(ht,It)|0,l=l+Math.imul(ht,Et)|0,l=l+Math.imul(pt,It)|0,y=y+Math.imul(pt,Et)|0,_=_+Math.imul(at,Bt)|0,l=l+Math.imul(at,qt)|0,l=l+Math.imul(nt,Bt)|0,y=y+Math.imul(nt,qt)|0,_=_+Math.imul(lt,Ft)|0,l=l+Math.imul(lt,Ut)|0,l=l+Math.imul(st,Ft)|0,y=y+Math.imul(st,Ut)|0;var gi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(gi>>>26)|0,gi&=67108863,_=Math.imul(vt,Ot),l=Math.imul(vt,Rt),l=l+Math.imul(Mt,Ot)|0,y=Math.imul(Mt,Rt),_=_+Math.imul(_t,Lt)|0,l=l+Math.imul(_t,Nt)|0,l=l+Math.imul(wt,Lt)|0,y=y+Math.imul(wt,Nt)|0,_=_+Math.imul(mt,It)|0,l=l+Math.imul(mt,Et)|0,l=l+Math.imul(gt,It)|0,y=y+Math.imul(gt,Et)|0,_=_+Math.imul(ht,Bt)|0,l=l+Math.imul(ht,qt)|0,l=l+Math.imul(pt,Bt)|0,y=y+Math.imul(pt,qt)|0,_=_+Math.imul(at,Ft)|0,l=l+Math.imul(at,Ut)|0,l=l+Math.imul(nt,Ft)|0,y=y+Math.imul(nt,Ut)|0;var _i=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(_i>>>26)|0,_i&=67108863,_=Math.imul(vt,Lt),l=Math.imul(vt,Nt),l=l+Math.imul(Mt,Lt)|0,y=Math.imul(Mt,Nt),_=_+Math.imul(_t,It)|0,l=l+Math.imul(_t,Et)|0,l=l+Math.imul(wt,It)|0,y=y+Math.imul(wt,Et)|0,_=_+Math.imul(mt,Bt)|0,l=l+Math.imul(mt,qt)|0,l=l+Math.imul(gt,Bt)|0,y=y+Math.imul(gt,qt)|0,_=_+Math.imul(ht,Ft)|0,l=l+Math.imul(ht,Ut)|0,l=l+Math.imul(pt,Ft)|0,y=y+Math.imul(pt,Ut)|0;var wi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(wi>>>26)|0,wi&=67108863,_=Math.imul(vt,It),l=Math.imul(vt,Et),l=l+Math.imul(Mt,It)|0,y=Math.imul(Mt,Et),_=_+Math.imul(_t,Bt)|0,l=l+Math.imul(_t,qt)|0,l=l+Math.imul(wt,Bt)|0,y=y+Math.imul(wt,qt)|0,_=_+Math.imul(mt,Ft)|0,l=l+Math.imul(mt,Ut)|0,l=l+Math.imul(gt,Ft)|0,y=y+Math.imul(gt,Ut)|0;var vi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(vi>>>26)|0,vi&=67108863,_=Math.imul(vt,Bt),l=Math.imul(vt,qt),l=l+Math.imul(Mt,Bt)|0,y=Math.imul(Mt,qt),_=_+Math.imul(_t,Ft)|0,l=l+Math.imul(_t,Ut)|0,l=l+Math.imul(wt,Ft)|0,y=y+Math.imul(wt,Ut)|0;var Mi=(P+_|0)+((l&8191)<<13)|0;P=(y+(l>>>13)|0)+(Mi>>>26)|0,Mi&=67108863,_=Math.imul(vt,Ft),l=Math.imul(vt,Ut),l=l+Math.imul(Mt,Ft)|0,y=Math.imul(Mt,Ut);var bi=(P+_|0)+((l&8191)<<13)|0;return P=(y+(l>>>13)|0)+(bi>>>26)|0,bi&=67108863,v[0]=ri,v[1]=ni,v[2]=oi,v[3]=si,v[4]=ai,v[5]=li,v[6]=ui,v[7]=ci,v[8]=fi,v[9]=di,v[10]=hi,v[11]=pi,v[12]=mi,v[13]=gi,v[14]=_i,v[15]=wi,v[16]=vi,v[17]=Mi,v[18]=bi,P!==0&&(v[19]=P,u.length++),u};Math.imul||(L=N);function O(p,t,s){s.negative=t.negative^p.negative,s.length=p.length+t.length;for(var u=0,f=0,h=0;h<s.length-1;h++){var v=f;f=0;for(var P=u&67108863,_=Math.min(h,t.length-1),l=Math.max(0,h-p.length+1);l<=_;l++){var y=h-l,U=p.words[y]|0,B=t.words[l]|0,$=U*B,K=$&67108863;v=v+($/67108864|0)|0,K=K+P|0,P=K&67108863,v=v+(K>>>26)|0,f+=v>>>26,v&=67108863}s.words[h]=P,u=v,v=f}return u!==0?s.words[h]=u:s.length--,s._strip()}function F(p,t,s){return O(p,t,s)}e.prototype.mulTo=function(t,s){var u,f=this.length+t.length;return this.length===10&&t.length===10?u=L(this,t,s):f<63?u=N(this,t,s):f<1024?u=O(this,t,s):u=F(this,t,s),u};function q(p,t){this.x=p,this.y=t}q.prototype.makeRBT=function(t){for(var s=new Array(t),u=e.prototype._countBits(t)-1,f=0;f<t;f++)s[f]=this.revBin(f,u,t);return s},q.prototype.revBin=function(t,s,u){if(t===0||t===u-1)return t;for(var f=0,h=0;h<s;h++)f|=(t&1)<<s-h-1,t>>=1;return f},q.prototype.permute=function(t,s,u,f,h,v){for(var P=0;P<v;P++)f[P]=s[t[P]],h[P]=u[t[P]]},q.prototype.transform=function(t,s,u,f,h,v){this.permute(v,t,s,u,f,h);for(var P=1;P<h;P<<=1)for(var _=P<<1,l=Math.cos(2*Math.PI/_),y=Math.sin(2*Math.PI/_),U=0;U<h;U+=_)for(var B=l,$=y,K=0;K<P;K++){var V=u[U+K],J=f[U+K],rt=u[U+K+P],G=f[U+K+P],it=B*rt-$*G;G=B*G+$*rt,rt=it,u[U+K]=V+rt,f[U+K]=J+G,u[U+K+P]=V-rt,f[U+K+P]=J-G,K!==_&&(it=l*B-y*$,$=l*$+y*B,B=it)}},q.prototype.guessLen13b=function(t,s){var u=Math.max(s,t)|1,f=u&1,h=0;for(u=u/2|0;u;u=u>>>1)h++;return 1<<h+1+f},q.prototype.conjugate=function(t,s,u){if(!(u<=1))for(var f=0;f<u/2;f++){var h=t[f];t[f]=t[u-f-1],t[u-f-1]=h,h=s[f],s[f]=-s[u-f-1],s[u-f-1]=-h}},q.prototype.normalize13b=function(t,s){for(var u=0,f=0;f<s/2;f++){var h=Math.round(t[2*f+1]/s)*8192+Math.round(t[2*f]/s)+u;t[f]=h&67108863,h<67108864?u=0:u=h/67108864|0}return t},q.prototype.convert13b=function(t,s,u,f){for(var h=0,v=0;v<s;v++)h=h+(t[v]|0),u[2*v]=h&8191,h=h>>>13,u[2*v+1]=h&8191,h=h>>>13;for(v=2*s;v<f;++v)u[v]=0;i(h===0),i((h&-8192)===0)},q.prototype.stub=function(t){for(var s=new Array(t),u=0;u<t;u++)s[u]=0;return s},q.prototype.mulp=function(t,s,u){var f=2*this.guessLen13b(t.length,s.length),h=this.makeRBT(f),v=this.stub(f),P=new Array(f),_=new Array(f),l=new Array(f),y=new Array(f),U=new Array(f),B=new Array(f),$=u.words;$.length=f,this.convert13b(t.words,t.length,P,f),this.convert13b(s.words,s.length,y,f),this.transform(P,v,_,l,f,h),this.transform(y,v,U,B,f,h);for(var K=0;K<f;K++){var V=_[K]*U[K]-l[K]*B[K];l[K]=_[K]*B[K]+l[K]*U[K],_[K]=V}return this.conjugate(_,l,f),this.transform(_,l,$,v,f,h),this.conjugate($,v,f),this.normalize13b($,f),u.negative=t.negative^s.negative,u.length=t.length+s.length,u._strip()},e.prototype.mul=function(t){var s=new e(null);return s.words=new Array(this.length+t.length),this.mulTo(t,s)},e.prototype.mulf=function(t){var s=new e(null);return s.words=new Array(this.length+t.length),F(this,t,s)},e.prototype.imul=function(t){return this.clone().mulTo(t,this)},e.prototype.imuln=function(t){var s=t<0;s&&(t=-t),i(typeof t=="number"),i(t<67108864);for(var u=0,f=0;f<this.length;f++){var h=(this.words[f]|0)*t,v=(h&67108863)+(u&67108863);u>>=26,u+=h/67108864|0,u+=v>>>26,this.words[f]=v&67108863}return u!==0&&(this.words[f]=u,this.length++),this.length=t===0?1:this.length,s?this.ineg():this},e.prototype.muln=function(t){return this.clone().imuln(t)},e.prototype.sqr=function(){return this.mul(this)},e.prototype.isqr=function(){return this.imul(this.clone())},e.prototype.pow=function(t){var s=R(t);if(s.length===0)return new e(1);for(var u=this,f=0;f<s.length&&s[f]===0;f++,u=u.sqr());if(++f<s.length)for(var h=u.sqr();f<s.length;f++,h=h.sqr())s[f]!==0&&(u=u.mul(h));return u},e.prototype.iushln=function(t){i(typeof t=="number"&&t>=0);var s=t%26,u=(t-s)/26,f=67108863>>>26-s<<26-s,h;if(s!==0){var v=0;for(h=0;h<this.length;h++){var P=this.words[h]&f,_=(this.words[h]|0)-P<<s;this.words[h]=_|v,v=P>>>26-s}v&&(this.words[h]=v,this.length++)}if(u!==0){for(h=this.length-1;h>=0;h--)this.words[h+u]=this.words[h];for(h=0;h<u;h++)this.words[h]=0;this.length+=u}return this._strip()},e.prototype.ishln=function(t){return i(this.negative===0),this.iushln(t)},e.prototype.iushrn=function(t,s,u){i(typeof t=="number"&&t>=0);var f;s?f=(s-s%26)/26:f=0;var h=t%26,v=Math.min((t-h)/26,this.length),P=67108863^67108863>>>h<<h,_=u;if(f-=v,f=Math.max(0,f),_){for(var l=0;l<v;l++)_.words[l]=this.words[l];_.length=v}if(v!==0)if(this.length>v)for(this.length-=v,l=0;l<this.length;l++)this.words[l]=this.words[l+v];else this.words[0]=0,this.length=1;var y=0;for(l=this.length-1;l>=0&&(y!==0||l>=f);l--){var U=this.words[l]|0;this.words[l]=y<<26-h|U>>>h,y=U&P}return _&&y!==0&&(_.words[_.length++]=y),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},e.prototype.ishrn=function(t,s,u){return i(this.negative===0),this.iushrn(t,s,u)},e.prototype.shln=function(t){return this.clone().ishln(t)},e.prototype.ushln=function(t){return this.clone().iushln(t)},e.prototype.shrn=function(t){return this.clone().ishrn(t)},e.prototype.ushrn=function(t){return this.clone().iushrn(t)},e.prototype.testn=function(t){i(typeof t=="number"&&t>=0);var s=t%26,u=(t-s)/26,f=1<<s;if(this.length<=u)return!1;var h=this.words[u];return!!(h&f)},e.prototype.imaskn=function(t){i(typeof t=="number"&&t>=0);var s=t%26,u=(t-s)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(s!==0&&u++,this.length=Math.min(u,this.length),s!==0){var f=67108863^67108863>>>s<<s;this.words[this.length-1]&=f}return this._strip()},e.prototype.maskn=function(t){return this.clone().imaskn(t)},e.prototype.iaddn=function(t){return i(typeof t=="number"),i(t<67108864),t<0?this.isubn(-t):this.negative!==0?this.length===1&&(this.words[0]|0)<=t?(this.words[0]=t-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},e.prototype._iaddn=function(t){this.words[0]+=t;for(var s=0;s<this.length&&this.words[s]>=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},e.prototype.isubn=function(t){if(i(typeof t=="number"),i(t<67108864),t<0)return this.iaddn(-t);if(this.negative!==0)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s<this.length&&this.words[s]<0;s++)this.words[s]+=67108864,this.words[s+1]-=1;return this._strip()},e.prototype.addn=function(t){return this.clone().iaddn(t)},e.prototype.subn=function(t){return this.clone().isubn(t)},e.prototype.iabs=function(){return this.negative=0,this},e.prototype.abs=function(){return this.clone().iabs()},e.prototype._ishlnsubmul=function(t,s,u){var f=t.length+u,h;this._expand(f);var v,P=0;for(h=0;h<t.length;h++){v=(this.words[h+u]|0)+P;var _=(t.words[h]|0)*s;v-=_&67108863,P=(v>>26)-(_/67108864|0),this.words[h+u]=v&67108863}for(;h<this.length-u;h++)v=(this.words[h+u]|0)+P,P=v>>26,this.words[h+u]=v&67108863;if(P===0)return this._strip();for(i(P===-1),P=0,h=0;h<this.length;h++)v=-(this.words[h]|0)+P,P=v>>26,this.words[h]=v&67108863;return this.negative=1,this._strip()},e.prototype._wordDiv=function(t,s){var u=this.length-t.length,f=this.clone(),h=t,v=h.words[h.length-1]|0,P=this._countBits(v);u=26-P,u!==0&&(h=h.ushln(u),f.iushln(u),v=h.words[h.length-1]|0);var _=f.length-h.length,l;if(s!=="mod"){l=new e(null),l.length=_+1,l.words=new Array(l.length);for(var y=0;y<l.length;y++)l.words[y]=0}var U=f.clone()._ishlnsubmul(h,1,_);U.negative===0&&(f=U,l&&(l.words[_]=1));for(var B=_-1;B>=0;B--){var $=(f.words[h.length+B]|0)*67108864+(f.words[h.length+B-1]|0);for($=Math.min($/v|0,67108863),f._ishlnsubmul(h,$,B);f.negative!==0;)$--,f.negative=0,f._ishlnsubmul(h,1,B),f.isZero()||(f.negative^=1);l&&(l.words[B]=$)}return l&&l._strip(),f._strip(),s!=="div"&&u!==0&&f.iushrn(u),{div:l||null,mod:f}},e.prototype.divmod=function(t,s,u){if(i(!t.isZero()),this.isZero())return{div:new e(0),mod:new e(0)};var f,h,v;return this.negative!==0&&t.negative===0?(v=this.neg().divmod(t,s),s!=="mod"&&(f=v.div.neg()),s!=="div"&&(h=v.mod.neg(),u&&h.negative!==0&&h.iadd(t)),{div:f,mod:h}):this.negative===0&&t.negative!==0?(v=this.divmod(t.neg(),s),s!=="mod"&&(f=v.div.neg()),{div:f,mod:v.mod}):(this.negative&t.negative)!==0?(v=this.neg().divmod(t.neg(),s),s!=="div"&&(h=v.mod.neg(),u&&h.negative!==0&&h.isub(t)),{div:v.div,mod:h}):t.length>this.length||this.cmp(t)<0?{div:new e(0),mod:this}:t.length===1?s==="div"?{div:this.divn(t.words[0]),mod:null}:s==="mod"?{div:null,mod:new e(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new e(this.modrn(t.words[0]))}:this._wordDiv(t,s)},e.prototype.div=function(t){return this.divmod(t,"div",!1).div},e.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},e.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},e.prototype.divRound=function(t){var s=this.divmod(t);if(s.mod.isZero())return s.div;var u=s.div.negative!==0?s.mod.isub(t):s.mod,f=t.ushrn(1),h=t.andln(1),v=u.cmp(f);return v<0||h===1&&v===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},e.prototype.modrn=function(t){var s=t<0;s&&(t=-t),i(t<=67108863);for(var u=(1<<26)%t,f=0,h=this.length-1;h>=0;h--)f=(u*f+(this.words[h]|0))%t;return s?-f:f},e.prototype.modn=function(t){return this.modrn(t)},e.prototype.idivn=function(t){var s=t<0;s&&(t=-t),i(t<=67108863);for(var u=0,f=this.length-1;f>=0;f--){var h=(this.words[f]|0)+u*67108864;this.words[f]=h/t|0,u=h%t}return this._strip(),s?this.ineg():this},e.prototype.divn=function(t){return this.clone().idivn(t)},e.prototype.egcd=function(t){i(t.negative===0),i(!t.isZero());var s=this,u=t.clone();s.negative!==0?s=s.umod(t):s=s.clone();for(var f=new e(1),h=new e(0),v=new e(0),P=new e(1),_=0;s.isEven()&&u.isEven();)s.iushrn(1),u.iushrn(1),++_;for(var l=u.clone(),y=s.clone();!s.isZero();){for(var U=0,B=1;(s.words[0]&B)===0&&U<26;++U,B<<=1);if(U>0)for(s.iushrn(U);U-- >0;)(f.isOdd()||h.isOdd())&&(f.iadd(l),h.isub(y)),f.iushrn(1),h.iushrn(1);for(var $=0,K=1;(u.words[0]&K)===0&&$<26;++$,K<<=1);if($>0)for(u.iushrn($);$-- >0;)(v.isOdd()||P.isOdd())&&(v.iadd(l),P.isub(y)),v.iushrn(1),P.iushrn(1);s.cmp(u)>=0?(s.isub(u),f.isub(v),h.isub(P)):(u.isub(s),v.isub(f),P.isub(h))}return{a:v,b:P,gcd:u.iushln(_)}},e.prototype._invmp=function(t){i(t.negative===0),i(!t.isZero());var s=this,u=t.clone();s.negative!==0?s=s.umod(t):s=s.clone();for(var f=new e(1),h=new e(0),v=u.clone();s.cmpn(1)>0&&u.cmpn(1)>0;){for(var P=0,_=1;(s.words[0]&_)===0&&P<26;++P,_<<=1);if(P>0)for(s.iushrn(P);P-- >0;)f.isOdd()&&f.iadd(v),f.iushrn(1);for(var l=0,y=1;(u.words[0]&y)===0&&l<26;++l,y<<=1);if(l>0)for(u.iushrn(l);l-- >0;)h.isOdd()&&h.iadd(v),h.iushrn(1);s.cmp(u)>=0?(s.isub(u),f.isub(h)):(u.isub(s),h.isub(f))}var U;return s.cmpn(1)===0?U=f:U=h,U.cmpn(0)<0&&U.iadd(t),U},e.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var s=this.clone(),u=t.clone();s.negative=0,u.negative=0;for(var f=0;s.isEven()&&u.isEven();f++)s.iushrn(1),u.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;u.isEven();)u.iushrn(1);var h=s.cmp(u);if(h<0){var v=s;s=u,u=v}else if(h===0||u.cmpn(1)===0)break;s.isub(u)}while(!0);return u.iushln(f)},e.prototype.invm=function(t){return this.egcd(t).a.umod(t)},e.prototype.isEven=function(){return(this.words[0]&1)===0},e.prototype.isOdd=function(){return(this.words[0]&1)===1},e.prototype.andln=function(t){return this.words[0]&t},e.prototype.bincn=function(t){i(typeof t=="number");var s=t%26,u=(t-s)/26,f=1<<s;if(this.length<=u)return this._expand(u+1),this.words[u]|=f,this;for(var h=f,v=u;h!==0&&v<this.length;v++){var P=this.words[v]|0;P+=h,h=P>>>26,P&=67108863,this.words[v]=P}return h!==0&&(this.words[v]=h,this.length++),this},e.prototype.isZero=function(){return this.length===1&&this.words[0]===0},e.prototype.cmpn=function(t){var s=t<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var u;if(this.length>1)u=1;else{s&&(t=-t),i(t<=67108863,"Number is too big");var f=this.words[0]|0;u=f===t?0:f<t?-1:1}return this.negative!==0?-u|0:u},e.prototype.cmp=function(t){if(this.negative!==0&&t.negative===0)return-1;if(this.negative===0&&t.negative!==0)return 1;var s=this.ucmp(t);return this.negative!==0?-s|0:s},e.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var s=0,u=this.length-1;u>=0;u--){var f=this.words[u]|0,h=t.words[u]|0;if(f!==h){f<h?s=-1:f>h&&(s=1);break}}return s},e.prototype.gtn=function(t){return this.cmpn(t)===1},e.prototype.gt=function(t){return this.cmp(t)===1},e.prototype.gten=function(t){return this.cmpn(t)>=0},e.prototype.gte=function(t){return this.cmp(t)>=0},e.prototype.ltn=function(t){return this.cmpn(t)===-1},e.prototype.lt=function(t){return this.cmp(t)===-1},e.prototype.lten=function(t){return this.cmpn(t)<=0},e.prototype.lte=function(t){return this.cmp(t)<=0},e.prototype.eqn=function(t){return this.cmpn(t)===0},e.prototype.eq=function(t){return this.cmp(t)===0},e.red=function(t){return new x(t)},e.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),t.convertTo(this)._forceRed(t)},e.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},e.prototype._forceRed=function(t){return this.red=t,this},e.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},e.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},e.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},e.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},e.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},e.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},e.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},e.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},e.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},e.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},e.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},e.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},e.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},e.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var W={k256:null,p224:null,p192:null,p25519:null};function j(p,t){this.name=p,this.p=new e(t,16),this.n=this.p.bitLength(),this.k=new e(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}j.prototype._tmp=function(){var t=new e(null);return t.words=new Array(Math.ceil(this.n/13)),t},j.prototype.ireduce=function(t){var s=t,u;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),u=s.bitLength();while(u>this.n);var f=u<this.n?-1:s.ucmp(this.p);return f===0?(s.words[0]=0,s.length=1):f>0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},j.prototype.split=function(t,s){t.iushrn(this.n,0,s)},j.prototype.imulK=function(t){return t.imul(this.k)};function Z(){j.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}o(Z,j),Z.prototype.split=function(t,s){for(var u=4194303,f=Math.min(t.length,9),h=0;h<f;h++)s.words[h]=t.words[h];if(s.length=f,t.length<=9){t.words[0]=0,t.length=1;return}var v=t.words[9];for(s.words[s.length++]=v&u,h=10;h<t.length;h++){var P=t.words[h]|0;t.words[h-10]=(P&u)<<4|v>>>22,v=P}v>>>=22,t.words[h-10]=v,v===0&&t.length>10?t.length-=10:t.length-=9},Z.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var s=0,u=0;u<t.length;u++){var f=t.words[u]|0;s+=f*977,t.words[u]=s&67108863,s=f*64+(s/67108864|0)}return t.words[t.length-1]===0&&(t.length--,t.words[t.length-1]===0&&t.length--),t};function w(){j.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}o(w,j);function b(){j.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}o(b,j);function k(){j.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}o(k,j),k.prototype.imulK=function(t){for(var s=0,u=0;u<t.length;u++){var f=(t.words[u]|0)*19+s,h=f&67108863;f>>>=26,t.words[u]=h,s=f}return s!==0&&(t.words[t.length++]=s),t},e._prime=function(t){if(W[t])return W[t];var s;if(t==="k256")s=new Z;else if(t==="p224")s=new w;else if(t==="p192")s=new b;else if(t==="p25519")s=new k;else throw new Error("Unknown prime "+t);return W[t]=s,s};function x(p){if(typeof p=="string"){var t=e._prime(p);this.m=t.p,this.prime=t}else i(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}x.prototype._verify1=function(t){i(t.negative===0,"red works only with positives"),i(t.red,"red works only with red numbers")},x.prototype._verify2=function(t,s){i((t.negative|s.negative)===0,"red works only with positives"),i(t.red&&t.red===s.red,"red works only with red numbers")},x.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(m(t,t.umod(this.m)._forceRed(this)),t)},x.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},x.prototype.add=function(t,s){this._verify2(t,s);var u=t.add(s);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},x.prototype.iadd=function(t,s){this._verify2(t,s);var u=t.iadd(s);return u.cmp(this.m)>=0&&u.isub(this.m),u},x.prototype.sub=function(t,s){this._verify2(t,s);var u=t.sub(s);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},x.prototype.isub=function(t,s){this._verify2(t,s);var u=t.isub(s);return u.cmpn(0)<0&&u.iadd(this.m),u},x.prototype.shl=function(t,s){return this._verify1(t),this.imod(t.ushln(s))},x.prototype.imul=function(t,s){return this._verify2(t,s),this.imod(t.imul(s))},x.prototype.mul=function(t,s){return this._verify2(t,s),this.imod(t.mul(s))},x.prototype.isqr=function(t){return this.imul(t,t.clone())},x.prototype.sqr=function(t){return this.mul(t,t)},x.prototype.sqrt=function(t){if(t.isZero())return t.clone();var s=this.m.andln(3);if(i(s%2===1),s===3){var u=this.m.add(new e(1)).iushrn(2);return this.pow(t,u)}for(var f=this.m.subn(1),h=0;!f.isZero()&&f.andln(1)===0;)h++,f.iushrn(1);i(!f.isZero());var v=new e(1).toRed(this),P=v.redNeg(),_=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new e(2*l*l).toRed(this);this.pow(l,_).cmp(P)!==0;)l.redIAdd(P);for(var y=this.pow(l,f),U=this.pow(t,f.addn(1).iushrn(1)),B=this.pow(t,f),$=h;B.cmp(v)!==0;){for(var K=B,V=0;K.cmp(v)!==0;V++)K=K.redSqr();i(V<$);var J=this.pow(y,new e(1).iushln($-V-1));U=U.redMul(J),y=J.redSqr(),B=B.redMul(y),$=V}return U},x.prototype.invm=function(t){var s=t._invmp(this.m);return s.negative!==0?(s.negative=0,this.imod(s).redNeg()):this.imod(s)},x.prototype.pow=function(t,s){if(s.isZero())return new e(1).toRed(this);if(s.cmpn(1)===0)return t.clone();var u=4,f=new Array(1<<u);f[0]=new e(1).toRed(this),f[1]=t;for(var h=2;h<f.length;h++)f[h]=this.mul(f[h-1],t);var v=f[0],P=0,_=0,l=s.bitLength()%26;for(l===0&&(l=26),h=s.length-1;h>=0;h--){for(var y=s.words[h],U=l-1;U>=0;U--){var B=y>>U&1;if(v!==f[0]&&(v=this.sqr(v)),B===0&&P===0){_=0;continue}P<<=1,P|=B,_++,!(_!==u&&(h!==0||U!==0))&&(v=this.mul(v,f[P]),_=0,P=0)}l=26}return v},x.prototype.convertTo=function(t){var s=t.umod(this.m);return s===t?s.clone():s},x.prototype.convertFrom=function(t){var s=t.clone();return s.red=null,s},e.mont=function(t){return new C(t)};function C(p){x.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new e(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}o(C,x),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var s=this.imod(t.mul(this.rinv));return s.red=null,s},C.prototype.imul=function(t,s){if(t.isZero()||s.isZero())return t.words[0]=0,t.length=1,t;var u=t.imul(s),f=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=u.isub(f).iushrn(this.shift),v=h;return h.cmp(this.m)>=0?v=h.isub(this.m):h.cmpn(0)<0&&(v=h.iadd(this.m)),v._forceRed(this)},C.prototype.mul=function(t,s){if(t.isZero()||s.isZero())return new e(0)._forceRed(this);var u=t.mul(s),f=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=u.isub(f).iushrn(this.shift),v=h;return h.cmp(this.m)>=0?v=h.isub(this.m):h.cmpn(0)<0&&(v=h.iadd(this.m)),v._forceRed(this)},C.prototype.invm=function(t){var s=this.imod(t._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof Ui>"u"||Ui,Nr)});import{SuiClient as vo}from"@mysten/sui/client";import{normalizeSuiAddress as Mo}from"@mysten/sui/utils";import{SuiPriceServiceConnection as bo}from"@pythnetwork/pyth-sui-js";import{SdkWrapper as yo}from"@cetusprotocol/common-sdk";import{CetusClmmSDK as ko}from"@cetusprotocol/sui-clmm-sdk";import{AggregatorClient as So,Env as qr}from"@cetusprotocol/aggregator-sdk";import{FullRpcUrlMainnet as Hr}from"@cetusprotocol/common-sdk";var rr={full_rpc_url:Hr,env:"mainnet",aggregator_url:"https://api-sui.cetus.zone/router_v3",margin_trading:{package_id:"0xa079129c989dacac4f5ccb7b2bb2b8f233b13694c465466a344e2e095e987407",published_at:"0xa079129c989dacac4f5ccb7b2bb2b8f233b13694c465466a344e2e095e987407",version:0,config:{versioned_id:"0x85d30849a1e172e1f90bb42e22ed87457a8110dad7658d51c806baa84f5dcd94",admin_cap_id:"0xdae1da9a2bacb4738411365e9719b739b655ce6b737155ff58137b78c944112a",global_config_id:"0x267de967e72360eb09837bb595a0c6b54bb98a2a1ae47436ccab4a99e6b84f25",markets:"0xe0986f697a300da740d384e64c2ba010aa9caf37a54ed0cc8b4098c4d4e592d0",markets_table_id:"0xe9dd2dbc3d68c00f297dd84e57ad28f6a504effbf6b1b869b9e4138ead14c731"}},suilend:{package_id:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf",published_at:"0xe37cc7bb50fd9b6dbd3873df66fa2c554e973697f50ef97707311dc78bd08444",config:{lending_market:[{name:"Main market",slug:"main",id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",owner_cap_id:"0xf7a4defe0b6566b6a2674a02a0c61c9f99bd012eed21bc741a069eaa82d35927"},{name:"STEAMM LM",slug:"steamm-lm",id:"0xc1888ec1b81a414e427a44829310508352aec38252ee0daa9f8b181b6947de9f",type:"0x0a071f4976abae1a7f722199cf0bfcbe695ef9408a878e7d12a7ca87b7e582a6::lp_rewards::LP_REWARDS",owner_cap_id:"0x55a0f33b24e091830302726c8cfbff8cf8abd2ec1f83a4e6f4bf51c7ba3ad5ab",is_hidden:!0}],lending_market_id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",lending_market_type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",api_url:"https://d10td5ybgrf39v.cloudfront.net"}}};import{CACHE_TIME_5MIN as Yr,d as ae,getPackagerConfigs as Le}from"@cetusprotocol/common-sdk";import{Transaction as Ne}from"@mysten/sui/transactions";import{addHexPrefix as nr,d as se,getObjectFields as lr}from"@cetusprotocol/common-sdk";import{parseObligation as Vr}from"@suilend/sdk/parsers/obligation";import{getNetAprPercent as Xr,getTotalAprPercent as or,Side as sr,getFilteredRewards as ar}from"@suilend/sdk";var yi=n=>{let r=lr(n),{open_permissions_pause:i,close_permissions_pause:o,deposit_permissions_pause:e,withdraw_permissions_pause:a,borrow_permissions_pause:d,repay_permissions_pause:c}=Pi(r.permissions.toString(2));return{market_id:r.id.id,base_token:nr(r.base_token.fields.name),quote_token:nr(r.quote_token.fields.name),max_long_leverage:se(r.max_long_leverage).div(10**6).toString(),max_short_leverage:se(r.max_short_leverage).div(10**6).toString(),open_fee_rate:se(r.open_fee_rate).div(10**6).toString(),close_fee_rate:se(r.close_fee_rate).div(10**6).toString(),open_permissions_pause:i,close_permissions_pause:o,deposit_permissions_pause:e,withdraw_permissions_pause:a,borrow_permissions_pause:d,repay_permissions_pause:c}},ki=(n,r)=>{let i=lr(n);return{created_at:i.created_ts,position_id:i.id.id,init_deposit_amount:i.init_deposit_amount,is_long:i.is_long,lending_market_id:i.lending_market_id,obligation_owner_cap:i.obligation_owner_cap.fields.obligation_id,market_id:i.market_id,position_cap_id:r}},Si=(n,r,i,o,e)=>{let a=Vr(r,i),d=Xr(a,e,o);if(!a.deposits||a.deposits.length===0)throw new Error("No deposits found in obligation data");let c=a.deposits[0],g=se(c.reserve.config.closeLtvPct).div(100).toString(),m=se(c.reserve.config.openLtvPct).div(100).toString(),M=a.depositedAmountUsd.gt(0)?a.borrowedAmountUsd.div(a.depositedAmountUsd).toString():"0",S=se(1).div(g).toString(),A=se(g).sub(M).toString(),T="0",D="0",R="0",N="0";if(a.borrows&&a.borrows.length>0){let L=a.borrows[0],O=e[L?.coinType];O&&(T=or(sr.BORROW,L?.reserve.borrowAprPercent,ar(O.borrow)).toString()),R=L.borrowedAmountUsd.toString(),N=L.borrowedAmount.toString()}if(a.deposits&&a.deposits.length>0){let L=a.deposits[0],O=e[L?.coinType];O&&(D=or(sr.DEPOSIT,L?.reserve.depositAprPercent,ar(O.deposit)).toString())}return{...n,...a,origin_obligation:r,net_apr_percent:d.toString(),supplied_apr:se(D).toString(),borrowed_apr:se(T).toString(),close_ltv:g,open_ltv:m,cr:M,ltr:S,liquidation_buffer:A,deposited_amount_usd:c.depositedAmountUsd.toString(),borrowed_amount_usd:R,deposited_amount:c.depositedAmount.toString(),borrowed_amount:N}},Pi=n=>{let r=n.length,i=n.substring(r-1,r)==="0",o=n.substring(r-2,r-1)==="0",e=n.substring(r-3,r-2)==="0",a=n.substring(r-4,r-3)==="0",d=n.substring(r-5,r-4)==="0",c=n.substring(r-6,r-5)==="0";return{open_permissions_pause:i,close_permissions_pause:o,deposit_permissions_pause:e,withdraw_permissions_pause:d,borrow_permissions_pause:a,repay_permissions_pause:c}};import{getFilteredRewards as he,getStakingYieldAprPercent as ur,getTotalAprPercent as Ie,Side as ke}from"@suilend/sdk";import{BaseError as Jr}from"@cetusprotocol/common-sdk";var Re=class extends Jr{constructor(r,i,o){super(r,i||"UnknownError",o)}static isCrossSwapErrorCode(r,i){return this.isErrorCode(r,i)}},Gt=(n,r,i)=>{let o={...i,stack:r instanceof Error?r.stack:void 0};throw r instanceof Error?new Re(r.message,n,o):new Re(r,n,o)};var Ee=class{constructor(r){this.createMarket=async r=>{let{package_id:i}=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:e,markets:a,global_config_id:d}=Le(this._sdk.sdkOptions.margin_trading),c=new Ne;return c.moveCall({target:`${i}::market::create_market`,arguments:[c.object(e),c.object(d),c.object(a),c.pure.u64(r.open_fee_rate),c.pure.u64(r.close_fee_rate),c.object(o)],typeArguments:[r.base_token,r.quote_token]}),c};this.updateMarketFeeRate=async r=>{let{package_id:i}=this._sdk.sdkOptions.margin_trading,{versioned_id:o,admin_cap_id:e}=Le(this._sdk.sdkOptions.margin_trading),{market_id:a,open_fee_rate:d,close_fee_rate:c}=r,g=new Ne;return g.moveCall({target:`${i}::market::set_fee_rate`,arguments:[g.object(e),g.object(a),g.pure.u64(d),g.pure.u64(c),g.object(o)],typeArguments:[]}),g};this.claimMarketFees=async(r,i)=>{let{package_id:o}=this._sdk.sdkOptions.margin_trading,{versioned_id:e,admin_cap_id:a}=Le(this._sdk.sdkOptions.margin_trading),d=i||new Ne,{base_token:c,quote_token:g}=await this._sdk.MarketModules.getMarketInfo(r);return d.moveCall({target:`${o}::market::claim_fees`,arguments:[d.object(a),d.object(r),d.object(e)],typeArguments:[c,g]}),d};this.claimAllMarketFees=async r=>{let i=new Ne;for(let o=0;o<r.length;o++){let e=r[o];this.claimMarketFees(e,i)}return i};this.getMarginTradingConfig=async()=>{let{package_id:r}=this._sdk.sdkOptions.margin_trading;try{let i=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${r}::versioned::InitEvent`}),o=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${r}::admin_cap::InitEvent`}),e=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${r}::config::InitEvent`}),d=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${r}::market::InitEvent`})).data[0].parsedJson.markets_id,g=(await this._sdk.FullClient.getObject({id:d,options:{showContent:!0}})).data.content.fields.list.fields.id.id;return{versioned_id:i.data[0].parsedJson.versioned_id,admin_cap_id:o.data[0].parsedJson.admin_cap_id,global_config_id:e.data[0].parsedJson.global_config_id,markets:d,markets_table_id:g}}catch(i){return Gt("FetchError",i),{versioned_id:"",admin_cap_id:"",global_config_id:"",markets_table_id:"",markets:""}}};this.getMarketList=async(r=!1)=>{let o=this._sdk.getCache("margin_trading_markets_list",r);if(o)return o;let{package_id:e}=this._sdk.sdkOptions.margin_trading,a=[];try{let d=`${e}::market::CreateMarketEvent`,g=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:d})).data.map(m=>m.parsedJson.market_id);return g.length>0?((await this._sdk.FullClient.batchGetObjects(g,{showContent:!0,showType:!0})).forEach(M=>{let S=yi(M),A=`margin_trading_market_info_${S.market_id}`;this._sdk.updateCache(A,S),a.push(S)}),a):(Gt("MarketNotFound","Market not found"),[])}catch(d){return Gt("FetchError",d),[]}};this.getMarketInfo=async(r,i=!1)=>{let o=`margin_trading_market_info_${r}`,e=this._sdk.getCache(o,i);if(e)return e;try{let a=await this._sdk.FullClient.getObject({id:r,options:{showContent:!0}}),d=yi(a);return this._sdk.updateCache(o,d,Yr),d}catch(a){return Gt("FetchError",a),{}}};this.getMarketSuilendInfo=async r=>{try{let{base_token:i,quote_token:o}=await this.getMarketInfo(r),{lending_market_id:e}=Le(this._sdk.sdkOptions.suilend),{allLendingMarketData:a,lstAprPercentMap:d}=await this._sdk.SuiLendModule.getLendingMarketData(!0),{base_reserve_map_info:c,quote_reserve_map_info:g}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(i,o,a);console.log("\u{1F680}\u{1F680}\u{1F680} ~ marketModules.ts:188 ~ MarketModules ~ base_reserve_map_info:",c);let m=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:a,lstAprPercentMap:d},!0),M=m[e].rewardMap[i],S=m[e].rewardMap[o],{depositedAmountUsd:A,borrowedAmountUsd:T,depositAprPercent:D,borrowAprPercent:R,depositedAmount:N,borrowedAmount:L}=c,{depositLimit:O,borrowLimit:F}=c.config,{depositedAmountUsd:q,borrowedAmountUsd:W,depositAprPercent:j,borrowAprPercent:Z,depositedAmount:w,borrowedAmount:b}=g,{depositLimit:k,borrowLimit:x}=g.config,C=Ie(ke.DEPOSIT,D,he(M.deposit),ur(ke.DEPOSIT,i,d)),p=Ie(ke.BORROW,R,he(M.borrow)),t=Ie(ke.DEPOSIT,j,he(S.deposit),ur(ke.DEPOSIT,i,d)),s=Ie(ke.BORROW,Z,he(S.borrow)),u=ae(q.toString()).sub(W.toString()).toString(),f=ae(A.toString()).sub(T.toString()).toString(),h=ae(O.toString()).sub(ae(N.toString())).toString(),v=ae(F.toString()).sub(ae(L.toString())).toString(),P=ae(k.toString()).sub(ae(w.toString())).toString(),_=ae(x.toString()).sub(ae(b.toString())).toString();return{long_liquidity:u,short_liquidity:f,base_total_deposit_apr_percent:C.toString(),base_total_borrow_apr_percent:p.toString(),quote_total_deposit_apr_percent:t.toString(),quote_total_borrow_apr_percent:s.toString(),base_token_available_deposit_amount:h,base_token_available_borrow_amount:v,quote_token_available_deposit_amount:P,quote_token_available_borrow_amount:_,base_deposit_rewards:he(M.deposit),quote_deposit_rewards:he(S.deposit),base_borrow_rewards:he(M.borrow),quote_borrow_rewards:he(S.borrow),base_deposit_apr_percent:D.toString(),base_borrow_apr_percent:R.toString(),quote_deposit_apr_percent:j.toString(),quote_borrow_apr_percent:Z.toString(),obligations:m[e],base_reserve_map_info:c,quote_reserve_map_info:g}}catch(i){return Gt("FetchError",i),{}}};this._sdk=r}};import{CLOCK_ADDRESS as Se,getPackagerConfigs as Jt}from"@cetusprotocol/common-sdk";import{Transaction as Ht}from"@mysten/sui/transactions";var Be=class{constructor(r){this.queryGlobalPermissions=async()=>{let r=this._sdk.sdkOptions.margin_trading,{global_config_id:i}=Jt(r),o=await this._sdk.FullClient.getObject({id:i,options:{showContent:!0}});if(o){let e=o.data.content.fields.permissions.toString(2),{open_permissions_pause:a,close_permissions_pause:d,deposit_permissions_pause:c,withdraw_permissions_pause:g,borrow_permissions_pause:m,repay_permissions_pause:M}=Pi(e);return{open_permissions_pause:a,close_permissions_pause:d,deposit_permissions_pause:c,withdraw_permissions_pause:g,borrow_permissions_pause:m,repay_permissions_pause:M}}};this.updateGlobalPermissions=async r=>{let i=new Ht;return this.updateGlobalOpenPositionPermissions(r,i),this.updateGlobalClosePositionPermissions(r,i),this.updateGlobalDepositPermissions(r,i),this.updateGlobalBorrowPermissions(r,i),this.updateGlobalWithdrawPermissions(r,i),this.updateGlobalRepayPermissions(r,i),i};this.updateGlobalOpenPositionPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_open_position_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalClosePositionPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_close_position_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalDepositPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_deposit_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalBorrowPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_borrow_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalWithdrawPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_withdraw_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateGlobalRepayPermissions=async(r,i)=>{let o=this._sdk.sdkOptions.margin_trading,{global_config_id:e,versioned_id:a,admin_cap_id:d}=Jt(o),c=i||new Ht;return c.moveCall({target:`${o.published_at}::config::update_global_repay_permissions`,arguments:[c.object(d),c.object(e),c.pure.bool(r),c.object(Se),c.object(a)],typeArguments:[]}),c};this.updateMarketCreatePositionPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_open_position_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketClosePositionPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_close_position_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketDepositPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_deposit_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketWithdrawPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_withdraw_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketBorrowPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_borrow_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketRepayPermissions=async(r,i,o)=>{let e=this._sdk.sdkOptions.margin_trading,{versioned_id:a,admin_cap_id:d}=Jt(e),c=o||new Ht;return c.moveCall({target:`${e.published_at}::market::update_market_repay_permission`,arguments:[c.object(d),c.object(r),c.pure.bool(i),c.object(a)],typeArguments:[]}),c};this.updateMarketPermissions=async(r,i,o)=>{let e=o||new Ht;return this.updateMarketCreatePositionPermissions(r,i,e),this.updateMarketClosePositionPermissions(r,i,e),this.updateMarketDepositPermissions(r,i,e),this.updateMarketWithdrawPermissions(r,i,e),this.updateMarketBorrowPermissions(r,i,e),this.updateMarketRepayPermissions(r,i,e),e};this._sdk=r}};import{CACHE_TIME_24H as Vn,CLOCK_ADDRESS as be,CoinAssist as Q,d as I,getObjectFields as Ar,getPackagerConfigs as jt,removeHexPrefix as Ce,SUI_SYSTEM_STATE_OBJECT_ID as Cr,U64_MAX as He}from"@cetusprotocol/common-sdk";var Qr=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Ci=Math.ceil,Qt=Math.floor,Vt="[BigNumber Error] ",cr=Vt+"Number primitive has more than 15 significant digits: ",ie=1e14,tt=14,xi=9007199254740991,Ti=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],pe=1e7,Wt=1e9;function fr(n){var r,i,o,e=O.prototype={constructor:O,toString:null,valueOf:null},a=new O(1),d=20,c=4,g=-7,m=21,M=-1e7,S=1e7,A=!1,T=1,D=0,R={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},N="0123456789abcdefghijklmnopqrstuvwxyz",L=!0;function O(w,b){var k,x,C,p,t,s,u,f,h=this;if(!(h instanceof O))return new O(w,b);if(b==null){if(w&&w._isBigNumber===!0){h.s=w.s,!w.c||w.e>S?h.c=h.e=null:w.e<M?h.c=[h.e=0]:(h.e=w.e,h.c=w.c.slice());return}if((s=typeof w=="number")&&w*0==0){if(h.s=1/w<0?(w=-w,-1):1,w===~~w){for(p=0,t=w;t>=10;t/=10,p++);p>S?h.c=h.e=null:(h.e=p,h.c=[w]);return}f=String(w)}else{if(!Qr.test(f=String(w)))return o(h,f,s);h.s=f.charCodeAt(0)==45?(f=f.slice(1),-1):1}(p=f.indexOf("."))>-1&&(f=f.replace(".","")),(t=f.search(/e/i))>0?(p<0&&(p=t),p+=+f.slice(t+1),f=f.substring(0,t)):p<0&&(p=f.length)}else{if(ct(b,2,N.length,"Base"),b==10&&L)return h=new O(w),j(h,d+h.e+1,c);if(f=String(w),s=typeof w=="number"){if(w*0!=0)return o(h,f,s,b);if(h.s=1/w<0?(f=f.slice(1),-1):1,O.DEBUG&&f.replace(/^0\.0*|\./,"").length>15)throw Error(cr+w)}else h.s=f.charCodeAt(0)===45?(f=f.slice(1),-1):1;for(k=N.slice(0,b),p=t=0,u=f.length;t<u;t++)if(k.indexOf(x=f.charAt(t))<0){if(x=="."){if(t>p){p=u;continue}}else if(!C&&(f==f.toUpperCase()&&(f=f.toLowerCase())||f==f.toLowerCase()&&(f=f.toUpperCase()))){C=!0,t=-1,p=0;continue}return o(h,String(w),s,b)}s=!1,f=i(f,b,10,h.s),(p=f.indexOf("."))>-1?f=f.replace(".",""):p=f.length}for(t=0;f.charCodeAt(t)===48;t++);for(u=f.length;f.charCodeAt(--u)===48;);if(f=f.slice(t,++u)){if(u-=t,s&&O.DEBUG&&u>15&&(w>xi||w!==Qt(w)))throw Error(cr+h.s*w);if((p=p-t-1)>S)h.c=h.e=null;else if(p<M)h.c=[h.e=0];else{if(h.e=p,h.c=[],t=(p+1)%tt,p<0&&(t+=tt),t<u){for(t&&h.c.push(+f.slice(0,t)),u-=tt;t<u;)h.c.push(+f.slice(t,t+=tt));t=tt-(f=f.slice(t)).length}else t-=u;for(;t--;f+="0");h.c.push(+f)}}else h.c=[h.e=0]}O.clone=fr,O.ROUND_UP=0,O.ROUND_DOWN=1,O.ROUND_CEIL=2,O.ROUND_FLOOR=3,O.ROUND_HALF_UP=4,O.ROUND_HALF_DOWN=5,O.ROUND_HALF_EVEN=6,O.ROUND_HALF_CEIL=7,O.ROUND_HALF_FLOOR=8,O.EUCLID=9,O.config=O.set=function(w){var b,k;if(w!=null)if(typeof w=="object"){if(w.hasOwnProperty(b="DECIMAL_PLACES")&&(k=w[b],ct(k,0,Wt,b),d=k),w.hasOwnProperty(b="ROUNDING_MODE")&&(k=w[b],ct(k,0,8,b),c=k),w.hasOwnProperty(b="EXPONENTIAL_AT")&&(k=w[b],k&&k.pop?(ct(k[0],-Wt,0,b),ct(k[1],0,Wt,b),g=k[0],m=k[1]):(ct(k,-Wt,Wt,b),g=-(m=k<0?-k:k))),w.hasOwnProperty(b="RANGE"))if(k=w[b],k&&k.pop)ct(k[0],-Wt,-1,b),ct(k[1],1,Wt,b),M=k[0],S=k[1];else if(ct(k,-Wt,Wt,b),k)M=-(S=k<0?-k:k);else throw Error(Vt+b+" cannot be zero: "+k);if(w.hasOwnProperty(b="CRYPTO"))if(k=w[b],k===!!k)if(k)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))A=k;else throw A=!k,Error(Vt+"crypto unavailable");else A=k;else throw Error(Vt+b+" not true or false: "+k);if(w.hasOwnProperty(b="MODULO_MODE")&&(k=w[b],ct(k,0,9,b),T=k),w.hasOwnProperty(b="POW_PRECISION")&&(k=w[b],ct(k,0,Wt,b),D=k),w.hasOwnProperty(b="FORMAT"))if(k=w[b],typeof k=="object")R=k;else throw Error(Vt+b+" not an object: "+k);if(w.hasOwnProperty(b="ALPHABET"))if(k=w[b],typeof k=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(k))L=k.slice(0,10)=="0123456789",N=k;else throw Error(Vt+b+" invalid: "+k)}else throw Error(Vt+"Object expected: "+w);return{DECIMAL_PLACES:d,ROUNDING_MODE:c,EXPONENTIAL_AT:[g,m],RANGE:[M,S],CRYPTO:A,MODULO_MODE:T,POW_PRECISION:D,FORMAT:R,ALPHABET:N}},O.isBigNumber=function(w){if(!w||w._isBigNumber!==!0)return!1;if(!O.DEBUG)return!0;var b,k,x=w.c,C=w.e,p=w.s;t:if({}.toString.call(x)=="[object Array]"){if((p===1||p===-1)&&C>=-Wt&&C<=Wt&&C===Qt(C)){if(x[0]===0){if(C===0&&x.length===1)return!0;break t}if(b=(C+1)%tt,b<1&&(b+=tt),String(x[0]).length==b){for(b=0;b<x.length;b++)if(k=x[b],k<0||k>=ie||k!==Qt(k))break t;if(k!==0)return!0}}}else if(x===null&&C===null&&(p===null||p===1||p===-1))return!0;throw Error(Vt+"Invalid BigNumber: "+w)},O.maximum=O.max=function(){return q(arguments,-1)},O.minimum=O.min=function(){return q(arguments,1)},O.random=(function(){var w=9007199254740992,b=Math.random()*w&2097151?function(){return Qt(Math.random()*w)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(k){var x,C,p,t,s,u=0,f=[],h=new O(a);if(k==null?k=d:ct(k,0,Wt),t=Ci(k/tt),A)if(crypto.getRandomValues){for(x=crypto.getRandomValues(new Uint32Array(t*=2));u<t;)s=x[u]*131072+(x[u+1]>>>11),s>=9e15?(C=crypto.getRandomValues(new Uint32Array(2)),x[u]=C[0],x[u+1]=C[1]):(f.push(s%1e14),u+=2);u=t/2}else if(crypto.randomBytes){for(x=crypto.randomBytes(t*=7);u<t;)s=(x[u]&31)*281474976710656+x[u+1]*1099511627776+x[u+2]*4294967296+x[u+3]*16777216+(x[u+4]<<16)+(x[u+5]<<8)+x[u+6],s>=9e15?crypto.randomBytes(7).copy(x,u):(f.push(s%1e14),u+=7);u=t/7}else throw A=!1,Error(Vt+"crypto unavailable");if(!A)for(;u<t;)s=b(),s<9e15&&(f[u++]=s%1e14);for(t=f[--u],k%=tt,t&&k&&(s=Ti[tt-k],f[u]=Qt(t/s)*s);f[u]===0;f.pop(),u--);if(u<0)f=[p=0];else{for(p=-1;f[0]===0;f.splice(0,1),p-=tt);for(u=1,s=f[0];s>=10;s/=10,u++);u<tt&&(p-=tt-u)}return h.e=p,h.c=f,h}})(),O.sum=function(){for(var w=1,b=arguments,k=new O(b[0]);w<b.length;)k=k.plus(b[w++]);return k},i=(function(){var w="0123456789";function b(k,x,C,p){for(var t,s=[0],u,f=0,h=k.length;f<h;){for(u=s.length;u--;s[u]*=x);for(s[0]+=p.indexOf(k.charAt(f++)),t=0;t<s.length;t++)s[t]>C-1&&(s[t+1]==null&&(s[t+1]=0),s[t+1]+=s[t]/C|0,s[t]%=C)}return s.reverse()}return function(k,x,C,p,t){var s,u,f,h,v,P,_,l,y=k.indexOf("."),U=d,B=c;for(y>=0&&(h=D,D=0,k=k.replace(".",""),l=new O(x),P=l.pow(k.length-y),D=h,l.c=b(ce(Yt(P.c),P.e,"0"),10,C,w),l.e=l.c.length),_=b(k,x,C,t?(s=N,w):(s=w,N)),f=h=_.length;_[--h]==0;_.pop());if(!_[0])return s.charAt(0);if(y<0?--f:(P.c=_,P.e=f,P.s=p,P=r(P,l,U,B,C),_=P.c,v=P.r,f=P.e),u=f+U+1,y=_[u],h=C/2,v=v||u<0||_[u+1]!=null,v=B<4?(y!=null||v)&&(B==0||B==(P.s<0?3:2)):y>h||y==h&&(B==4||v||B==6&&_[u-1]&1||B==(P.s<0?8:7)),u<1||!_[0])k=v?ce(s.charAt(1),-U,s.charAt(0)):s.charAt(0);else{if(_.length=u,v)for(--C;++_[--u]>C;)_[u]=0,u||(++f,_=[1].concat(_));for(h=_.length;!_[--h];);for(y=0,k="";y<=h;k+=s.charAt(_[y++]));k=ce(k,f,s.charAt(0))}return k}})(),r=(function(){function w(x,C,p){var t,s,u,f,h=0,v=x.length,P=C%pe,_=C/pe|0;for(x=x.slice();v--;)u=x[v]%pe,f=x[v]/pe|0,t=_*u+f*P,s=P*u+t%pe*pe+h,h=(s/p|0)+(t/pe|0)+_*f,x[v]=s%p;return h&&(x=[h].concat(x)),x}function b(x,C,p,t){var s,u;if(p!=t)u=p>t?1:-1;else for(s=u=0;s<p;s++)if(x[s]!=C[s]){u=x[s]>C[s]?1:-1;break}return u}function k(x,C,p,t){for(var s=0;p--;)x[p]-=s,s=x[p]<C[p]?1:0,x[p]=s*t+x[p]-C[p];for(;!x[0]&&x.length>1;x.splice(0,1));}return function(x,C,p,t,s){var u,f,h,v,P,_,l,y,U,B,$,K,V,J,rt,G,it,ft=x.s==C.s?1:-1,et=x.c,X=C.c;if(!et||!et[0]||!X||!X[0])return new O(!x.s||!C.s||(et?X&&et[0]==X[0]:!X)?NaN:et&&et[0]==0||!X?ft*0:ft/0);for(y=new O(ft),U=y.c=[],f=x.e-C.e,ft=p+f+1,s||(s=ie,f=te(x.e/tt)-te(C.e/tt),ft=ft/tt|0),h=0;X[h]==(et[h]||0);h++);if(X[h]>(et[h]||0)&&f--,ft<0)U.push(1),v=!0;else{for(J=et.length,G=X.length,h=0,ft+=2,P=Qt(s/(X[0]+1)),P>1&&(X=w(X,P,s),et=w(et,P,s),G=X.length,J=et.length),V=G,B=et.slice(0,G),$=B.length;$<G;B[$++]=0);it=X.slice(),it=[0].concat(it),rt=X[0],X[1]>=s/2&&rt++;do{if(P=0,u=b(X,B,G,$),u<0){if(K=B[0],G!=$&&(K=K*s+(B[1]||0)),P=Qt(K/rt),P>1)for(P>=s&&(P=s-1),_=w(X,P,s),l=_.length,$=B.length;b(_,B,l,$)==1;)P--,k(_,G<l?it:X,l,s),l=_.length,u=1;else P==0&&(u=P=1),_=X.slice(),l=_.length;if(l<$&&(_=[0].concat(_)),k(B,_,$,s),$=B.length,u==-1)for(;b(X,B,G,$)<1;)P++,k(B,G<$?it:X,$,s),$=B.length}else u===0&&(P++,B=[0]);U[h++]=P,B[0]?B[$++]=et[V]||0:(B=[et[V]],$=1)}while((V++<J||B[0]!=null)&&ft--);v=B[0]!=null,U[0]||U.splice(0,1)}if(s==ie){for(h=1,ft=U[0];ft>=10;ft/=10,h++);j(y,p+(y.e=h+f*tt-1)+1,t,v)}else y.e=f,y.r=+v;return y}})();function F(w,b,k,x){var C,p,t,s,u;if(k==null?k=c:ct(k,0,8),!w.c)return w.toString();if(C=w.c[0],t=w.e,b==null)u=Yt(w.c),u=x==1||x==2&&(t<=g||t>=m)?Fe(u,t):ce(u,t,"0");else if(w=j(new O(w),b,k),p=w.e,u=Yt(w.c),s=u.length,x==1||x==2&&(b<=p||p<=g)){for(;s<b;u+="0",s++);u=Fe(u,p)}else if(b-=t+(x===2&&p>t),u=ce(u,p,"0"),p+1>s){if(--b>0)for(u+=".";b--;u+="0");}else if(b+=p-s,b>0)for(p+1==s&&(u+=".");b--;u+="0");return w.s<0&&C?"-"+u:u}function q(w,b){for(var k,x,C=1,p=new O(w[0]);C<w.length;C++)x=new O(w[C]),(!x.s||(k=Me(p,x))===b||k===0&&p.s===b)&&(p=x);return p}function W(w,b,k){for(var x=1,C=b.length;!b[--C];b.pop());for(C=b[0];C>=10;C/=10,x++);return(k=x+k*tt-1)>S?w.c=w.e=null:k<M?w.c=[w.e=0]:(w.e=k,w.c=b),w}o=(function(){var w=/^(-?)0([xbo])(?=\w[\w.]*$)/i,b=/^([^.]+)\.$/,k=/^\.([^.]+)$/,x=/^-?(Infinity|NaN)$/,C=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(p,t,s,u){var f,h=s?t:t.replace(C,"");if(x.test(h))p.s=isNaN(h)?null:h<0?-1:1;else{if(!s&&(h=h.replace(w,function(v,P,_){return f=(_=_.toLowerCase())=="x"?16:_=="b"?2:8,!u||u==f?P:v}),u&&(f=u,h=h.replace(b,"$1").replace(k,"0.$1")),t!=h))return new O(h,f);if(O.DEBUG)throw Error(Vt+"Not a"+(u?" base "+u:"")+" number: "+t);p.s=null}p.c=p.e=null}})();function j(w,b,k,x){var C,p,t,s,u,f,h,v=w.c,P=Ti;if(v){t:{for(C=1,s=v[0];s>=10;s/=10,C++);if(p=b-C,p<0)p+=tt,t=b,u=v[f=0],h=Qt(u/P[C-t-1]%10);else if(f=Ci((p+1)/tt),f>=v.length)if(x){for(;v.length<=f;v.push(0));u=h=0,C=1,p%=tt,t=p-tt+1}else break t;else{for(u=s=v[f],C=1;s>=10;s/=10,C++);p%=tt,t=p-tt+C,h=t<0?0:Qt(u/P[C-t-1]%10)}if(x=x||b<0||v[f+1]!=null||(t<0?u:u%P[C-t-1]),x=k<4?(h||x)&&(k==0||k==(w.s<0?3:2)):h>5||h==5&&(k==4||x||k==6&&(p>0?t>0?u/P[C-t]:0:v[f-1])%10&1||k==(w.s<0?8:7)),b<1||!v[0])return v.length=0,x?(b-=w.e+1,v[0]=P[(tt-b%tt)%tt],w.e=-b||0):v[0]=w.e=0,w;if(p==0?(v.length=f,s=1,f--):(v.length=f+1,s=P[tt-p],v[f]=t>0?Qt(u/P[C-t]%P[t])*s:0),x)for(;;)if(f==0){for(p=1,t=v[0];t>=10;t/=10,p++);for(t=v[0]+=s,s=1;t>=10;t/=10,s++);p!=s&&(w.e++,v[0]==ie&&(v[0]=1));break}else{if(v[f]+=s,v[f]!=ie)break;v[f--]=0,s=1}for(p=v.length;v[--p]===0;v.pop());}w.e>S?w.c=w.e=null:w.e<M&&(w.c=[w.e=0])}return w}function Z(w){var b,k=w.e;return k===null?w.toString():(b=Yt(w.c),b=k<=g||k>=m?Fe(b,k):ce(b,k,"0"),w.s<0?"-"+b:b)}return e.absoluteValue=e.abs=function(){var w=new O(this);return w.s<0&&(w.s=1),w},e.comparedTo=function(w,b){return Me(this,new O(w,b))},e.decimalPlaces=e.dp=function(w,b){var k,x,C,p=this;if(w!=null)return ct(w,0,Wt),b==null?b=c:ct(b,0,8),j(new O(p),w+p.e+1,b);if(!(k=p.c))return null;if(x=((C=k.length-1)-te(this.e/tt))*tt,C=k[C])for(;C%10==0;C/=10,x--);return x<0&&(x=0),x},e.dividedBy=e.div=function(w,b){return r(this,new O(w,b),d,c)},e.dividedToIntegerBy=e.idiv=function(w,b){return r(this,new O(w,b),0,1)},e.exponentiatedBy=e.pow=function(w,b){var k,x,C,p,t,s,u,f,h,v=this;if(w=new O(w),w.c&&!w.isInteger())throw Error(Vt+"Exponent not an integer: "+Z(w));if(b!=null&&(b=new O(b)),s=w.e>14,!v.c||!v.c[0]||v.c[0]==1&&!v.e&&v.c.length==1||!w.c||!w.c[0])return h=new O(Math.pow(+Z(v),s?w.s*(2-qe(w)):+Z(w))),b?h.mod(b):h;if(u=w.s<0,b){if(b.c?!b.c[0]:!b.s)return new O(NaN);x=!u&&v.isInteger()&&b.isInteger(),x&&(v=v.mod(b))}else{if(w.e>9&&(v.e>0||v.e<-1||(v.e==0?v.c[0]>1||s&&v.c[1]>=24e7:v.c[0]<8e13||s&&v.c[0]<=9999975e7)))return p=v.s<0&&qe(w)?-0:0,v.e>-1&&(p=1/p),new O(u?1/p:p);D&&(p=Ci(D/tt+2))}for(s?(k=new O(.5),u&&(w.s=1),f=qe(w)):(C=Math.abs(+Z(w)),f=C%2),h=new O(a);;){if(f){if(h=h.times(v),!h.c)break;p?h.c.length>p&&(h.c.length=p):x&&(h=h.mod(b))}if(C){if(C=Qt(C/2),C===0)break;f=C%2}else if(w=w.times(k),j(w,w.e+1,1),w.e>14)f=qe(w);else{if(C=+Z(w),C===0)break;f=C%2}v=v.times(v),p?v.c&&v.c.length>p&&(v.c.length=p):x&&(v=v.mod(b))}return x?h:(u&&(h=a.div(h)),b?h.mod(b):p?j(h,D,c,t):h)},e.integerValue=function(w){var b=new O(this);return w==null?w=c:ct(w,0,8),j(b,b.e+1,w)},e.isEqualTo=e.eq=function(w,b){return Me(this,new O(w,b))===0},e.isFinite=function(){return!!this.c},e.isGreaterThan=e.gt=function(w,b){return Me(this,new O(w,b))>0},e.isGreaterThanOrEqualTo=e.gte=function(w,b){return(b=Me(this,new O(w,b)))===1||b===0},e.isInteger=function(){return!!this.c&&te(this.e/tt)>this.c.length-2},e.isLessThan=e.lt=function(w,b){return Me(this,new O(w,b))<0},e.isLessThanOrEqualTo=e.lte=function(w,b){return(b=Me(this,new O(w,b)))===-1||b===0},e.isNaN=function(){return!this.s},e.isNegative=function(){return this.s<0},e.isPositive=function(){return this.s>0},e.isZero=function(){return!!this.c&&this.c[0]==0},e.minus=function(w,b){var k,x,C,p,t=this,s=t.s;if(w=new O(w,b),b=w.s,!s||!b)return new O(NaN);if(s!=b)return w.s=-b,t.plus(w);var u=t.e/tt,f=w.e/tt,h=t.c,v=w.c;if(!u||!f){if(!h||!v)return h?(w.s=-b,w):new O(v?t:NaN);if(!h[0]||!v[0])return v[0]?(w.s=-b,w):new O(h[0]?t:c==3?-0:0)}if(u=te(u),f=te(f),h=h.slice(),s=u-f){for((p=s<0)?(s=-s,C=h):(f=u,C=v),C.reverse(),b=s;b--;C.push(0));C.reverse()}else for(x=(p=(s=h.length)<(b=v.length))?s:b,s=b=0;b<x;b++)if(h[b]!=v[b]){p=h[b]<v[b];break}if(p&&(C=h,h=v,v=C,w.s=-w.s),b=(x=v.length)-(k=h.length),b>0)for(;b--;h[k++]=0);for(b=ie-1;x>s;){if(h[--x]<v[x]){for(k=x;k&&!h[--k];h[k]=b);--h[k],h[x]+=ie}h[x]-=v[x]}for(;h[0]==0;h.splice(0,1),--f);return h[0]?W(w,h,f):(w.s=c==3?-1:1,w.c=[w.e=0],w)},e.modulo=e.mod=function(w,b){var k,x,C=this;return w=new O(w,b),!C.c||!w.s||w.c&&!w.c[0]?new O(NaN):!w.c||C.c&&!C.c[0]?new O(C):(T==9?(x=w.s,w.s=1,k=r(C,w,0,3),w.s=x,k.s*=x):k=r(C,w,0,T),w=C.minus(k.times(w)),!w.c[0]&&T==1&&(w.s=C.s),w)},e.multipliedBy=e.times=function(w,b){var k,x,C,p,t,s,u,f,h,v,P,_,l,y,U,B=this,$=B.c,K=(w=new O(w,b)).c;if(!$||!K||!$[0]||!K[0])return!B.s||!w.s||$&&!$[0]&&!K||K&&!K[0]&&!$?w.c=w.e=w.s=null:(w.s*=B.s,!$||!K?w.c=w.e=null:(w.c=[0],w.e=0)),w;for(x=te(B.e/tt)+te(w.e/tt),w.s*=B.s,u=$.length,v=K.length,u<v&&(l=$,$=K,K=l,C=u,u=v,v=C),C=u+v,l=[];C--;l.push(0));for(y=ie,U=pe,C=v;--C>=0;){for(k=0,P=K[C]%U,_=K[C]/U|0,t=u,p=C+t;p>C;)f=$[--t]%U,h=$[t]/U|0,s=_*f+h*P,f=P*f+s%U*U+l[p]+k,k=(f/y|0)+(s/U|0)+_*h,l[p--]=f%y;l[p]=k}return k?++x:l.splice(0,1),W(w,l,x)},e.negated=function(){var w=new O(this);return w.s=-w.s||null,w},e.plus=function(w,b){var k,x=this,C=x.s;if(w=new O(w,b),b=w.s,!C||!b)return new O(NaN);if(C!=b)return w.s=-b,x.minus(w);var p=x.e/tt,t=w.e/tt,s=x.c,u=w.c;if(!p||!t){if(!s||!u)return new O(C/0);if(!s[0]||!u[0])return u[0]?w:new O(s[0]?x:C*0)}if(p=te(p),t=te(t),s=s.slice(),C=p-t){for(C>0?(t=p,k=u):(C=-C,k=s),k.reverse();C--;k.push(0));k.reverse()}for(C=s.length,b=u.length,C-b<0&&(k=u,u=s,s=k,b=C),C=0;b;)C=(s[--b]=s[b]+u[b]+C)/ie|0,s[b]=ie===s[b]?0:s[b]%ie;return C&&(s=[C].concat(s),++t),W(w,s,t)},e.precision=e.sd=function(w,b){var k,x,C,p=this;if(w!=null&&w!==!!w)return ct(w,1,Wt),b==null?b=c:ct(b,0,8),j(new O(p),w,b);if(!(k=p.c))return null;if(C=k.length-1,x=C*tt+1,C=k[C]){for(;C%10==0;C/=10,x--);for(C=k[0];C>=10;C/=10,x++);}return w&&p.e+1>x&&(x=p.e+1),x},e.shiftedBy=function(w){return ct(w,-xi,xi),this.times("1e"+w)},e.squareRoot=e.sqrt=function(){var w,b,k,x,C,p=this,t=p.c,s=p.s,u=p.e,f=d+4,h=new O("0.5");if(s!==1||!t||!t[0])return new O(!s||s<0&&(!t||t[0])?NaN:t?p:1/0);if(s=Math.sqrt(+Z(p)),s==0||s==1/0?(b=Yt(t),(b.length+u)%2==0&&(b+="0"),s=Math.sqrt(+b),u=te((u+1)/2)-(u<0||u%2),s==1/0?b="5e"+u:(b=s.toExponential(),b=b.slice(0,b.indexOf("e")+1)+u),k=new O(b)):k=new O(s+""),k.c[0]){for(u=k.e,s=u+f,s<3&&(s=0);;)if(C=k,k=h.times(C.plus(r(p,C,f,1))),Yt(C.c).slice(0,s)===(b=Yt(k.c)).slice(0,s))if(k.e<u&&--s,b=b.slice(s-3,s+1),b=="9999"||!x&&b=="4999"){if(!x&&(j(C,C.e+d+2,0),C.times(C).eq(p))){k=C;break}f+=4,s+=4,x=1}else{(!+b||!+b.slice(1)&&b.charAt(0)=="5")&&(j(k,k.e+d+2,1),w=!k.times(k).eq(p));break}}return j(k,k.e+d+1,c,w)},e.toExponential=function(w,b){return w!=null&&(ct(w,0,Wt),w++),F(this,w,b,1)},e.toFixed=function(w,b){return w!=null&&(ct(w,0,Wt),w=w+this.e+1),F(this,w,b)},e.toFormat=function(w,b,k){var x,C=this;if(k==null)w!=null&&b&&typeof b=="object"?(k=b,b=null):w&&typeof w=="object"?(k=w,w=b=null):k=R;else if(typeof k!="object")throw Error(Vt+"Argument not an object: "+k);if(x=C.toFixed(w,b),C.c){var p,t=x.split("."),s=+k.groupSize,u=+k.secondaryGroupSize,f=k.groupSeparator||"",h=t[0],v=t[1],P=C.s<0,_=P?h.slice(1):h,l=_.length;if(u&&(p=s,s=u,u=p,l-=p),s>0&&l>0){for(p=l%s||s,h=_.substr(0,p);p<l;p+=s)h+=f+_.substr(p,s);u>0&&(h+=f+_.slice(p)),P&&(h="-"+h)}x=v?h+(k.decimalSeparator||"")+((u=+k.fractionGroupSize)?v.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(k.fractionGroupSeparator||"")):v):h}return(k.prefix||"")+x+(k.suffix||"")},e.toFraction=function(w){var b,k,x,C,p,t,s,u,f,h,v,P,_=this,l=_.c;if(w!=null&&(s=new O(w),!s.isInteger()&&(s.c||s.s!==1)||s.lt(a)))throw Error(Vt+"Argument "+(s.isInteger()?"out of range: ":"not an integer: ")+Z(s));if(!l)return new O(_);for(b=new O(a),f=k=new O(a),x=u=new O(a),P=Yt(l),p=b.e=P.length-_.e-1,b.c[0]=Ti[(t=p%tt)<0?tt+t:t],w=!w||s.comparedTo(b)>0?p>0?b:f:s,t=S,S=1/0,s=new O(P),u.c[0]=0;h=r(s,b,0,1),C=k.plus(h.times(x)),C.comparedTo(w)!=1;)k=x,x=C,f=u.plus(h.times(C=f)),u=C,b=s.minus(h.times(C=b)),s=C;return C=r(w.minus(k),x,0,1),u=u.plus(C.times(f)),k=k.plus(C.times(x)),u.s=f.s=_.s,p=p*2,v=r(f,x,p,c).minus(_).abs().comparedTo(r(u,k,p,c).minus(_).abs())<1?[f,x]:[u,k],S=t,v},e.toNumber=function(){return+Z(this)},e.toPrecision=function(w,b){return w!=null&&ct(w,1,Wt),F(this,w,b,2)},e.toString=function(w){var b,k=this,x=k.s,C=k.e;return C===null?x?(b="Infinity",x<0&&(b="-"+b)):b="NaN":(w==null?b=C<=g||C>=m?Fe(Yt(k.c),C):ce(Yt(k.c),C,"0"):w===10&&L?(k=j(new O(k),d+C+1,c),b=ce(Yt(k.c),k.e,"0")):(ct(w,2,N.length,"Base"),b=i(ce(Yt(k.c),C,"0"),10,w,x,!0)),x<0&&k.c[0]&&(b="-"+b)),b},e.valueOf=e.toJSON=function(){return Z(this)},e._isBigNumber=!0,e[Symbol.toStringTag]="BigNumber",e[Symbol.for("nodejs.util.inspect.custom")]=e.valueOf,n!=null&&O.set(n),O}function te(n){var r=n|0;return n>0||n===r?r:r-1}function Yt(n){for(var r,i,o=1,e=n.length,a=n[0]+"";o<e;){for(r=n[o++]+"",i=tt-r.length;i--;r="0"+r);a+=r}for(e=a.length;a.charCodeAt(--e)===48;);return a.slice(0,e+1||1)}function Me(n,r){var i,o,e=n.c,a=r.c,d=n.s,c=r.s,g=n.e,m=r.e;if(!d||!c)return null;if(i=e&&!e[0],o=a&&!a[0],i||o)return i?o?0:-c:d;if(d!=c)return d;if(i=d<0,o=g==m,!e||!a)return o?0:!e^i?1:-1;if(!o)return g>m^i?1:-1;for(c=(g=e.length)<(m=a.length)?g:m,d=0;d<c;d++)if(e[d]!=a[d])return e[d]>a[d]^i?1:-1;return g==m?0:g>m^i?1:-1}function ct(n,r,i,o){if(n<r||n>i||n!==Qt(n))throw Error(Vt+(o||"Argument")+(typeof n=="number"?n<r||n>i?" out of range: ":" not an integer: ":" not a primitive number: ")+String(n))}function qe(n){var r=n.c.length-1;return te(n.e/tt)==r&&n.c[r]%2!=0}function Fe(n,r){return(n.length>1?n.charAt(0)+"."+n.slice(1):n)+(r<0?"e":"e+")+r}function ce(n,r,i){var o,e;if(r<0){for(e=i+".";++r;e+=i);n=e+n}else if(o=n.length,++r>o){for(e=i,r-=o;--r;e+=i);n+=e}else r<o&&(n=n.slice(0,r)+"."+n.slice(r));return n}var tn=fr(),ut=tn;import{Transaction as ne}from"@mysten/sui/transactions";var Pe=9e15,we=1e9,Di="0123456789abcdef",$e="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",We="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Oi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Pe,maxE:Pe,crypto:!1},mr,fe,Y=!0,Ke="[DecimalError] ",_e=Ke+"Invalid argument: ",gr=Ke+"Precision limit exceeded",_r=Ke+"crypto unavailable",wr="[object Decimal]",zt=Math.floor,$t=Math.pow,en=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,rn=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,nn=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,vr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,re=1e7,H=7,on=9007199254740991,sn=$e.length-1,Ri=We.length-1,E={toStringTag:wr};E.absoluteValue=E.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),z(n)};E.ceil=function(){return z(new this.constructor(this),this.e+1,2)};E.clampedTo=E.clamp=function(n,r){var i,o=this,e=o.constructor;if(n=new e(n),r=new e(r),!n.s||!r.s)return new e(NaN);if(n.gt(r))throw Error(_e+r);return i=o.cmp(n),i<0?n:o.cmp(r)>0?r:new e(o)};E.comparedTo=E.cmp=function(n){var r,i,o,e,a=this,d=a.d,c=(n=new a.constructor(n)).d,g=a.s,m=n.s;if(!d||!c)return!g||!m?NaN:g!==m?g:d===c?0:!d^g<0?1:-1;if(!d[0]||!c[0])return d[0]?g:c[0]?-m:0;if(g!==m)return g;if(a.e!==n.e)return a.e>n.e^g<0?1:-1;for(o=d.length,e=c.length,r=0,i=o<e?o:e;r<i;++r)if(d[r]!==c[r])return d[r]>c[r]^g<0?1:-1;return o===e?0:o>e^g<0?1:-1};E.cosine=E.cos=function(){var n,r,i=this,o=i.constructor;return i.d?i.d[0]?(n=o.precision,r=o.rounding,o.precision=n+Math.max(i.e,i.sd())+H,o.rounding=1,i=an(o,Sr(o,i)),o.precision=n,o.rounding=r,z(fe==2||fe==3?i.neg():i,n,r,!0)):new o(1):new o(NaN)};E.cubeRoot=E.cbrt=function(){var n,r,i,o,e,a,d,c,g,m,M=this,S=M.constructor;if(!M.isFinite()||M.isZero())return new S(M);for(Y=!1,a=M.s*$t(M.s*M,1/3),!a||Math.abs(a)==1/0?(i=Zt(M.d),n=M.e,(a=(n-i.length+1)%3)&&(i+=a==1||a==-2?"0":"00"),a=$t(i,1/3),n=zt((n+1)/3)-(n%3==(n<0?-1:2)),a==1/0?i="5e"+n:(i=a.toExponential(),i=i.slice(0,i.indexOf("e")+1)+n),o=new S(i),o.s=M.s):o=new S(a.toString()),d=(n=S.precision)+3;;)if(c=o,g=c.times(c).times(c),m=g.plus(M),o=ot(m.plus(M).times(c),m.plus(g),d+2,1),Zt(c.d).slice(0,d)===(i=Zt(o.d)).slice(0,d))if(i=i.slice(d-3,d+1),i=="9999"||!e&&i=="4999"){if(!e&&(z(c,n+1,0),c.times(c).times(c).eq(M))){o=c;break}d+=4,e=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(z(o,n+1,1),r=!o.times(o).times(o).eq(M));break}return Y=!0,z(o,n,S.rounding,r)};E.decimalPlaces=E.dp=function(){var n,r=this.d,i=NaN;if(r){if(n=r.length-1,i=(n-zt(this.e/H))*H,n=r[n],n)for(;n%10==0;n/=10)i--;i<0&&(i=0)}return i};E.dividedBy=E.div=function(n){return ot(this,new this.constructor(n))};E.dividedToIntegerBy=E.divToInt=function(n){var r=this,i=r.constructor;return z(ot(r,new i(n),0,1,1),i.precision,i.rounding)};E.equals=E.eq=function(n){return this.cmp(n)===0};E.floor=function(){return z(new this.constructor(this),this.e+1,3)};E.greaterThan=E.gt=function(n){return this.cmp(n)>0};E.greaterThanOrEqualTo=E.gte=function(n){var r=this.cmp(n);return r==1||r===0};E.hyperbolicCosine=E.cosh=function(){var n,r,i,o,e,a=this,d=a.constructor,c=new d(1);if(!a.isFinite())return new d(a.s?1/0:NaN);if(a.isZero())return c;i=d.precision,o=d.rounding,d.precision=i+Math.max(a.e,a.sd())+4,d.rounding=1,e=a.d.length,e<32?(n=Math.ceil(e/3),r=(1/Ge(4,n)).toString()):(n=16,r="2.3283064365386962890625e-10"),a=Ae(d,1,a.times(r),new d(1),!0);for(var g,m=n,M=new d(8);m--;)g=a.times(a),a=c.minus(g.times(M.minus(g.times(M))));return z(a,d.precision=i,d.rounding=o,!0)};E.hyperbolicSine=E.sinh=function(){var n,r,i,o,e=this,a=e.constructor;if(!e.isFinite()||e.isZero())return new a(e);if(r=a.precision,i=a.rounding,a.precision=r+Math.max(e.e,e.sd())+4,a.rounding=1,o=e.d.length,o<3)e=Ae(a,2,e,e,!0);else{n=1.4*Math.sqrt(o),n=n>16?16:n|0,e=e.times(1/Ge(5,n)),e=Ae(a,2,e,e,!0);for(var d,c=new a(5),g=new a(16),m=new a(20);n--;)d=e.times(e),e=e.times(c.plus(d.times(g.times(d).plus(m))))}return a.precision=r,a.rounding=i,z(e,r,i,!0)};E.hyperbolicTangent=E.tanh=function(){var n,r,i=this,o=i.constructor;return i.isFinite()?i.isZero()?new o(i):(n=o.precision,r=o.rounding,o.precision=n+7,o.rounding=1,ot(i.sinh(),i.cosh(),o.precision=n,o.rounding=r)):new o(i.s)};E.inverseCosine=E.acos=function(){var n=this,r=n.constructor,i=n.abs().cmp(1),o=r.precision,e=r.rounding;return i!==-1?i===0?n.isNeg()?le(r,o,e):new r(0):new r(NaN):n.isZero()?le(r,o+4,e).times(.5):(r.precision=o+6,r.rounding=1,n=new r(1).minus(n).div(n.plus(1)).sqrt().atan(),r.precision=o,r.rounding=e,n.times(2))};E.inverseHyperbolicCosine=E.acosh=function(){var n,r,i=this,o=i.constructor;return i.lte(1)?new o(i.eq(1)?0:NaN):i.isFinite()?(n=o.precision,r=o.rounding,o.precision=n+Math.max(Math.abs(i.e),i.sd())+4,o.rounding=1,Y=!1,i=i.times(i).minus(1).sqrt().plus(i),Y=!0,o.precision=n,o.rounding=r,i.ln()):new o(i)};E.inverseHyperbolicSine=E.asinh=function(){var n,r,i=this,o=i.constructor;return!i.isFinite()||i.isZero()?new o(i):(n=o.precision,r=o.rounding,o.precision=n+2*Math.max(Math.abs(i.e),i.sd())+6,o.rounding=1,Y=!1,i=i.times(i).plus(1).sqrt().plus(i),Y=!0,o.precision=n,o.rounding=r,i.ln())};E.inverseHyperbolicTangent=E.atanh=function(){var n,r,i,o,e=this,a=e.constructor;return e.isFinite()?e.e>=0?new a(e.abs().eq(1)?e.s/0:e.isZero()?e:NaN):(n=a.precision,r=a.rounding,o=e.sd(),Math.max(o,n)<2*-e.e-1?z(new a(e),n,r,!0):(a.precision=i=o-e.e,e=ot(e.plus(1),new a(1).minus(e),i+n,1),a.precision=n+4,a.rounding=1,e=e.ln(),a.precision=n,a.rounding=r,e.times(.5))):new a(NaN)};E.inverseSine=E.asin=function(){var n,r,i,o,e=this,a=e.constructor;return e.isZero()?new a(e):(r=e.abs().cmp(1),i=a.precision,o=a.rounding,r!==-1?r===0?(n=le(a,i+4,o).times(.5),n.s=e.s,n):new a(NaN):(a.precision=i+6,a.rounding=1,e=e.div(new a(1).minus(e.times(e)).sqrt().plus(1)).atan(),a.precision=i,a.rounding=o,e.times(2)))};E.inverseTangent=E.atan=function(){var n,r,i,o,e,a,d,c,g,m=this,M=m.constructor,S=M.precision,A=M.rounding;if(m.isFinite()){if(m.isZero())return new M(m);if(m.abs().eq(1)&&S+4<=Ri)return d=le(M,S+4,A).times(.25),d.s=m.s,d}else{if(!m.s)return new M(NaN);if(S+4<=Ri)return d=le(M,S+4,A).times(.5),d.s=m.s,d}for(M.precision=c=S+10,M.rounding=1,i=Math.min(28,c/H+2|0),n=i;n;--n)m=m.div(m.times(m).plus(1).sqrt().plus(1));for(Y=!1,r=Math.ceil(c/H),o=1,g=m.times(m),d=new M(m),e=m;n!==-1;)if(e=e.times(g),a=d.minus(e.div(o+=2)),e=e.times(g),d=a.plus(e.div(o+=2)),d.d[r]!==void 0)for(n=r;d.d[n]===a.d[n]&&n--;);return i&&(d=d.times(2<<i-1)),Y=!0,z(d,M.precision=S,M.rounding=A,!0)};E.isFinite=function(){return!!this.d};E.isInteger=E.isInt=function(){return!!this.d&&zt(this.e/H)>this.d.length-2};E.isNaN=function(){return!this.s};E.isNegative=E.isNeg=function(){return this.s<0};E.isPositive=E.isPos=function(){return this.s>0};E.isZero=function(){return!!this.d&&this.d[0]===0};E.lessThan=E.lt=function(n){return this.cmp(n)<0};E.lessThanOrEqualTo=E.lte=function(n){return this.cmp(n)<1};E.logarithm=E.log=function(n){var r,i,o,e,a,d,c,g,m=this,M=m.constructor,S=M.precision,A=M.rounding,T=5;if(n==null)n=new M(10),r=!0;else{if(n=new M(n),i=n.d,n.s<0||!i||!i[0]||n.eq(1))return new M(NaN);r=n.eq(10)}if(i=m.d,m.s<0||!i||!i[0]||m.eq(1))return new M(i&&!i[0]?-1/0:m.s!=1?NaN:i?0:1/0);if(r)if(i.length>1)a=!0;else{for(e=i[0];e%10===0;)e/=10;a=e!==1}if(Y=!1,c=S+T,d=ge(m,c),o=r?Ze(M,c+10):ge(n,c),g=ot(d,o,c,1),Te(g.d,e=S,A))do if(c+=10,d=ge(m,c),o=r?Ze(M,c+10):ge(n,c),g=ot(d,o,c,1),!a){+Zt(g.d).slice(e+1,e+15)+1==1e14&&(g=z(g,S+1,0));break}while(Te(g.d,e+=10,A));return Y=!0,z(g,S,A)};E.minus=E.sub=function(n){var r,i,o,e,a,d,c,g,m,M,S,A,T=this,D=T.constructor;if(n=new D(n),!T.d||!n.d)return!T.s||!n.s?n=new D(NaN):T.d?n.s=-n.s:n=new D(n.d||T.s!==n.s?T:NaN),n;if(T.s!=n.s)return n.s=-n.s,T.plus(n);if(m=T.d,A=n.d,c=D.precision,g=D.rounding,!m[0]||!A[0]){if(A[0])n.s=-n.s;else if(m[0])n=new D(T);else return new D(g===3?-0:0);return Y?z(n,c,g):n}if(i=zt(n.e/H),M=zt(T.e/H),m=m.slice(),a=M-i,a){for(S=a<0,S?(r=m,a=-a,d=A.length):(r=A,i=M,d=m.length),o=Math.max(Math.ceil(c/H),d)+2,a>o&&(a=o,r.length=1),r.reverse(),o=a;o--;)r.push(0);r.reverse()}else{for(o=m.length,d=A.length,S=o<d,S&&(d=o),o=0;o<d;o++)if(m[o]!=A[o]){S=m[o]<A[o];break}a=0}for(S&&(r=m,m=A,A=r,n.s=-n.s),d=m.length,o=A.length-d;o>0;--o)m[d++]=0;for(o=A.length;o>a;){if(m[--o]<A[o]){for(e=o;e&&m[--e]===0;)m[e]=re-1;--m[e],m[o]+=re}m[o]-=A[o]}for(;m[--d]===0;)m.pop();for(;m[0]===0;m.shift())--i;return m[0]?(n.d=m,n.e=ze(m,i),Y?z(n,c,g):n):new D(g===3?-0:0)};E.modulo=E.mod=function(n){var r,i=this,o=i.constructor;return n=new o(n),!i.d||!n.s||n.d&&!n.d[0]?new o(NaN):!n.d||i.d&&!i.d[0]?z(new o(i),o.precision,o.rounding):(Y=!1,o.modulo==9?(r=ot(i,n.abs(),0,3,1),r.s*=n.s):r=ot(i,n,0,o.modulo,1),r=r.times(n),Y=!0,i.minus(r))};E.naturalExponential=E.exp=function(){return Li(this)};E.naturalLogarithm=E.ln=function(){return ge(this)};E.negated=E.neg=function(){var n=new this.constructor(this);return n.s=-n.s,z(n)};E.plus=E.add=function(n){var r,i,o,e,a,d,c,g,m,M,S=this,A=S.constructor;if(n=new A(n),!S.d||!n.d)return!S.s||!n.s?n=new A(NaN):S.d||(n=new A(n.d||S.s===n.s?S:NaN)),n;if(S.s!=n.s)return n.s=-n.s,S.minus(n);if(m=S.d,M=n.d,c=A.precision,g=A.rounding,!m[0]||!M[0])return M[0]||(n=new A(S)),Y?z(n,c,g):n;if(a=zt(S.e/H),o=zt(n.e/H),m=m.slice(),e=a-o,e){for(e<0?(i=m,e=-e,d=M.length):(i=M,o=a,d=m.length),a=Math.ceil(c/H),d=a>d?a+1:d+1,e>d&&(e=d,i.length=1),i.reverse();e--;)i.push(0);i.reverse()}for(d=m.length,e=M.length,d-e<0&&(e=d,i=M,M=m,m=i),r=0;e;)r=(m[--e]=m[e]+M[e]+r)/re|0,m[e]%=re;for(r&&(m.unshift(r),++o),d=m.length;m[--d]==0;)m.pop();return n.d=m,n.e=ze(m,o),Y?z(n,c,g):n};E.precision=E.sd=function(n){var r,i=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(_e+n);return i.d?(r=Mr(i.d),n&&i.e+1>r&&(r=i.e+1)):r=NaN,r};E.round=function(){var n=this,r=n.constructor;return z(new r(n),n.e+1,r.rounding)};E.sine=E.sin=function(){var n,r,i=this,o=i.constructor;return i.isFinite()?i.isZero()?new o(i):(n=o.precision,r=o.rounding,o.precision=n+Math.max(i.e,i.sd())+H,o.rounding=1,i=un(o,Sr(o,i)),o.precision=n,o.rounding=r,z(fe>2?i.neg():i,n,r,!0)):new o(NaN)};E.squareRoot=E.sqrt=function(){var n,r,i,o,e,a,d=this,c=d.d,g=d.e,m=d.s,M=d.constructor;if(m!==1||!c||!c[0])return new M(!m||m<0&&(!c||c[0])?NaN:c?d:1/0);for(Y=!1,m=Math.sqrt(+d),m==0||m==1/0?(r=Zt(c),(r.length+g)%2==0&&(r+="0"),m=Math.sqrt(r),g=zt((g+1)/2)-(g<0||g%2),m==1/0?r="5e"+g:(r=m.toExponential(),r=r.slice(0,r.indexOf("e")+1)+g),o=new M(r)):o=new M(m.toString()),i=(g=M.precision)+3;;)if(a=o,o=a.plus(ot(d,a,i+2,1)).times(.5),Zt(a.d).slice(0,i)===(r=Zt(o.d)).slice(0,i))if(r=r.slice(i-3,i+1),r=="9999"||!e&&r=="4999"){if(!e&&(z(a,g+1,0),a.times(a).eq(d))){o=a;break}i+=4,e=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(z(o,g+1,1),n=!o.times(o).eq(d));break}return Y=!0,z(o,g,M.rounding,n)};E.tangent=E.tan=function(){var n,r,i=this,o=i.constructor;return i.isFinite()?i.isZero()?new o(i):(n=o.precision,r=o.rounding,o.precision=n+10,o.rounding=1,i=i.sin(),i.s=1,i=ot(i,new o(1).minus(i.times(i)).sqrt(),n+10,0),o.precision=n,o.rounding=r,z(fe==2||fe==4?i.neg():i,n,r,!0)):new o(NaN)};E.times=E.mul=function(n){var r,i,o,e,a,d,c,g,m,M=this,S=M.constructor,A=M.d,T=(n=new S(n)).d;if(n.s*=M.s,!A||!A[0]||!T||!T[0])return new S(!n.s||A&&!A[0]&&!T||T&&!T[0]&&!A?NaN:!A||!T?n.s/0:n.s*0);for(i=zt(M.e/H)+zt(n.e/H),g=A.length,m=T.length,g<m&&(a=A,A=T,T=a,d=g,g=m,m=d),a=[],d=g+m,o=d;o--;)a.push(0);for(o=m;--o>=0;){for(r=0,e=g+o;e>o;)c=a[e]+T[o]*A[e-o-1]+r,a[e--]=c%re|0,r=c/re|0;a[e]=(a[e]+r)%re|0}for(;!a[--d];)a.pop();return r?++i:a.shift(),n.d=a,n.e=ze(a,i),Y?z(n,S.precision,S.rounding):n};E.toBinary=function(n,r){return Ni(this,2,n,r)};E.toDecimalPlaces=E.toDP=function(n,r){var i=this,o=i.constructor;return i=new o(i),n===void 0?i:(Xt(n,0,we),r===void 0?r=o.rounding:Xt(r,0,8),z(i,n+i.e+1,r))};E.toExponential=function(n,r){var i,o=this,e=o.constructor;return n===void 0?i=ue(o,!0):(Xt(n,0,we),r===void 0?r=e.rounding:Xt(r,0,8),o=z(new e(o),n+1,r),i=ue(o,!0,n+1)),o.isNeg()&&!o.isZero()?"-"+i:i};E.toFixed=function(n,r){var i,o,e=this,a=e.constructor;return n===void 0?i=ue(e):(Xt(n,0,we),r===void 0?r=a.rounding:Xt(r,0,8),o=z(new a(e),n+e.e+1,r),i=ue(o,!1,n+o.e+1)),e.isNeg()&&!e.isZero()?"-"+i:i};E.toFraction=function(n){var r,i,o,e,a,d,c,g,m,M,S,A,T=this,D=T.d,R=T.constructor;if(!D)return new R(T);if(m=i=new R(1),o=g=new R(0),r=new R(o),a=r.e=Mr(D)-T.e-1,d=a%H,r.d[0]=$t(10,d<0?H+d:d),n==null)n=a>0?r:m;else{if(c=new R(n),!c.isInt()||c.lt(m))throw Error(_e+c);n=c.gt(r)?a>0?r:m:c}for(Y=!1,c=new R(Zt(D)),M=R.precision,R.precision=a=D.length*H*2;S=ot(c,r,0,1,1),e=i.plus(S.times(o)),e.cmp(n)!=1;)i=o,o=e,e=m,m=g.plus(S.times(e)),g=e,e=r,r=c.minus(S.times(e)),c=e;return e=ot(n.minus(i),o,0,1,1),g=g.plus(e.times(m)),i=i.plus(e.times(o)),g.s=m.s=T.s,A=ot(m,o,a,1).minus(T).abs().cmp(ot(g,i,a,1).minus(T).abs())<1?[m,o]:[g,i],R.precision=M,Y=!0,A};E.toHexadecimal=E.toHex=function(n,r){return Ni(this,16,n,r)};E.toNearest=function(n,r){var i=this,o=i.constructor;if(i=new o(i),n==null){if(!i.d)return i;n=new o(1),r=o.rounding}else{if(n=new o(n),r===void 0?r=o.rounding:Xt(r,0,8),!i.d)return n.s?i:n;if(!n.d)return n.s&&(n.s=i.s),n}return n.d[0]?(Y=!1,i=ot(i,n,0,r,1).times(n),Y=!0,z(i)):(n.s=i.s,i=n),i};E.toNumber=function(){return+this};E.toOctal=function(n,r){return Ni(this,8,n,r)};E.toPower=E.pow=function(n){var r,i,o,e,a,d,c=this,g=c.constructor,m=+(n=new g(n));if(!c.d||!n.d||!c.d[0]||!n.d[0])return new g($t(+c,m));if(c=new g(c),c.eq(1))return c;if(o=g.precision,a=g.rounding,n.eq(1))return z(c,o,a);if(r=zt(n.e/H),r>=n.d.length-1&&(i=m<0?-m:m)<=on)return e=br(g,c,i,o),n.s<0?new g(1).div(e):z(e,o,a);if(d=c.s,d<0){if(r<n.d.length-1)return new g(NaN);if((n.d[r]&1)==0&&(d=1),c.e==0&&c.d[0]==1&&c.d.length==1)return c.s=d,c}return i=$t(+c,m),r=i==0||!isFinite(i)?zt(m*(Math.log("0."+Zt(c.d))/Math.LN10+c.e+1)):new g(i+"").e,r>g.maxE+1||r<g.minE-1?new g(r>0?d/0:0):(Y=!1,g.rounding=c.s=1,i=Math.min(12,(r+"").length),e=Li(n.times(ge(c,o+i)),o),e.d&&(e=z(e,o+5,1),Te(e.d,o,a)&&(r=o+10,e=z(Li(n.times(ge(c,r+i)),r),r+5,1),+Zt(e.d).slice(o+1,o+15)+1==1e14&&(e=z(e,o+1,0)))),e.s=d,Y=!0,g.rounding=a,z(e,o,a))};E.toPrecision=function(n,r){var i,o=this,e=o.constructor;return n===void 0?i=ue(o,o.e<=e.toExpNeg||o.e>=e.toExpPos):(Xt(n,1,we),r===void 0?r=e.rounding:Xt(r,0,8),o=z(new e(o),n,r),i=ue(o,n<=o.e||o.e<=e.toExpNeg,n)),o.isNeg()&&!o.isZero()?"-"+i:i};E.toSignificantDigits=E.toSD=function(n,r){var i=this,o=i.constructor;return n===void 0?(n=o.precision,r=o.rounding):(Xt(n,1,we),r===void 0?r=o.rounding:Xt(r,0,8)),z(new o(i),n,r)};E.toString=function(){var n=this,r=n.constructor,i=ue(n,n.e<=r.toExpNeg||n.e>=r.toExpPos);return n.isNeg()&&!n.isZero()?"-"+i:i};E.truncated=E.trunc=function(){return z(new this.constructor(this),this.e+1,1)};E.valueOf=E.toJSON=function(){var n=this,r=n.constructor,i=ue(n,n.e<=r.toExpNeg||n.e>=r.toExpPos);return n.isNeg()?"-"+i:i};function Zt(n){var r,i,o,e=n.length-1,a="",d=n[0];if(e>0){for(a+=d,r=1;r<e;r++)o=n[r]+"",i=H-o.length,i&&(a+=me(i)),a+=o;d=n[r],o=d+"",i=H-o.length,i&&(a+=me(i))}else if(d===0)return"0";for(;d%10===0;)d/=10;return a+d}function Xt(n,r,i){if(n!==~~n||n<r||n>i)throw Error(_e+n)}function Te(n,r,i,o){var e,a,d,c;for(a=n[0];a>=10;a/=10)--r;return--r<0?(r+=H,e=0):(e=Math.ceil((r+1)/H),r%=H),a=$t(10,H-r),c=n[e]%a|0,o==null?r<3?(r==0?c=c/100|0:r==1&&(c=c/10|0),d=i<4&&c==99999||i>3&&c==49999||c==5e4||c==0):d=(i<4&&c+1==a||i>3&&c+1==a/2)&&(n[e+1]/a/100|0)==$t(10,r-2)-1||(c==a/2||c==0)&&(n[e+1]/a/100|0)==0:r<4?(r==0?c=c/1e3|0:r==1?c=c/100|0:r==2&&(c=c/10|0),d=(o||i<4)&&c==9999||!o&&i>3&&c==4999):d=((o||i<4)&&c+1==a||!o&&i>3&&c+1==a/2)&&(n[e+1]/a/1e3|0)==$t(10,r-3)-1,d}function Ue(n,r,i){for(var o,e=[0],a,d=0,c=n.length;d<c;){for(a=e.length;a--;)e[a]*=r;for(e[0]+=Di.indexOf(n.charAt(d++)),o=0;o<e.length;o++)e[o]>i-1&&(e[o+1]===void 0&&(e[o+1]=0),e[o+1]+=e[o]/i|0,e[o]%=i)}return e.reverse()}function an(n,r){var i,o,e;if(r.isZero())return r;o=r.d.length,o<32?(i=Math.ceil(o/3),e=(1/Ge(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),n.precision+=i,r=Ae(n,1,r.times(e),new n(1));for(var a=i;a--;){var d=r.times(r);r=d.times(d).minus(d).times(8).plus(1)}return n.precision-=i,r}var ot=(function(){function n(o,e,a){var d,c=0,g=o.length;for(o=o.slice();g--;)d=o[g]*e+c,o[g]=d%a|0,c=d/a|0;return c&&o.unshift(c),o}function r(o,e,a,d){var c,g;if(a!=d)g=a>d?1:-1;else for(c=g=0;c<a;c++)if(o[c]!=e[c]){g=o[c]>e[c]?1:-1;break}return g}function i(o,e,a,d){for(var c=0;a--;)o[a]-=c,c=o[a]<e[a]?1:0,o[a]=c*d+o[a]-e[a];for(;!o[0]&&o.length>1;)o.shift()}return function(o,e,a,d,c,g){var m,M,S,A,T,D,R,N,L,O,F,q,W,j,Z,w,b,k,x,C,p=o.constructor,t=o.s==e.s?1:-1,s=o.d,u=e.d;if(!s||!s[0]||!u||!u[0])return new p(!o.s||!e.s||(s?u&&s[0]==u[0]:!u)?NaN:s&&s[0]==0||!u?t*0:t/0);for(g?(T=1,M=o.e-e.e):(g=re,T=H,M=zt(o.e/T)-zt(e.e/T)),x=u.length,b=s.length,L=new p(t),O=L.d=[],S=0;u[S]==(s[S]||0);S++);if(u[S]>(s[S]||0)&&M--,a==null?(j=a=p.precision,d=p.rounding):c?j=a+(o.e-e.e)+1:j=a,j<0)O.push(1),D=!0;else{if(j=j/T+2|0,S=0,x==1){for(A=0,u=u[0],j++;(S<b||A)&&j--;S++)Z=A*g+(s[S]||0),O[S]=Z/u|0,A=Z%u|0;D=A||S<b}else{for(A=g/(u[0]+1)|0,A>1&&(u=n(u,A,g),s=n(s,A,g),x=u.length,b=s.length),w=x,F=s.slice(0,x),q=F.length;q<x;)F[q++]=0;C=u.slice(),C.unshift(0),k=u[0],u[1]>=g/2&&++k;do A=0,m=r(u,F,x,q),m<0?(W=F[0],x!=q&&(W=W*g+(F[1]||0)),A=W/k|0,A>1?(A>=g&&(A=g-1),R=n(u,A,g),N=R.length,q=F.length,m=r(R,F,N,q),m==1&&(A--,i(R,x<N?C:u,N,g))):(A==0&&(m=A=1),R=u.slice()),N=R.length,N<q&&R.unshift(0),i(F,R,q,g),m==-1&&(q=F.length,m=r(u,F,x,q),m<1&&(A++,i(F,x<q?C:u,q,g))),q=F.length):m===0&&(A++,F=[0]),O[S++]=A,m&&F[0]?F[q++]=s[w]||0:(F=[s[w]],q=1);while((w++<b||F[0]!==void 0)&&j--);D=F[0]!==void 0}O[0]||O.shift()}if(T==1)L.e=M,mr=D;else{for(S=1,A=O[0];A>=10;A/=10)S++;L.e=S+M*T-1,z(L,c?a+L.e+1:a,d,D)}return L}})();function z(n,r,i,o){var e,a,d,c,g,m,M,S,A,T=n.constructor;t:if(r!=null){if(S=n.d,!S)return n;for(e=1,c=S[0];c>=10;c/=10)e++;if(a=r-e,a<0)a+=H,d=r,M=S[A=0],g=M/$t(10,e-d-1)%10|0;else if(A=Math.ceil((a+1)/H),c=S.length,A>=c)if(o){for(;c++<=A;)S.push(0);M=g=0,e=1,a%=H,d=a-H+1}else break t;else{for(M=c=S[A],e=1;c>=10;c/=10)e++;a%=H,d=a-H+e,g=d<0?0:M/$t(10,e-d-1)%10|0}if(o=o||r<0||S[A+1]!==void 0||(d<0?M:M%$t(10,e-d-1)),m=i<4?(g||o)&&(i==0||i==(n.s<0?3:2)):g>5||g==5&&(i==4||o||i==6&&(a>0?d>0?M/$t(10,e-d):0:S[A-1])%10&1||i==(n.s<0?8:7)),r<1||!S[0])return S.length=0,m?(r-=n.e+1,S[0]=$t(10,(H-r%H)%H),n.e=-r||0):S[0]=n.e=0,n;if(a==0?(S.length=A,c=1,A--):(S.length=A+1,c=$t(10,H-a),S[A]=d>0?(M/$t(10,e-d)%$t(10,d)|0)*c:0),m)for(;;)if(A==0){for(a=1,d=S[0];d>=10;d/=10)a++;for(d=S[0]+=c,c=1;d>=10;d/=10)c++;a!=c&&(n.e++,S[0]==re&&(S[0]=1));break}else{if(S[A]+=c,S[A]!=re)break;S[A--]=0,c=1}for(a=S.length;S[--a]===0;)S.pop()}return Y&&(n.e>T.maxE?(n.d=null,n.e=NaN):n.e<T.minE&&(n.e=0,n.d=[0])),n}function ue(n,r,i){if(!n.isFinite())return kr(n);var o,e=n.e,a=Zt(n.d),d=a.length;return r?(i&&(o=i-d)>0?a=a.charAt(0)+"."+a.slice(1)+me(o):d>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(n.e<0?"e":"e+")+n.e):e<0?(a="0."+me(-e-1)+a,i&&(o=i-d)>0&&(a+=me(o))):e>=d?(a+=me(e+1-d),i&&(o=i-e-1)>0&&(a=a+"."+me(o))):((o=e+1)<d&&(a=a.slice(0,o)+"."+a.slice(o)),i&&(o=i-d)>0&&(e+1===d&&(a+="."),a+=me(o))),a}function ze(n,r){var i=n[0];for(r*=H;i>=10;i/=10)r++;return r}function Ze(n,r,i){if(r>sn)throw Y=!0,i&&(n.precision=i),Error(gr);return z(new n($e),r,1,!0)}function le(n,r,i){if(r>Ri)throw Error(gr);return z(new n(We),r,i,!0)}function Mr(n){var r=n.length-1,i=r*H+1;if(r=n[r],r){for(;r%10==0;r/=10)i--;for(r=n[0];r>=10;r/=10)i++}return i}function me(n){for(var r="";n--;)r+="0";return r}function br(n,r,i,o){var e,a=new n(1),d=Math.ceil(o/H+4);for(Y=!1;;){if(i%2&&(a=a.times(r),hr(a.d,d)&&(e=!0)),i=zt(i/2),i===0){i=a.d.length-1,e&&a.d[i]===0&&++a.d[i];break}r=r.times(r),hr(r.d,d)}return Y=!0,a}function dr(n){return n.d[n.d.length-1]&1}function yr(n,r,i){for(var o,e,a=new n(r[0]),d=0;++d<r.length;){if(e=new n(r[d]),!e.s){a=e;break}o=a.cmp(e),(o===i||o===0&&a.s===i)&&(a=e)}return a}function Li(n,r){var i,o,e,a,d,c,g,m=0,M=0,S=0,A=n.constructor,T=A.rounding,D=A.precision;if(!n.d||!n.d[0]||n.e>17)return new A(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(r==null?(Y=!1,g=D):g=r,c=new A(.03125);n.e>-2;)n=n.times(c),S+=5;for(o=Math.log($t(2,S))/Math.LN10*2+5|0,g+=o,i=a=d=new A(1),A.precision=g;;){if(a=z(a.times(n),g,1),i=i.times(++M),c=d.plus(ot(a,i,g,1)),Zt(c.d).slice(0,g)===Zt(d.d).slice(0,g)){for(e=S;e--;)d=z(d.times(d),g,1);if(r==null)if(m<3&&Te(d.d,g-o,T,m))A.precision=g+=10,i=a=c=new A(1),M=0,m++;else return z(d,A.precision=D,T,Y=!0);else return A.precision=D,d}d=c}}function ge(n,r){var i,o,e,a,d,c,g,m,M,S,A,T=1,D=10,R=n,N=R.d,L=R.constructor,O=L.rounding,F=L.precision;if(R.s<0||!N||!N[0]||!R.e&&N[0]==1&&N.length==1)return new L(N&&!N[0]?-1/0:R.s!=1?NaN:N?0:R);if(r==null?(Y=!1,M=F):M=r,L.precision=M+=D,i=Zt(N),o=i.charAt(0),Math.abs(a=R.e)<15e14){for(;o<7&&o!=1||o==1&&i.charAt(1)>3;)R=R.times(n),i=Zt(R.d),o=i.charAt(0),T++;a=R.e,o>1?(R=new L("0."+i),a++):R=new L(o+"."+i.slice(1))}else return m=Ze(L,M+2,F).times(a+""),R=ge(new L(o+"."+i.slice(1)),M-D).plus(m),L.precision=F,r==null?z(R,F,O,Y=!0):R;for(S=R,g=d=R=ot(R.minus(1),R.plus(1),M,1),A=z(R.times(R),M,1),e=3;;){if(d=z(d.times(A),M,1),m=g.plus(ot(d,new L(e),M,1)),Zt(m.d).slice(0,M)===Zt(g.d).slice(0,M))if(g=g.times(2),a!==0&&(g=g.plus(Ze(L,M+2,F).times(a+""))),g=ot(g,new L(T),M,1),r==null)if(Te(g.d,M-D,O,c))L.precision=M+=D,m=d=R=ot(S.minus(1),S.plus(1),M,1),A=z(R.times(R),M,1),e=c=1;else return z(g,L.precision=F,O,Y=!0);else return L.precision=F,g;g=m,e+=2}}function kr(n){return String(n.s*n.s/0)}function je(n,r){var i,o,e;for((i=r.indexOf("."))>-1&&(r=r.replace(".","")),(o=r.search(/e/i))>0?(i<0&&(i=o),i+=+r.slice(o+1),r=r.substring(0,o)):i<0&&(i=r.length),o=0;r.charCodeAt(o)===48;o++);for(e=r.length;r.charCodeAt(e-1)===48;--e);if(r=r.slice(o,e),r){if(e-=o,n.e=i=i-o-1,n.d=[],o=(i+1)%H,i<0&&(o+=H),o<e){for(o&&n.d.push(+r.slice(0,o)),e-=H;o<e;)n.d.push(+r.slice(o,o+=H));r=r.slice(o),o=H-r.length}else o-=e;for(;o--;)r+="0";n.d.push(+r),Y&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function ln(n,r){var i,o,e,a,d,c,g,m,M;if(r.indexOf("_")>-1){if(r=r.replace(/(\d)_(?=\d)/g,"$1"),vr.test(r))return je(n,r)}else if(r==="Infinity"||r==="NaN")return+r||(n.s=NaN),n.e=NaN,n.d=null,n;if(rn.test(r))i=16,r=r.toLowerCase();else if(en.test(r))i=2;else if(nn.test(r))i=8;else throw Error(_e+r);for(a=r.search(/p/i),a>0?(g=+r.slice(a+1),r=r.substring(2,a)):r=r.slice(2),a=r.indexOf("."),d=a>=0,o=n.constructor,d&&(r=r.replace(".",""),c=r.length,a=c-a,e=br(o,new o(i),a,a*2)),m=Ue(r,i,re),M=m.length-1,a=M;m[a]===0;--a)m.pop();return a<0?new o(n.s*0):(n.e=ze(m,M),n.d=m,Y=!1,d&&(n=ot(n,e,c*4)),g&&(n=n.times(Math.abs(g)<54?$t(2,g):De.pow(2,g))),Y=!0,n)}function un(n,r){var i,o=r.d.length;if(o<3)return r.isZero()?r:Ae(n,2,r,r);i=1.4*Math.sqrt(o),i=i>16?16:i|0,r=r.times(1/Ge(5,i)),r=Ae(n,2,r,r);for(var e,a=new n(5),d=new n(16),c=new n(20);i--;)e=r.times(r),r=r.times(a.plus(e.times(d.times(e).minus(c))));return r}function Ae(n,r,i,o,e){var a,d,c,g,m=1,M=n.precision,S=Math.ceil(M/H);for(Y=!1,g=i.times(i),c=new n(o);;){if(d=ot(c.times(g),new n(r++*r++),M,1),c=e?o.plus(d):o.minus(d),o=ot(d.times(g),new n(r++*r++),M,1),d=c.plus(o),d.d[S]!==void 0){for(a=S;d.d[a]===c.d[a]&&a--;);if(a==-1)break}a=c,c=o,o=d,d=a,m++}return Y=!0,d.d.length=S+1,d}function Ge(n,r){for(var i=n;--r;)i*=n;return i}function Sr(n,r){var i,o=r.s<0,e=le(n,n.precision,1),a=e.times(.5);if(r=r.abs(),r.lte(a))return fe=o?4:1,r;if(i=r.divToInt(e),i.isZero())fe=o?3:2;else{if(r=r.minus(i.times(e)),r.lte(a))return fe=dr(i)?o?2:3:o?4:1,r;fe=dr(i)?o?1:4:o?3:2}return r.minus(e).abs()}function Ni(n,r,i,o){var e,a,d,c,g,m,M,S,A,T=n.constructor,D=i!==void 0;if(D?(Xt(i,1,we),o===void 0?o=T.rounding:Xt(o,0,8)):(i=T.precision,o=T.rounding),!n.isFinite())M=kr(n);else{for(M=ue(n),d=M.indexOf("."),D?(e=2,r==16?i=i*4-3:r==8&&(i=i*3-2)):e=r,d>=0&&(M=M.replace(".",""),A=new T(1),A.e=M.length-d,A.d=Ue(ue(A),10,e),A.e=A.d.length),S=Ue(M,10,e),a=g=S.length;S[--g]==0;)S.pop();if(!S[0])M=D?"0p+0":"0";else{if(d<0?a--:(n=new T(n),n.d=S,n.e=a,n=ot(n,A,i,o,0,e),S=n.d,a=n.e,m=mr),d=S[i],c=e/2,m=m||S[i+1]!==void 0,m=o<4?(d!==void 0||m)&&(o===0||o===(n.s<0?3:2)):d>c||d===c&&(o===4||m||o===6&&S[i-1]&1||o===(n.s<0?8:7)),S.length=i,m)for(;++S[--i]>e-1;)S[i]=0,i||(++a,S.unshift(1));for(g=S.length;!S[g-1];--g);for(d=0,M="";d<g;d++)M+=Di.charAt(S[d]);if(D){if(g>1)if(r==16||r==8){for(d=r==16?4:3,--g;g%d;g++)M+="0";for(S=Ue(M,e,r),g=S.length;!S[g-1];--g);for(d=1,M="1.";d<g;d++)M+=Di.charAt(S[d])}else M=M.charAt(0)+"."+M.slice(1);M=M+(a<0?"p":"p+")+a}else if(a<0){for(;++a;)M="0"+M;M="0."+M}else if(++a>g)for(a-=g;a--;)M+="0";else a<g&&(M=M.slice(0,a)+"."+M.slice(a))}M=(r==16?"0x":r==2?"0b":r==8?"0o":"")+M}return n.s<0?"-"+M:M}function hr(n,r){if(n.length>r)return n.length=r,!0}function cn(n){return new this(n).abs()}function fn(n){return new this(n).acos()}function dn(n){return new this(n).acosh()}function hn(n,r){return new this(n).plus(r)}function pn(n){return new this(n).asin()}function mn(n){return new this(n).asinh()}function gn(n){return new this(n).atan()}function _n(n){return new this(n).atanh()}function wn(n,r){n=new this(n),r=new this(r);var i,o=this.precision,e=this.rounding,a=o+4;return!n.s||!r.s?i=new this(NaN):!n.d&&!r.d?(i=le(this,a,1).times(r.s>0?.25:.75),i.s=n.s):!r.d||n.isZero()?(i=r.s<0?le(this,o,e):new this(0),i.s=n.s):!n.d||r.isZero()?(i=le(this,a,1).times(.5),i.s=n.s):r.s<0?(this.precision=a,this.rounding=1,i=this.atan(ot(n,r,a,1)),r=le(this,a,1),this.precision=o,this.rounding=e,i=n.s<0?i.minus(r):i.plus(r)):i=this.atan(ot(n,r,a,1)),i}function vn(n){return new this(n).cbrt()}function Mn(n){return z(n=new this(n),n.e+1,2)}function bn(n,r,i){return new this(n).clamp(r,i)}function yn(n){if(!n||typeof n!="object")throw Error(Ke+"Object expected");var r,i,o,e=n.defaults===!0,a=["precision",1,we,"rounding",0,8,"toExpNeg",-Pe,0,"toExpPos",0,Pe,"maxE",0,Pe,"minE",-Pe,0,"modulo",0,9];for(r=0;r<a.length;r+=3)if(i=a[r],e&&(this[i]=Oi[i]),(o=n[i])!==void 0)if(zt(o)===o&&o>=a[r+1]&&o<=a[r+2])this[i]=o;else throw Error(_e+i+": "+o);if(i="crypto",e&&(this[i]=Oi[i]),(o=n[i])!==void 0)if(o===!0||o===!1||o===0||o===1)if(o)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(_r);else this[i]=!1;else throw Error(_e+i+": "+o);return this}function kn(n){return new this(n).cos()}function Sn(n){return new this(n).cosh()}function Pr(n){var r,i,o;function e(a){var d,c,g,m=this;if(!(m instanceof e))return new e(a);if(m.constructor=e,pr(a)){m.s=a.s,Y?!a.d||a.e>e.maxE?(m.e=NaN,m.d=null):a.e<e.minE?(m.e=0,m.d=[0]):(m.e=a.e,m.d=a.d.slice()):(m.e=a.e,m.d=a.d?a.d.slice():a.d);return}if(g=typeof a,g==="number"){if(a===0){m.s=1/a<0?-1:1,m.e=0,m.d=[0];return}if(a<0?(a=-a,m.s=-1):m.s=1,a===~~a&&a<1e7){for(d=0,c=a;c>=10;c/=10)d++;Y?d>e.maxE?(m.e=NaN,m.d=null):d<e.minE?(m.e=0,m.d=[0]):(m.e=d,m.d=[a]):(m.e=d,m.d=[a]);return}if(a*0!==0){a||(m.s=NaN),m.e=NaN,m.d=null;return}return je(m,a.toString())}if(g==="string")return(c=a.charCodeAt(0))===45?(a=a.slice(1),m.s=-1):(c===43&&(a=a.slice(1)),m.s=1),vr.test(a)?je(m,a):ln(m,a);if(g==="bigint")return a<0?(a=-a,m.s=-1):m.s=1,je(m,a.toString());throw Error(_e+a)}if(e.prototype=E,e.ROUND_UP=0,e.ROUND_DOWN=1,e.ROUND_CEIL=2,e.ROUND_FLOOR=3,e.ROUND_HALF_UP=4,e.ROUND_HALF_DOWN=5,e.ROUND_HALF_EVEN=6,e.ROUND_HALF_CEIL=7,e.ROUND_HALF_FLOOR=8,e.EUCLID=9,e.config=e.set=yn,e.clone=Pr,e.isDecimal=pr,e.abs=cn,e.acos=fn,e.acosh=dn,e.add=hn,e.asin=pn,e.asinh=mn,e.atan=gn,e.atanh=_n,e.atan2=wn,e.cbrt=vn,e.ceil=Mn,e.clamp=bn,e.cos=kn,e.cosh=Sn,e.div=Pn,e.exp=An,e.floor=Cn,e.hypot=xn,e.ln=Tn,e.log=Dn,e.log10=Rn,e.log2=On,e.max=Ln,e.min=Nn,e.mod=In,e.mul=En,e.pow=Bn,e.random=qn,e.round=Fn,e.sign=Un,e.sin=jn,e.sinh=$n,e.sqrt=Wn,e.sub=Zn,e.sum=Kn,e.tan=zn,e.tanh=Gn,e.trunc=Hn,n===void 0&&(n={}),n&&n.defaults!==!0)for(o=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],r=0;r<o.length;)n.hasOwnProperty(i=o[r++])||(n[i]=this[i]);return e.config(n),e}function Pn(n,r){return new this(n).div(r)}function An(n){return new this(n).exp()}function Cn(n){return z(n=new this(n),n.e+1,3)}function xn(){var n,r,i=new this(0);for(Y=!1,n=0;n<arguments.length;)if(r=new this(arguments[n++]),r.d)i.d&&(i=i.plus(r.times(r)));else{if(r.s)return Y=!0,new this(1/0);i=r}return Y=!0,i.sqrt()}function pr(n){return n instanceof De||n&&n.toStringTag===wr||!1}function Tn(n){return new this(n).ln()}function Dn(n,r){return new this(n).log(r)}function On(n){return new this(n).log(2)}function Rn(n){return new this(n).log(10)}function Ln(){return yr(this,arguments,-1)}function Nn(){return yr(this,arguments,1)}function In(n,r){return new this(n).mod(r)}function En(n,r){return new this(n).mul(r)}function Bn(n,r){return new this(n).pow(r)}function qn(n){var r,i,o,e,a=0,d=new this(1),c=[];if(n===void 0?n=this.precision:Xt(n,1,we),o=Math.ceil(n/H),this.crypto)if(crypto.getRandomValues)for(r=crypto.getRandomValues(new Uint32Array(o));a<o;)e=r[a],e>=429e7?r[a]=crypto.getRandomValues(new Uint32Array(1))[0]:c[a++]=e%1e7;else if(crypto.randomBytes){for(r=crypto.randomBytes(o*=4);a<o;)e=r[a]+(r[a+1]<<8)+(r[a+2]<<16)+((r[a+3]&127)<<24),e>=214e7?crypto.randomBytes(4).copy(r,a):(c.push(e%1e7),a+=4);a=o/4}else throw Error(_r);else for(;a<o;)c[a++]=Math.random()*1e7|0;for(o=c[--a],n%=H,o&&n&&(e=$t(10,H-n),c[a]=(o/e|0)*e);c[a]===0;a--)c.pop();if(a<0)i=0,c=[0];else{for(i=-1;c[0]===0;i-=H)c.shift();for(o=1,e=c[0];e>=10;e/=10)o++;o<H&&(i-=H-o)}return d.e=i,d.d=c,d}function Fn(n){return z(n=new this(n),n.e+1,this.rounding)}function Un(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function jn(n){return new this(n).sin()}function $n(n){return new this(n).sinh()}function Wn(n){return new this(n).sqrt()}function Zn(n,r){return new this(n).sub(r)}function Kn(){var n=0,r=arguments,i=new this(r[n]);for(Y=!1;i.s&&++n<r.length;)i=i.plus(r[n]);return Y=!0,z(i,this.precision,this.rounding)}function zn(n){return new this(n).tan()}function Gn(n){return new this(n).tanh()}function Hn(n){return z(n=new this(n),n.e+1,1)}E[Symbol.for("nodejs.util.inspect.custom")]=E.toString;E[Symbol.toStringTag]="Decimal";var De=E.constructor=Pr(Oi);$e=new De($e);We=new De(We);var dt=De;import{compoundDebt as Xn}from"@suilend/sdk";var Ve=class{constructor(r){this.getPositionList=async(r=this._sdk.getSenderAddress(),i=!1)=>{let{lending_market_id:o,lending_market_type:e}=jt(this._sdk.sdkOptions.suilend);try{let a=`cap_to_position_mapping_${r}`,d=this._sdk.getCache(a,i),c=await this._sdk.FullClient.getOwnedObjectsByPage(r,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{StructType:`${this._sdk.sdkOptions.margin_trading.package_id}::position::PositionCap`}]}});if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:42 ~ PositionModules ~ ownerRes.data.length:",c.data.length),c.data.length===0)return Gt("PositionNotFound","Position not found"),[];let g=await this._sdk.SuiLendModule.getSuilendClient(o,e);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:48 ~ PositionModules ~ suiLendClient:",g);let{allLendingMarketData:m,lstAprPercentMap:M}=await this._sdk.SuiLendModule.getLendingMarketData();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:50 ~ PositionModules ~ allLendingMarketData:",m);let S=m[o].reserveMap;d||(d=new Map);let A=[];for(let N=0;N<c.data.length;N++){let L=Ar(c.data[N]);L.position_id&&A.push(L.position_id),L.id.id&&d.set(L.id.id,L.position_id)}await this._sdk.updateCache(a,d,Vn);let T=await this._sdk.FullClient.batchGetObjects(A,{showContent:!0});console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:73 ~ PositionModules ~ positionRes:",T);let D=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:m,lstAprPercentMap:M},!0);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:75 ~ PositionModules ~ obligations:",D);let R=[];for(let N=0;N<T.length;N++){let L=A[N],O="";for(let[Z,w]of d.entries())if(w===L){O=Z;break}let F=ki(T[N],O),q=await g.getObligation(F.obligation_owner_cap),W=Si(F,q,S||{},M||{},D[o].rewardMap),j=this.getObligationRewardsInfo(q,Object.values(S));R.push({...W,claimable_rewards:j})}return R}catch(a){return Gt("FetchError",a),[]}};this.getPositionInfo=async(r,i=this._sdk.getSenderAddress(),o=!0)=>{let e=`cap_to_position_mapping_${i}`,a=this._sdk.getCache(e,o);a||(a=new Map);let d=this.getCapIdByPositionId(r,i)||"";if(!d){let q=await this._sdk.FullClient.getOwnedObjectsByPage(i,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{StructType:`${this._sdk.sdkOptions.margin_trading.package_id}::position::PositionCap`}]}});for(let W=0;W<q.data.length;W++){let j=Ar(q.data[W]);j.id.id&&a.set(j.id.id,j.position_id),j.position_id===r&&(d=j.id.id)}}let c=await this._sdk.FullClient.batchGetObjects([r],{showContent:!0}),g=ki(c[0],d||""),{lending_market_id:m,lending_market_type:M}=jt(this._sdk.sdkOptions.suilend),S=await this._sdk.SuiLendModule.getSuilendClient(m,M),{allLendingMarketData:A,lstAprPercentMap:T}=await this._sdk.SuiLendModule.getLendingMarketData(),D=A[m].reserveMap,R=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:A,lstAprPercentMap:T},!0),N=await S.getObligation(g.obligation_owner_cap),L=this.getObligationRewardsInfo(N,Object.values(D));return{...Si(g,N,D||{},T||{},R[m].rewardMap),claimable_rewards:L}};this.getCapIdByPositionId=(r,i=this._sdk.getSenderAddress())=>{let o=`cap_to_position_mapping_${i}`,e=this._sdk.getCache(o,!1);if(!e)return"";for(let[a,d]of e.entries())if(d===r)return a;return""};this.repay=r=>{let{margin_trading:i}=this._sdk.sdkOptions,{lending_market_id:o,lending_market_type:e}=jt(this._sdk.sdkOptions.suilend),{global_config_id:a,versioned_id:d}=jt(this._sdk.sdkOptions.margin_trading),{txb:c,repay_amount:g,repay_coin_type:m,repay_coin:M,repay_reserve_array_index:S,market_id:A,position_cap_id:T,margin_trading_context:D}=r,R=c||new ne,N=M||Q.buildCoinWithBalance(BigInt(g.toString()),m,R);R.moveCall({target:`${i.published_at}::router::repay`,typeArguments:[e,m],arguments:[D,R.object(a),R.object(o),R.object(A),R.object(T),N,R.pure.u64(S.toString()),R.object(be),R.object(d)]})};this.withdrawAsset=(r,i)=>{let{margin_trading:o}=this._sdk.sdkOptions,{lending_market_id:e,lending_market_type:a}=jt(this._sdk.sdkOptions.suilend),{global_config_id:d,versioned_id:c}=jt(this._sdk.sdkOptions.margin_trading),{package_id:g}=this._sdk.sdkOptions.suilend,{market_id:m,withdraw_amount:M,withdraw_reserve_array_index:S,withdraw_coin_type:A,position_cap_id:T,margin_trading_context:D}=r,[R]=i.moveCall({target:"0x1::option::none",typeArguments:[`${g}::lending_market::RateLimiterExemption<${a}, ${A}>`],arguments:[]});return i.moveCall({target:`${o.published_at}::router::withdraw`,typeArguments:[a,A],arguments:[D,i.object(d),i.object(e),i.object(m),i.object(T),i.object(R),i.pure.u64(M),i.pure.u64(S),i.object(Cr),i.object(be),i.object(c)]})};this.borrowAsset=(r,i)=>{let{reserve_array_index:o,borrow_amount:e,base_token:a,quote_token:d,lending_market_id:c,is_long:g,market_id:m,position_cap_id:M,position_cap:S,margin_trading_context:A}=r,{margin_trading:T}=this._sdk.sdkOptions,{lending_market_type:D}=jt(this._sdk.sdkOptions.suilend),{global_config_id:R,versioned_id:N}=jt(this._sdk.sdkOptions.margin_trading);return i.moveCall({target:`${T.published_at}::router::borrow`,typeArguments:[D,g?d:a],arguments:[A,i.object(R),i.object(c),i.object(m),M?i.object(M):S,i.pure.u64(o),i.pure.u64(e.toString()),i.object(Cr),i.object(be),i.object(N)]})};this.createMarginTradingContext=(r,i)=>{let{published_at:o}=this._sdk.sdkOptions.margin_trading,{market_id:e,position_cap_id:a,action:d,coin_type:c,amount:g}=r;return i.moveCall({target:`${o}::router::create_margin_trading_context`,arguments:[i.object(e),i.object(a),i.pure.string(d),i.pure.u64(g)],typeArguments:[c]})};this.marginTradingContextConfirm=(r,i)=>{let{published_at:o}=this._sdk.sdkOptions.margin_trading;return i.moveCall({target:`${o}::router::confirm`,arguments:[r],typeArguments:[]}),i};this.openPosition=async r=>{let{is_quote:i,is_long:o,amount:e,swap_clmm_pool:a="",slippage:d,leverage:c,market_id:g}=r,{lending_market_id:m}=jt(this._sdk.sdkOptions.suilend),M=new ne,{base_token:S,quote_token:A}=await this._sdk.MarketModules.getMarketInfo(g),{flash_amount:T,flash_loan_coin:D,is_flash_a:R,borrow_amount:N,clmm_pool_coin_type_a:L,clmm_pool_coin_type_b:O,clmm_pool:F,base_reserve_array_index:q,quote_reserve_array_index:W,reserve:j,has_swap:Z,routers:w}=await this.calculatePositionDeposit({is_long:o,is_quote:i,amount:e,swap_clmm_pool:a,leverage:c,slippage:d,market_id:g,base_token:S,quote_token:A,is_submit:!0});console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:492 ~ PositionModules ~ routers:",w),await this._sdk.SuiLendModule.refreshReservePrices(M,j);let{balance_a:b,balance_b:k,receipt:x}=this._sdk.SwapModules.flashLoan({amount:T,clmm_pool:F,clmm_pool_coin_type_a:L,clmm_pool_coin_type_b:O,flash_loan_coin:D,tx:M}),C=o?A:S,p=o?S:A,t=Q.buildCoinWithBalance(BigInt(e),i?A:S,M),s=Q.fromBalance(b,L,M),u=Q.fromBalance(k,O,M);Z&&(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:515 ~ PositionModules ~ is_flash_a:",R),M.mergeCoins(t,[R?s:u])),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:521 ~ PositionModules ~ d(flash_amount).add(amount).toString():",I(T).add(e).toString(),C,p);let f=await this._sdk.SwapModules.handleSwap({from:C,to:p,amount:Z?I(T).add(e).toString():T,input_coin:Z?t:R?s:u,swap_clmm_pool:a,slippage:d,tx:M}),{position_cap:h,margin_trading_context:v}=this.createLeveragePosition({leverage:c,market_id:g,base_token:S,quote_token:A,is_long:o,init_deposit_amount:I(e).toString(),init_coin_type:i?A:S,tx:M}),P=o?q:W;f.swap_out_coin&&!Z&&M.mergeCoins(f.swap_out_coin,[t]),await this.depositToLeveragePosition({is_long:o,market_id:g,position_cap:h,deposit_reserve_array_index:P,input_coin:f.swap_out_coin,margin_trading_context:v,base_token:S,quote_token:A},M),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:580 ~ PositionModules ~ borrow_amount:",N);let _=this.borrowAsset({position_cap:h,reserve_array_index:o?W:q,borrow_amount:N,base_token:S,quote_token:A,is_long:o,lending_market_id:m,market_id:g,margin_trading_context:v},M),l=Q.mintBalanceZero(R?O:L,M);return this._sdk.SwapModules.repayFlashLoan({tx:M,clmm_pool:F,repay_base:R?Q.intoBalance(_,L,M):l,repay_quote:R?l:Q.intoBalance(_,O,M),receipt:x,clmm_pool_coin_type_a:L,clmm_pool_coin_type_b:O}),M.transferObjects([h],M.pure.address(this._sdk.getSenderAddress())),Q.destroyBalanceZero(R?Q.intoBalance(u,O,M):Q.intoBalance(s,L,M),R?O:L,M),this.marginTradingContextConfirm(v,M),M};this.positionDeposit=async r=>{let{position_id:i,swap_clmm_pool:o="",is_quote:e,amount:a,slippage:d,leverage:c,txb:g}=r,{lending_market_id:m}=jt(this._sdk.sdkOptions.suilend),{is_long:M,deposits:S,borrows:A,position_cap_id:T,market_id:D}=await this.getPositionInfo(i),{base_token:R,quote_token:N}=await this._sdk.MarketModules.getMarketInfo(D),L=g||new ne,O=this.createMarginTradingContext({market_id:D,position_cap_id:T,action:"increase_size",coin_type:e?N:R,amount:a.toString()},L),F=S[0].reserveArrayIndex.toString(),q=A[0].reserveArrayIndex.toString(),{flash_amount:W,flash_loan_coin:j,is_flash_a:Z,borrow_amount:w,clmm_pool_coin_type_a:b,clmm_pool_coin_type_b:k,clmm_pool:x,reserve:C,has_swap:p}=await this.calculatePositionDeposit({market_id:D,is_long:M,is_quote:e,amount:a,swap_clmm_pool:o,leverage:c,slippage:d,base_token:R,quote_token:N,position_id:i,is_open:!1});console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:603 ~ PositionModules ~ flash_amount:",W),await this._sdk.SuiLendModule.refreshReservePrices(L,C);let{balance_a:t,balance_b:s,receipt:u}=this._sdk.SwapModules.flashLoan({amount:W,clmm_pool:x,clmm_pool_coin_type_a:b,clmm_pool_coin_type_b:k,flash_loan_coin:j,tx:L}),f=M?N:R,h=M?R:N,v=Q.buildCoinWithBalance(BigInt(a),e?N:R,L),P=Q.fromBalance(t,b,L),_=Q.fromBalance(s,k,L);p&&L.mergeCoins(v,[Z?P:_]);let l=await this._sdk.SwapModules.handleSwap({from:f,to:h,amount:p?I(W).add(a).toString():W,input_coin:p?v:Z?P:_,swap_clmm_pool:o,slippage:d,tx:L});l.swap_out_coin&&!p&&L.mergeCoins(l.swap_out_coin,[v]),await this.depositToLeveragePosition({is_long:M,market_id:D,position_cap_id:T,deposit_reserve_array_index:F,input_coin:l.swap_out_coin,margin_trading_context:O,base_token:R,quote_token:N},L);let y=await this.borrowAsset({position_cap_id:T,reserve_array_index:q,borrow_amount:w,base_token:R,quote_token:N,is_long:M,lending_market_id:m,market_id:D,margin_trading_context:O},L),U=Q.mintBalanceZero(Z?k:b,L);return this._sdk.SwapModules.repayFlashLoan({tx:L,clmm_pool:x,repay_base:Z?Q.intoBalance(y,b,L):U,repay_quote:Z?U:Q.intoBalance(y,k,L),receipt:u,clmm_pool_coin_type_a:b,clmm_pool_coin_type_b:k}),Q.destroyBalanceZero(Z?Q.intoBalance(_,k,L):Q.intoBalance(P,b,L),Z?k:b,L),await this.marginTradingContextConfirm(O,L),L};this.positionWithdraw=async r=>{let{amount:i,is_quote:o,txb:e,swap_clmm_pool:a="",slippage:d,position_id:c,leverage:g}=r,m=e||new ne,{withdraw_ctoken_amount:M,repay_amount:S,is_close:A,deposits:T,borrows:D,reserve:R,base_token:N,quote_token:L,clmm_pool:O,clmm_pool_coin_type_a:F,clmm_pool_coin_type_b:q,position_cap_id:W,market_id:j,is_long:Z,swap_convert_all:w,flash_loan_amount:b,routers:k,repay_flash_loan_amount:x="0",partial_amount_in:C,withdraw_amount:p,has_flash_loan:t}=await this.calculatePositionWithdraw({position_id:c,is_quote:o,swap_clmm_pool:a,amount:i,leverage:g,slippage:d});if(A)return this.positionClose({position_id:c,is_quote:o,leverage:g,slippage:d,swap_clmm_pool:a});let s=this.createMarginTradingContext({market_id:j,position_cap_id:W,action:"decrease_size",coin_type:o?L:N,amount:i.toString()},m);await this._sdk.SuiLendModule.refreshReservePrices(m,R);let u,f;if(t){let{balance_a:_,balance_b:l,receipt:y,is_loan_a:U}=this._sdk.SwapModules.flashLoan({tx:m,amount:b,flash_loan_coin:D[0].reserve.coinType,clmm_pool:O,clmm_pool_coin_type_a:F,clmm_pool_coin_type_b:q});u=y,f=U,Q.destroyBalanceZero(f?l:_,f?q:F,m);let B=U?Q.fromBalance(_,F,m):Q.fromBalance(l,q,m);this.repay({txb:m,position_cap_id:W,repay_reserve_array_index:D[0].reserveArrayIndex.toString(),repay_coin:B,repay_coin_type:Z?L:N,repay_amount:"0",market_id:j,margin_trading_context:s}),m.transferObjects([B],this._sdk.getSenderAddress())}let h=this.withdrawAsset({market_id:j,position_cap_id:W,withdraw_amount:M.toString(),withdraw_reserve_array_index:T[0].reserveArrayIndex.toString(),withdraw_coin_type:Z?N:L,margin_trading_context:s},m);for(let _=1;_<T.length;_++){let l=this.withdrawAsset({market_id:j,position_cap_id:W,withdraw_amount:He.toString(),withdraw_reserve_array_index:T[_].reserveArrayIndex.toString(),withdraw_coin_type:T[_].coinType,margin_trading_context:s},m);m.transferObjects([l],this._sdk.getSenderAddress())}let v;if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:778 ~ PositionModules ~ swap_convert_all:",{swap_convert_all:w,has_flash_loan:t}),w)v=await this._sdk.SwapModules.routerSwap({router:k?.route_obj,input_coin:h,slippage:d,txb:m});else{let _=m.splitCoins(h,[m.pure.u64(C?.toString()||"0")]);v=await this._sdk.SwapModules.routerSwap({router:k?.route_obj,input_coin:_,slippage:d,txb:m})}let P;if(v&&t&&(P=m.splitCoins(v,[m.pure.u64(x.toString())])),P&&t){let _=Q.mintBalanceZero(f?q:F,m);this._sdk.SwapModules.repayFlashLoan({tx:m,clmm_pool:O,repay_base:f?Q.intoBalance(P,F,m):_,repay_quote:f?_:Q.intoBalance(P,q,m),clmm_pool_coin_type_a:F,clmm_pool_coin_type_b:q,receipt:u})}else if(v){let _=m.splitCoins(v,[m.pure.u64(x.toString())]);this.repay({txb:m,position_cap_id:W,repay_reserve_array_index:D[0].reserveArrayIndex.toString(),repay_coin:_,repay_coin_type:Z?L:N,repay_amount:"0",market_id:j,margin_trading_context:s}),m.transferObjects([_],this._sdk.getSenderAddress())}return v&&m.transferObjects([v],this._sdk.getSenderAddress()),w||m.transferObjects([h],this._sdk.getSenderAddress()),await this.marginTradingContextConfirm(s,m),m};this.positionClose=async r=>{let{position_id:i,is_quote:o,slippage:e,leverage:a,swap_clmm_pool:d=""}=r,{margin_trading:c}=this._sdk.sdkOptions,{global_config_id:g,versioned_id:m}=jt(this._sdk.sdkOptions.margin_trading),{lending_market_type:M,lending_market_id:S}=jt(this._sdk.sdkOptions.suilend),A=new ne,{deposits:T,borrows:D,base_token:R,quote_token:N,clmm_pool:L,clmm_pool_coin_type_a:O,clmm_pool_coin_type_b:F,position_cap_id:q,market_id:W,swap_convert_all:j,routers:Z,partial_amount_in:w,is_long:b,flash_loan_amount:k,reserve:x,repay_flash_loan_amount:C="0"}=await this.calculatePositionWithdraw({position_id:i,is_quote:o,swap_clmm_pool:d,amount:He.toString(),leverage:a,slippage:e}),p=this.createMarginTradingContext({market_id:W,position_cap_id:q,action:"close_position",coin_type:o?N:R,amount:"0"},A);await this._sdk.SuiLendModule.refreshReservePrices(A,x);let t,s;if(I(k).gt(0)){let{balance_a:h,balance_b:v,receipt:P,is_loan_a:_}=this._sdk.SwapModules.flashLoan({tx:A,amount:k,flash_loan_coin:b?N:R,clmm_pool:L,clmm_pool_coin_type_a:O,clmm_pool_coin_type_b:F});t=P,s=_,Q.destroyBalanceZero(s?v:h,s?F:O,A);let l=s?Q.fromBalance(h,O,A):Q.fromBalance(v,F,A);this.repay({txb:A,position_cap_id:q,repay_reserve_array_index:D[0].reserveArrayIndex.toString(),repay_coin:l,repay_coin_type:D[0].reserve.coinType,repay_amount:"0",market_id:W,margin_trading_context:p}),A.transferObjects([l],this._sdk.getSenderAddress())}let u=this.withdrawAsset({market_id:W,position_cap_id:q,withdraw_amount:He.toString(),withdraw_reserve_array_index:T[0].reserveArrayIndex.toString(),withdraw_coin_type:b?R:N,margin_trading_context:p},A);for(let h=1;h<T.length;h++){let v=this.withdrawAsset({market_id:W,position_cap_id:q,withdraw_amount:He.toString(),withdraw_reserve_array_index:T[h].reserveArrayIndex.toString(),withdraw_coin_type:T[h].coinType,margin_trading_context:p},A);A.transferObjects([v],this._sdk.getSenderAddress())}let f;if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:895 ~ PositionModules ~ swap_convert_all:",j),j)f=await this._sdk.SwapModules.routerSwap({router:Z?.route_obj,input_coin:u,slippage:e,txb:A});else if(w&&I(w).gt(0)){let h=A.splitCoins(u,[A.pure.u64(w?.toString()||"0")]);f=await this._sdk.SwapModules.routerSwap({router:Z?.route_obj,input_coin:h,slippage:e,txb:A})}if(f&&t){let h=Q.mintBalanceZero(s?F:O,A),v=A.splitCoins(f,[A.pure.u64(C?.toString()||"0")]);this._sdk.SwapModules.repayFlashLoan({tx:A,clmm_pool:L,repay_base:s?Q.intoBalance(v,O,A):h,repay_quote:s?h:Q.intoBalance(v,F,A),clmm_pool_coin_type_a:O,clmm_pool_coin_type_b:F,receipt:t})}return A.moveCall({target:`${c.published_at}::router::close_position`,typeArguments:[M],arguments:[p,A.object(g),A.object(S),A.object(W),A.object(q),A.object(be),A.object(m)]}),f&&A.transferObjects([f],this._sdk.getSenderAddress()),j||A.transferObjects([u],this._sdk.getSenderAddress()),this.marginTradingContextConfirm(p,A),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:951 ~ PositionModules ~ tx:",A),A};this.positionLeverageIncrease=async r=>{let{current_leverage:i,target_leverage:o,swap_clmm_pool:e="",slippage:a,position_id:d}=r,{lending_market_id:c}=jt(this._sdk.sdkOptions.suilend),g=new ne,{flash_loan_amount:m,quote_token:M,base_token:S,reserve:A,deposits:T,borrow_amount:D,routers:R,position_cap_id:N,is_long:L,market_id:O,is_flash_loan:F}=await this.calculatePositionLeverage({position_id:d,current_leverage:i,target_leverage:o,swap_clmm_pool:e,slippage:a}),q=L?M:S,W=this.createMarginTradingContext({market_id:O,position_cap_id:N,action:"increase_leverage",coin_type:L?S:M,amount:"0"},g);if(await this._sdk.SuiLendModule.refreshReservePrices(g,A),F){let{clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:Z,clmm_pool:w}=await this._sdk.SwapModules.getFlashLoanPool(q,m?.toString()||""),{balance_a:b,balance_b:k,receipt:x,is_loan_a:C}=this._sdk.SwapModules.flashLoan({tx:g,amount:m?.toString()||"0",clmm_pool:w,clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:Z,flash_loan_coin:q}),p=await this._sdk.SwapModules.routerSwap({router:R?.route_obj,input_coin:C?Q.fromBalance(b,j,g):Q.fromBalance(k,Z,g),slippage:a,txb:g});this.depositToLeveragePosition({is_long:L,market_id:O,position_cap_id:N,deposit_reserve_array_index:T[0].reserveArrayIndex.toString(),input_coin:p,margin_trading_context:W,base_token:S,quote_token:M},g);let t=this.borrowAsset({position_cap_id:N,reserve_array_index:L?A[1].arrayIndex.toString():A[0].arrayIndex.toString(),borrow_amount:D,base_token:S,quote_token:M,is_long:L,lending_market_id:c,market_id:O,margin_trading_context:W},g),s=Q.mintBalanceZero(C?Z:j,g);this._sdk.SwapModules.repayFlashLoan({tx:g,clmm_pool:w,repay_base:C?Q.intoBalance(t,j,g):s,repay_quote:C?s:Q.intoBalance(t,Z,g),receipt:x,clmm_pool_coin_type_a:j,clmm_pool_coin_type_b:Z}),Q.destroyBalanceZero(C?k:b,C?Z:j,g)}else{let j=this.borrowAsset({position_cap_id:N,reserve_array_index:L?A[1].arrayIndex.toString():A[0].arrayIndex.toString(),borrow_amount:D,base_token:S,quote_token:M,is_long:L,lending_market_id:c,market_id:O,margin_trading_context:W},g),Z=await this._sdk.SwapModules.routerSwap({router:R?.route_obj,input_coin:j,slippage:a,txb:g});this.depositToLeveragePosition({is_long:L,market_id:O,position_cap_id:N,deposit_reserve_array_index:T[0].reserveArrayIndex.toString(),input_coin:Z,margin_trading_context:W,base_token:S,quote_token:M},g)}return await this.marginTradingContextConfirm(W,g),g};this.positionLeverageDecrease=async r=>{let{current_leverage:i,target_leverage:o,swap_clmm_pool:e="",slippage:a,position_id:d}=r,{deposits:c,borrows:g,position_cap_id:m,market_id:M,is_long:S}=await this.getPositionInfo(d),{base_token:A,quote_token:T}=await this._sdk.MarketModules.getMarketInfo(M),D=new ne,{withdraw_ctoken_amount:R,routers:N,reserve:L,is_flash_loan:O}=await this.calculatePositionLeverage({position_id:d,current_leverage:i,target_leverage:o,swap_clmm_pool:e,slippage:a}),F=this.createMarginTradingContext({market_id:M,position_cap_id:m,action:"decrease_leverage",coin_type:S?A:T,amount:"0"},D);if(await this._sdk.SuiLendModule.refreshReservePrices(D,L),O){let{clmm_pool_coin_type_a:q,clmm_pool_coin_type_b:W,clmm_pool:j,clmm_fee_tier:Z}=await this._sdk.SwapModules.getFlashLoanPool(c[0].reserve.coinType,R.toString()),{balance_a:w,balance_b:b,receipt:k,is_loan_a:x}=this._sdk.SwapModules.flashLoan({tx:D,amount:R,clmm_pool:j,clmm_pool_coin_type_a:q,clmm_pool_coin_type_b:W,flash_loan_coin:c[0].reserve.coinType}),C=await this._sdk.SwapModules.routerSwap({router:N?.route_obj,input_coin:x?Q.fromBalance(w,q,D):Q.fromBalance(b,W,D),slippage:a,txb:D});this.repay({txb:D,market_id:M,position_cap_id:m,repay_reserve_array_index:g[0].reserveArrayIndex.toString(),repay_coin:C,repay_coin_type:S?T:A,repay_amount:"0",margin_trading_context:F}),C&&D.transferObjects([C],this._sdk.getSenderAddress());let p=I(R).mul(Z).toString(),t=I(R).add(p).toDP(0,dt.ROUND_UP),s=this.withdrawAsset({market_id:M,position_cap_id:m,withdraw_amount:t.toString(),withdraw_reserve_array_index:c[0].reserveArrayIndex.toString(),withdraw_coin_type:S?A:T,margin_trading_context:F},D),u=D.splitCoins(s,[t.toString()]);this._sdk.SwapModules.repayFlashLoan({tx:D,clmm_pool:j,repay_base:x?Q.intoBalance(u,q,D):w,repay_quote:x?b:Q.intoBalance(u,W,D),receipt:k,clmm_pool_coin_type_a:q,clmm_pool_coin_type_b:W}),D.transferObjects([s],this._sdk.getSenderAddress())}else{let q=this.withdrawAsset({market_id:M,position_cap_id:m,withdraw_amount:R.toString(),withdraw_reserve_array_index:c[0].reserveArrayIndex.toString(),withdraw_coin_type:S?A:T,margin_trading_context:F},D);D.transferObjects([q],this._sdk.getSenderAddress())}return await this.marginTradingContextConfirm(F,D),D};this.positionRepay=async r=>{let{position_id:i,amount:o,is_quote:e,slippage:a}=r,{routers:d,repay_coin_type:c,base_token:g,quote_token:m,borrows:M,deposits:S,market_id:A,position_cap_id:T}=await this.calculatePositionRepay({position_id:i,amount:o,is_quote:e}),D=this.extractOtherTokenTypes(S,M,g,m),{reserve:R}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(g,m,void 0,D),N=new ne;await this._sdk.SuiLendModule.refreshReservePrices(N,R);let L=e?m!==c:g!==c,O,F=this.createMarginTradingContext({market_id:A,position_cap_id:T,action:"repay_debt",coin_type:e?m:g,amount:o.toString()},N);if(L){let q=Q.buildCoinWithBalance(BigInt(o.toString()),e?m:g,N);O=await this._sdk.SwapModules.routerSwap({router:d?.route_obj,input_coin:q,slippage:a,txb:N})}else O=Q.buildCoinWithBalance(BigInt(o.toString()),e?m:g,N);return this.repay({txb:N,position_cap_id:T,repay_reserve_array_index:M[0].reserveArrayIndex.toString(),repay_coin:O,repay_coin_type:c,repay_amount:"0",market_id:A,margin_trading_context:F}),N.transferObjects([O],this._sdk.getSenderAddress()),await this.marginTradingContextConfirm(F,N),N};this.positionTopUpCToken=async r=>{let{position_id:i,amount:o,is_quote:e,swap_clmm_pool:a="",slippage:d}=r,c=new ne,{is_long:g,market_id:m,position_cap_id:M,deposits:S,borrows:A}=await this.getPositionInfo(i),{base_token:T,quote_token:D}=await this._sdk.MarketModules.getMarketInfo(m),R=g&&e||!g&&!e,N=await this.createMarginTradingContext({market_id:m,position_cap_id:M,action:"top_up_collateral",coin_type:e?D:T,amount:o.toString()},c),L=this.extractOtherTokenTypes(S,A,T,D),{base_reserve_array_index:O,quote_reserve_array_index:F,reserve:q}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(T,D,void 0,L);await this._sdk.SuiLendModule.refreshReservePrices(c,q);let W;if(R){let j=await this._sdk.SwapModules.findRouters(e?D:T,e?T:D,o,!0,[a]),Z=Q.buildCoinWithBalance(BigInt(o.toString()),e?D:T,c);W=await this._sdk.SwapModules.routerSwap({router:j?.route_obj,input_coin:Z,slippage:d,txb:c})}else W=Q.buildCoinWithBalance(BigInt(o.toString()),e?D:T,c);return await this.depositToLeveragePosition({is_long:g,market_id:m,position_cap_id:M,deposit_reserve_array_index:g?O:F,input_coin:W,margin_trading_context:N,base_token:T,quote_token:D},c),await this.marginTradingContextConfirm(N,c),c};this.positionWithdrawCToken=async r=>{let{position_id:i,amount:o,is_quote:e,swap_clmm_pool:a="",slippage:d}=r,c=new ne,{is_long:g,market_id:m,position_cap_id:M,deposits:S,borrows:A}=await this.getPositionInfo(i),{base_token:T,quote_token:D}=await this._sdk.MarketModules.getMarketInfo(m),R=g&&e||!g&&!e,N=await this.createMarginTradingContext({market_id:m,position_cap_id:M,action:"withdraw_collateral",coin_type:e?D:T,amount:o.toString()},c),L=this.extractOtherTokenTypes(S,A,T,D),{base_reserve_array_index:O,quote_reserve_array_index:F,reserve:q}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(T,D,void 0,L);await this._sdk.SuiLendModule.refreshReservePrices(c,q);let W=await this._sdk.SuiLendModule.getLatestPriceFeeds(q,!0),j=W[Ce(D)]?.price,Z=W[Ce(T)]?.price,w=g?I(j).div(I(Z)).toString():I(Z).div(I(j)).toString(),b=q[0].mintDecimals,k=q[1].mintDecimals,x=R?I(o).mul(w).div(10**(e?k:b)).mul(10**(g?b:k)).toDP(0,dt.ROUND_DOWN).toString():o.toString(),C=this.withdrawAsset({market_id:m,position_cap_id:M,withdraw_amount:x,withdraw_reserve_array_index:g?O:F,withdraw_coin_type:g?T:D,margin_trading_context:N},c);if(R){let p=await this._sdk.SwapModules.findRouters(g?T:D,e?D:T,x,!0,[a]),t=await this._sdk.SwapModules.routerSwap({router:p?.route_obj,input_coin:C,slippage:d,txb:c});t&&c.transferObjects([t],this._sdk.getSenderAddress())}else c.transferObjects([C],this._sdk.getSenderAddress());return await this.marginTradingContextConfirm(N,c),c};this.positionClaim=async r=>{let i=new ne,{position_cap_id:o,obligation_owner_cap:e,market_id:a,claimable_rewards:d}=await this.getPositionInfo(r);console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1650 ~ PositionModules ~ claimable_rewards:",d);let{suilend:c,margin_trading:g}=this._sdk.sdkOptions,m=jt(c).lending_market_id,M=jt(c).lending_market_type,{global_config_id:S,versioned_id:A}=jt(this._sdk.sdkOptions.margin_trading);for(let T=0;T<d.length;T++){let D=await this.createMarginTradingContext({market_id:a,position_cap_id:o,action:"claim_reward",coin_type:d[T].coinType,amount:I(d[T].earnedRewards).toFixed(0)},i),R=i.moveCall({target:`${g.published_at}::router::claim_rewards`,arguments:[D,i.object(S),i.object(m),i.object(a),i.object(o),i.pure.u64(d[T].reserveArrayIndex.toString()),i.pure.u64(d[T].rewardIndex.toString()),i.pure.bool(d[T].reserveType==="deposit"),i.object(be),i.object(A)],typeArguments:[M,d[T].coinType]});i.transferObjects([R],this._sdk.getSenderAddress()),await this.marginTradingContextConfirm(D,i)}return i};this.calculatePositionDeposit=async r=>{let{is_quote:i,is_long:o,amount:e,swap_clmm_pool:a="",leverage:d,by_amount_in:c=!0,base_token:g,quote_token:m,is_submit:M=!1,is_open:S=!0,position_id:A}=r,T=[],D=[],R=[];if(!S&&A){let{deposits:rt,borrows:G}=await this.getPositionInfo(A);D=rt,R=G,T=this.extractOtherTokenTypes(D,R,g,m)}let{reserve:N,base_reserve_array_index:L,quote_reserve_array_index:O}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(g,m,void 0,T),F=N[0].mintDecimals,q=N[1].mintDecimals,W=e.toString(),j=o&&i||!o&&!i,Z=await this._sdk.SuiLendModule.getLatestPriceFeedsByCoinTypes([g,m]),w=Z&&Z[m]?.price,b=Z&&Z[g]?.price;if(!w||!b)throw Gt("PriceNotFound","Price not found");if(j&&M){let rt=o?I(w).div(I(b)).toString():I(b).div(I(w)).toString();W=I(e).mul(rt).div(10**(i?q:F)).mul(10**(o?F:q)).toString(),console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:492 ~ PositionModules ~ initDepositAmount:",{initDepositAmount:W,rate:rt})}else if(j&&!M){let rt=o?m:g,G=o?g:m;W=(await this._sdk.SwapModules.findRouters(rt,G,W,!0,[a]))?.amount_out.toString()}else W=e;let{base_price:k,quote_price:x,flash_amount:C,flash_loan_fee:p,flash_loan_coin:t,is_flash_a:s,clmm_pool:u,clmm_fee_tier:f,clmm_pool_coin_type_a:h,clmm_pool_coin_type_b:v}=await this._sdk.SwapModules.calculateFlashLoan({is_long:o,leverage:d,base_token:g,quote_token:m,deposit_amount:W,reserve:N,base_token_decimal:F,quote_token_decimal:q}),P=await this._sdk.SwapModules.findRouters(o?m:g,o?g:m,C.toString(),!0,[a]),_=I(W).add(I(P?.amount_out.toString())).toDP(0,dt.ROUND_DOWN).toString(),l=I(_).mul(o?k:x).toString(),y=I(C).add(p).toDP(0,dt.ROUND_UP).toString(),U=I(y).mul(o?x:k).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1575 ~ PositionModules ~ depositAmount:",{depositAmount:_,borrowAmount:y});let B=i?I(e).div(10**(i?q:F)).mul(10**F).mul(d).div(k).toDP(0,dt.ROUND_DOWN).toString():I(e).mul(d).toDP(0,dt.ROUND_DOWN).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1583 ~ PositionModules ~ leverageDepositAmount:",B);let $="0",K="0",V="0",J="0";return!S&&A&&(R&&R.length>0&&($=I(R[0].borrowedAmount.toString()).mul(o?10**q:10**F).add(I(y)).toString(),K=I($).mul(o?w:b).toString()),V=I(D[0].depositedAmount.toString()).mul(o?10**F:10**q).add(I(_)).toString(),J=I(V).mul(o?b:w).toString()),{routers:P,leverage_deposit_amount:B,quote_price:x,base_price:k,clmm_fee_tier:f,flash_loan_fee:p,flash_loan_coin:t,deposit_amount:_,borrow_amount:y,deposit_amount_usd:l,borrow_amount_usd:U,after_borrow_amount:$,after_borrow_amount_usd:K,after_deposit_amount:V,after_deposit_amount_usd:J,flash_amount:C,is_flash_a:s,init_deposit_amount:W,clmm_pool_coin_type_a:h,clmm_pool_coin_type_b:v,clmm_pool:u,base_reserve_array_index:L,quote_reserve_array_index:O,reserve:N,has_swap:j}};this.calculatePositionWithdraw=async r=>{let{position_id:i,is_quote:o,swap_clmm_pool:e="",amount:a,leverage:d,slippage:c,withdraw_max:g}=r,{deposits:m,borrows:M,origin_obligation:S,position_cap_id:A,market_id:T,is_long:D}=await this.getPositionInfo(i),{base_token:R,quote_token:N}=await this._sdk.MarketModules.getMarketInfo(T),L=i?this.extractOtherTokenTypes(m,M,R,N):[],{reserve:O,base_reserve_map_info:F,quote_reserve_map_info:q}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(R,N,void 0,L),W=O[0].mintDecimals,j=O[1].mintDecimals,Z=D?F.cTokenExchangeRate:q.cTokenExchangeRate,w=await this._sdk.SuiLendModule.getLatestPriceFeeds(O,!0),b=w[Ce(N)]?.price,k=w[Ce(R)]?.price,x=I(0),C;D?(x=I(o?I(a).mul(b).toString():I(a).mul(k).toString()).div(o?10**j:10**W),C=o?I(a).div(k).div(10**j).mul(10**W).toString():I(a)):(x=I(o?I(a).mul(b).toString():I(a).mul(k).toString()).div(o?10**j:10**W),C=o?I(a):I(a).mul(k).div(10**W).mul(10**j).toString());let p=I(m[0].depositedAmountUsd.toString()).sub(I(M&&M.length>0?M[0].borrowedAmountUsd.toString():"0")).toString(),t=x.div(I(p)),s=g||I(t).gte(1),u,f=new dt(0);S&&S.borrows&&S.borrows.length>0&&(u=Xn(S.borrows[0],D?O[1]:O[0]),f=I(u.borrowedAmount.value.toString()).div(10**18).toDP(0,dt.ROUND_UP));let h=f.mul(s?1:t).toDP(0,dt.ROUND_UP).toString(),v=h.toString(),P,_,l,y,U,B;if(I(h).gt(0)){let{clmm_pool_coin_type_a:oe,clmm_pool_coin_type_b:at,clmm_fee_tier:nt,clmm_pool:Oe}=await this._sdk.SwapModules.getFlashLoanPool(D?N:R,v);U=oe||"",B=at||"",l=nt||0,y=Oe||"",P=I(v).mul(nt).toString(),_=I(v).mul(I(1).add(nt)).toDP(0,dt.ROUND_UP).toString()}let $=D&&o||!D&&!o,K,V;if($){let oe=I(m[0].depositedAmount.toString()).mul(10**(D?W:j)).mul(s?1:t).toDP(0,dt.ROUND_DOWN).toString();K=await this._sdk.SwapModules.findRouters(m[0].reserve.coinType,D?N:R,oe,!0,[e])}else V=I(h).mul(D?b:k).div(10**(D?j:W)).mul(10**(D?W:j)).div(D?k:b).mul(I(1).add(.0025)).toDP(0,dt.ROUND_DOWN).toString(),K=await this._sdk.SwapModules.findRouters(m[0].reserve.coinType,D?N:R,V.toString(),!0,[e]),s||(h=I(K?.amount_out.toString()).mul(I(1).sub(c)).toDP(0,dt.ROUND_DOWN).toString());C=I(C).mul(d).toDP(0,dt.ROUND_DOWN).toString(),x=I(x).mul(d);let J=f.mul(I(1).sub(t)).toString(),rt=I(J).mul(D?b:k).toString(),G=I(m[0].depositedAmount.toString()).mul(D?10**W:10**j).sub(I(C)).toString(),it=I(G).mul(D?k:b).toString(),ft=I(K?.amount_in.toString()).toString(),et=I(K?.amount_out.toString()).toString(),X=I(C).div(Z.toString()).toDP(0,dt.ROUND_DOWN).toString(),de=I(rt).div(I(10**(D?j:W))),lt=I(it).div(I(10**(D?W:j))),st=!0;if(M.length>0){let oe=I(M[0].borrowedAmountUsd.toString()),at=oe.div(lt).toString(),nt=I(m[0].reserve.config.openLtvPct).mul(I(.95)).div(100).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ positionModules.ts:1459 ~ PositionModules ~ afterLTV:",{afterLTV:at,ltv:nt,afterDepositAmount:G,afterDepositAmountUSD:lt,afterBorrowAmount:J,afterBorrowAmountUSD:de,withdrawAmount:C,currentBorrowAmountUSD:oe}),I(at).lte(nt)&&(st=!1)}return{amount_in:ft,amount_out:et,from:m[0].reserve.coinType,to:D?R:N,after_borrow_amount:J,after_borrow_amount_usd:rt,after_deposit_amount:G,after_deposit_amount_usd:it,flash_loan_fee:P,clmm_fee_tier:l,withdraw_amount:C,withdraw_ctoken_amount:X,repay_amount:h,ratio:t,is_close:s,is_long:D,deposits:m,borrows:M,reserve:O,base_token:R,quote_token:N,clmm_pool:y,clmm_pool_coin_type_a:U,clmm_pool_coin_type_b:B,position_cap_id:A,market_id:T,swap_convert_all:$,flash_loan_amount:v,routers:K,repay_flash_loan_amount:_,partial_amount_in:V,has_flash_loan:st}};this.calculatePositionLeverage=async r=>{let{position_id:i,current_leverage:o,target_leverage:e,swap_clmm_pool:a=""}=r,d=I(e).sub(I(o)),c=d.gt(0),{borrows:g,deposits:m,is_long:M,position_cap_id:S,market_id:A}=await this.getPositionInfo(i),{base_token:T,quote_token:D}=await this._sdk.MarketModules.getMarketInfo(A),R=this.extractOtherTokenTypes(m,g,T,D),{reserve:N}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(T,D,void 0,R),L=N[0].mintDecimals,O=N[1].mintDecimals,F=await this._sdk.SuiLendModule.getLatestPriceFeeds(N,!0),q=F[Ce(D)]?.price,W=F[Ce(T)]?.price,j=g.length>0,Z=m[0].depositedAmountUsd.toString(),w=m[0].depositedAmount.toString(),b=j?I(g[0].borrowedAmount.toString()).mul(10**(M?O:L)):I(0),k=j?g[0].borrowedAmountUsd.toString():I(0),x=j?I(g[0].reserve.config.borrowWeightBps.toString()).div(1e4).toString():"1",C=I(m[0].reserve.config.openLtvPct).mul(I(.95)).div(100).div(x).toString(),p=I(Z).sub(I(k)).mul(C).toString();if(c){let t=I(Z).div(o).mul(d),s=t.add(k).div(Z).toString(),u=t.div(M?q:W).mul(10**(M?O:L)).toDP(0,dt.ROUND_UP),f=I(s).gt(C),h=u,v=M?D:T,P=M?T:D,_=await this._sdk.SwapModules.findRouters(v,P,h.toString(),!0,[a]),l=I(_?.amount_out.toString()).toString(),y=I(l).mul(M?W:q).toString(),U,B,$,K,V,J="0",rt="0";if(f){let{clmm_pool_coin_type_a:X,clmm_pool_coin_type_b:de,clmm_pool:lt,clmm_fee_tier:st}=await this._sdk.SwapModules.getFlashLoanPool(v,h.toString());$=st,K=X,V=de,U=h.mul($).toString(),B=M?K==D:V==T,J=I(h).add(U).toDP(0,dt.ROUND_UP).toString(),rt=I(J).mul(M?q:W).toString()}else J=u.toString(),rt=t.toString();let G=I(w).add(I(l).div(10**(M?L:O))).toString(),it=I(G).mul(M?W:q).toString(),ft=I(b).add(I(J)).div(10**(M?O:L)).toString(),et=I(ft).mul(M?q:W).toString();return{amount_in:_?.amount_in.toString(),amount_out:_?.amount_out.toString(),flash_loan_fee:U,deposit_amount:l,borrow_amount:J,deposit_amount_usd:y,borrow_amount_usd:rt,flash_loan_amount:h,base_token:T,quote_token:D,reserve:N,deposits:m,borrows:g,clmm_fee_tier:$,is_flash_loan:f,is_loan_a:B,clmm_pool_coin_type_a:K,clmm_pool_coin_type_b:V,after_deposit_amount:G,after_borrow_amount:ft,after_deposit_amount_usd:it,after_borrow_amount_usd:et,position_cap_id:S,market_id:A,is_long:M,routers:_}}else{let s=I(Z).div(o).mul(d.abs()).div(M?q:W).mul(10**(M?O:L)).toDP(0,dt.ROUND_UP),u=await this._sdk.SwapModules.findRouters(m[0].reserve.coinType,g[0].reserve.coinType,s.toString(),!1,[a]),f=u?.amount_in.toString(),h=I(f).mul(M?W:q).div(10**(M?L:O)).toString(),v=I(Z).mul(C).toString(),P=I(k).div(I(Z).sub(I(h))).toString(),_=I(P).gt(C),l=s.toString(),y=I(l).mul(M?q:W).toString(),U=f,B=I(U).mul(M?W:q).toString(),$,K="",V="";if(_){let{clmm_pool_coin_type_a:ft,clmm_pool_coin_type_b:et,clmm_pool:X,clmm_fee_tier:de}=await this._sdk.SwapModules.getFlashLoanPool(g[0].reserve.coinType,l.toString());$=de,K=ft,V=et}let J=I(w).sub(I(U).div(10**(M?L:O))).toString(),rt=I(J).mul(M?W:q).toString(),G=I(b).sub(I(l)).div(10**(M?O:L)).toString(),it=I(G).mul(M?q:W).toString();return{amount_in:u?.amount_in.toString(),amount_out:u?.amount_out.toString(),deposit_amount:U,borrow_amount:l,deposit_amount_usd:B,borrow_amount_usd:y,base_token:T,quote_token:D,reserve:N,deposits:m,borrows:g,clmm_fee_tier:$,withdraw_ctoken_amount:f,is_flash_loan:_,clmm_pool_coin_type_a:K,clmm_pool_coin_type_b:V,after_deposit_amount:J,after_borrow_amount:G,after_deposit_amount_usd:rt,after_borrow_amount_usd:it,position_cap_id:S,market_id:A,is_long:M,routers:u}}};this.calculatePositionRepay=async r=>{let{position_id:i,amount:o,is_quote:e}=r,{borrows:a,deposits:d,is_long:c,market_id:g,position_cap_id:m}=await this._sdk.PositionModules.getPositionInfo(i),M=a[0].reserve.coinType,S=c?d[0].reserve.coinType:a[0].reserve.coinType,A=c?a[0].reserve.coinType:d[0].reserve.coinType,T,D=c?!e:e;return D&&(T=await this._sdk.SwapModules.findRouters(e?A:S,M,o,!0,[])),{routers:T,repay_coin_type:M,base_token:S,quote_token:A,is_long:c,borrows:a,deposits:d,market_id:g,position_cap_id:m,has_swap:D}};this._sdk=r}getObligationRewardsInfo(r,i){let o=[],e=new ut(10).pow(18),a={},d=Date.now();for(let g of i){let m=g.coinType,M=g.arrayIndex.toString(),S=g.depositsPoolRewardManager.poolRewards||[];for(let T of S){if(!T)continue;let D=T.id,R=T.coinType,N=parseInt(T.startTimeMs),L=parseInt(T.endTimeMs),O=d>=N&&d<L,F=T.mintDecimals,q=ut(T.cumulativeRewardsPerShare).times(10**F);a[D]={coinType:R,mintDecimals:F,isActive:O,reserveType:"deposit",reserveArrayIndex:M,reserveCoinType:m,globalCumulativePerShare:q,rewardIndex:T.rewardIndex,reserve:g}}let A=g.borrowsPoolRewardManager.poolRewards||[];for(let T of A){if(!T)continue;let D=T.id,R=T.coinType,N=parseInt(T.startTimeMs),L=parseInt(T.endTimeMs),O=d>=N&&d<L,F=T.mintDecimals,q=ut(T.cumulativeRewardsPerShare).times(10**F);a[D]={coinType:R,mintDecimals:F,isActive:O,reserveType:"borrow",reserveCoinType:m,reserveArrayIndex:M,rewardIndex:T.rewardIndex,globalCumulativePerShare:q,reserve:g}}}let c=r.userRewardManagers;for(let g of c)for(let m=0;m<g.rewards.length;m++){let M=g.rewards[m];if(!M)continue;let S=a[M.poolRewardId];if(!S)continue;let A=S.globalCumulativePerShare,T=new ut(M.cumulativeRewardsPerShare.value.toString()).div(e),D=new ut(g.share).times(A.minus(T)),R=new ut(M.earnedRewards.value).div(e),N=new ut(R).plus(D),L=S.reserve.price,O=N.div(10**S.mintDecimals),F=L?O.times(L).toFixed(12):0;I(F).gt(0)&&o.push({poolRewardId:M.poolRewardId,coinType:S.coinType,earnedRewards:N.toString(),earnedRewardsUsd:F,earnedRewardsFormatted:O.toFixed(12),isActive:S.isActive,reserveType:S.reserveType,reserveCoinType:S.reserveCoinType,reserveArrayIndex:S.reserveArrayIndex,rewardIndex:S.rewardIndex,rewardInfo:S})}return o}createLeveragePosition(r){let{lending_market_id:i,lending_market_type:o}=jt(this._sdk.sdkOptions.suilend),{global_config_id:e,versioned_id:a}=jt(this._sdk.sdkOptions.margin_trading),d=this._sdk.sdkOptions.margin_trading,{leverage:c,market_id:g,base_token:m,quote_token:M,is_long:S,init_deposit_amount:A,tx:T,init_coin_type:D}=r,[R,N]=T.moveCall({target:`${d.published_at}::router::open_position`,arguments:[T.object(e),T.object(g),T.object(i),T.pure.u64(A),T.pure.u64(I(c).mul(1e4).toString()),T.object(be),T.object(a)],typeArguments:[o,S?m:M,D]});return{position_cap:R,margin_trading_context:N}}async depositToLeveragePosition(r,i){let{margin_trading:o}=this._sdk.sdkOptions,{lending_market_type:e,lending_market_id:a}=jt(this._sdk.sdkOptions.suilend),{is_long:d,market_id:c,position_cap_id:g,position_cap:m,deposit_reserve_array_index:M,input_coin:S,margin_trading_context:A,base_token:T,quote_token:D}=r,{global_config_id:R,versioned_id:N}=jt(this._sdk.sdkOptions.margin_trading);return i.moveCall({target:`${o.published_at}::router::deposit`,typeArguments:[e,d?T:D],arguments:[A,i.object(R),i.object(a),i.object(c),g?i.object(g):m,S,i.pure.u64(M),i.object(be),i.object(N)]}),i}extractOtherTokenTypes(r,i,o,e){let a=[];return r.forEach(d=>{d.reserve.coinType!==o&&d.reserve.coinType!==e&&a.push(d.reserve.coinType)}),i.forEach(d=>{d.reserve.coinType!==o&&d.reserve.coinType!==e&&a.push(d.reserve.coinType)}),a}};import{SuilendClient as so}from"@suilend/sdk/client";import{initializeSuilend as ao,initializeSuilendRewards as lo,initializeObligations as uo,formatRewards as co,Side as ve,getFilteredRewards as fo,getStakingYieldAprPercent as ho,getDedupedPerDayRewards as po,getDedupedAprRewards as mo,getTotalAprPercent as Rr,getNetAprPercent as go}from"@suilend/sdk";import{linearlyInterpolate as to,Side as ye}from"@suilend/sdk";import{NORMALIZED_flSUI_COINTYPE as eo,NORMALIZED_jugSUI_COINTYPE as io,NORMALIZED_LBTC_COINTYPE as ro,formatLtvPercent as no}from"@suilend/sui-fe";import Jn from"crypto";var Je=new Uint8Array(256),Xe=Je.length;function Ii(){return Xe>Je.length-16&&(Jn.randomFillSync(Je),Xe=0),Je.slice(Xe,Xe+=16)}var Kt=[];for(let n=0;n<256;++n)Kt.push((n+256).toString(16).slice(1));function xr(n,r=0){return Kt[n[r+0]]+Kt[n[r+1]]+Kt[n[r+2]]+Kt[n[r+3]]+"-"+Kt[n[r+4]]+Kt[n[r+5]]+"-"+Kt[n[r+6]]+Kt[n[r+7]]+"-"+Kt[n[r+8]]+Kt[n[r+9]]+"-"+Kt[n[r+10]]+Kt[n[r+11]]+Kt[n[r+12]]+Kt[n[r+13]]+Kt[n[r+14]]+Kt[n[r+15]]}import Yn from"crypto";var Ei={randomUUID:Yn.randomUUID};function Qn(n,r,i){if(Ei.randomUUID&&!r&&!n)return Ei.randomUUID();n=n||{};let o=n.random||(n.rng||Ii)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,r){i=i||0;for(let e=0;e<16;++e)r[i+e]=o[e];return r}return xr(o)}var Ye=Qn;import{getPackagerConfigs as oo}from"@cetusprotocol/common-sdk";var Bi=10n;function Tr(n){return n.depositedAmount.eq(0)?new ut(0):n.borrowedAmount.div(n.depositedAmount).times(100)}function qi(n){let r=Tr(n);if(!r.gt(100))return to(n.config.interestRate,"utilPercent","aprPercent",r)}function Dr(n){let r=Tr(n),i=qi(n);if(!(i===void 0||r.gt(100)))return new ut(r.div(100)).times(i.div(100)).times(1-n.config.spreadFeeBps/1e4).times(100)}function ys(n,r,i,o){let{api_url:e}=oo(o.sdkOptions.suilend);n===ye.DEPOSIT&&([eo,io].includes(r.coinType)&&i.push({stats:{id:Ye(),isActive:!0,rewardIndex:-1,reserve:r,rewardCoinType:"LIQ_AG",mintDecimals:0,symbol:"LiqAg Points",iconUrl:`${e}/partners/LiqAg.png`,perDay:new ut(.036),side:ye.DEPOSIT},obligationClaims:{}}),r.coinType===ro&&i.push({stats:{id:Ye(),isActive:!0,rewardIndex:-1,reserve:r,rewardCoinType:"LOMBARD",mintDecimals:0,symbol:"3x Lombard Lux",iconUrl:`${e}/partners/Lombard Lux.png`,perDay:new ut(0),side:ye.DEPOSIT},obligationClaims:{}}))}function ks(n,r,i){return{...n,depositedAmount:r===ye.DEPOSIT?ut.max(n.depositedAmount.plus(i),0):n.depositedAmount,borrowedAmount:r===ye.BORROW?ut.max(n.borrowedAmount.plus(i),0):n.borrowedAmount}}function Ss(n,r,i){let o=n===ye.DEPOSIT?r.depositedAmount:r.borrowedAmount,e=n===ye.DEPOSIT?i.depositedAmount:i.borrowedAmount,a=e.eq(0)?new ut(-1):o.div(e);return{multiplier:a,isValid:!a.eq(-1)}}function Ps(n,r,i,o){let e=n.map(d=>({...d,stats:{...d.stats,perDay:o?d.stats.perDay.times(i):void 0}})),a=r.map(d=>({...d,stats:{...d.stats,aprPercent:o?d.stats.aprPercent.times(i):void 0}}));return{newPerDayRewards:e,newAprRewards:a}}function Or(n,r){if(!Bi)throw new Error("oraclePriceMultiplierDecimal is required");if(n===0n)throw new Error("Invalid oracle price");if(r<0n){let i=10n**(Bi- -r);return n*i}return n/10n**(r+Bi)}function As(n){return no(new ut(n))}import{d as Fi,getPackagerConfigs as xe,removeHexPrefix as Qe}from"@cetusprotocol/common-sdk";import{toHEX as Lr}from"@mysten/sui/utils";var ti=class{constructor(r){this.getCoinAprByAmount=async(r,i,o)=>{let e=new ut(i.toString()),{allLendingMarketData:a,lstAprPercentMap:d}=await this.getLendingMarketData(!1);if(await this.getInitializeObligations({allLendingMarketData:a,lstAprPercentMap:d},!0),!a||!d)throw new Error("lendingMarketCache is not initialized");let c=Object.values(a??{})[0],g=c.lendingMarket.reserves.find(w=>w.coinType===r);if(!g)throw new Error("reserve not found");let M=(this.obligationsCache?.[c.lendingMarket.id]).rewardMap[g.token.coinType]?.[o]??[],S=fo(M),A=ho(o,g.coinType,d),T=o===ve.DEPOSIT?g.depositAprPercent:g.borrowAprPercent,D=T,R=new ut(1),N=!0;if(o!==void 0&&e!==void 0&&e.gt(0)){let w={...g,depositedAmount:o===ve.DEPOSIT?ut.max(g.depositedAmount.plus(o===ve.DEPOSIT?e:e.negated()),0):g.depositedAmount,borrowedAmount:o===ve.BORROW?ut.max(g.borrowedAmount.plus(o===ve.BORROW?e:e.negated()),0):g.borrowedAmount};D=o===ve.DEPOSIT?Dr(w):qi(w);let b=o===ve.DEPOSIT?g.depositedAmount:g.borrowedAmount,k=o===ve.DEPOSIT?w.depositedAmount:w.borrowedAmount;R=k.eq(0)?new ut(-1):b.div(k),N=!R.eq(-1)}let F=po(S).map(w=>({...w,stats:{...w.stats,perDay:N?w.stats.perDay.times(R):void 0}})),W=mo(S).map(w=>({...w,stats:{...w.stats,aprPercent:N?w.stats.aprPercent.times(R):void 0}})),j=Rr(o,T,S,A),Z=D===void 0||W.some(w=>w.stats.aprPercent===void 0)?void 0:Rr(o,D,W,A);return console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:315 ~ SuiLendModule ~ newTotalAprPercent:",Z?.toString()),{new_total_apr_percent:Z?.toString(),total_apr_percent:j.toString()}};this.refreshReservePrice=async(r,i,o)=>{let{lending_market_id:e,lending_market_type:a}=xe(this.sdk.sdkOptions?.suilend),d=`${e}_${a}`;if(!this.suilendClientCache)throw new Error("suilendClientCache is not initialized");let c=await this.suilendClientCache[d].pythClient.getPriceFeedObjectId(i);this.suilendClientCache[d].refreshReservePrices(r,c,o)};this.getLatestPriceFeeds=async(r,i=!1)=>{let{lending_market_id:o,lending_market_type:e}=xe(this.sdk.sdkOptions?.suilend),a={},d=[];if(r.forEach(M=>{let S=this.sdk.getCache(`getLatestPrice_${M.coinType.name}`,i);S&&this.priceCheck(S,60)?a[M.coinType.name]=S:d.push(M.coinType.name)}),d.length==0)return a;let c=`${o}_${e}`;if(!this.suilendClientCache)throw new Error("suilendClient is not initialized");let g=Array.from(new Set(r.map(M=>M?.priceIdentifier?.bytes?Lr(new Uint8Array(M.priceIdentifier.bytes)):Qe(M.priceIdentifier.toString()))));return(await this.suilendClientCache[c].pythConnection.getLatestPriceFeeds(g))?.forEach((M,S)=>{let A=M.getPriceUnchecked(),T=r[S];if(A){let{price:D,expo:R}=A,N=Fi(D).mul(Fi(10).pow(Fi(R))).toString(),L={coin_type:T.coinType.name||T.coinType,price:N,oracle_price:0n,last_update_time:A.publishTime};L.oracle_price=Or(BigInt(D),BigInt(R)),a[T.coinType.name||T.coinType]=L,this.sdk.updateCache(`getLatestPrice_${L.coin_type}`,L)}}),a};this.getLatestPriceFeedsByCoinTypes=async(r,i=!1)=>{try{let{lending_market_id:o}=xe(this.sdk.sdkOptions?.suilend),{allLendingMarketData:e}=await this.getLendingMarketData(!1),a=[];return r.forEach(c=>{let g=e[o].reserveMap[c];a.push(g)}),await this.getLatestPriceFeeds(a,i)}catch(o){Gt("FetchError",o);return}};this.getSuiLendReserveInfo=async(r,i,o,e)=>{let{lending_market_id:a}=xe(this.sdk.sdkOptions?.suilend);o||(o=(await this.getLendingMarketData(!1)).allLendingMarketData);let d=o[a].reserveMap[r],c=o[a].reserveMap[i],g=o[a].refreshedRawReserves.filter(T=>T.coinType.name==Qe(r)),m=o[a].refreshedRawReserves.filter(T=>T.coinType.name==Qe(i)),M=o[a].reserveMap[r],S=o[a].reserveMap[i],A=[];return e&&e.forEach(T=>{let D=o[a].refreshedRawReserves.filter(R=>R.coinType.name==Qe(T));A.push(...D)}),{base_reserve_array_index:d.arrayIndex.toString(),quote_reserve_array_index:c.arrayIndex.toString(),reserve:[g[0],m[0],...A],base_reserve_map_info:M,quote_reserve_map_info:S}};this.refreshReservePrices=async(r,i)=>{for(let o=0;o<i.length;o++){let e=Lr(new Uint8Array(i[o].priceIdentifier.bytes));await this.refreshReservePrice(r,e,BigInt(i[o].arrayIndex))}};this.refreshReservePricesV2=async(r,i)=>{for(let o=0;o<i.length;o++){let e=i[o].priceIdentifier.toString();await this.refreshReservePrice(r,e,BigInt(i[o].arrayIndex))}};this.sdk=r}async getSuilendClient(r,i){let o=`${r}_${i}`;return this.suilendClientCache||(this.suilendClientCache={}),this.suilendClientCache[o]||(this.suilendClientCache[o]=await so.initialize(r,i,this.sdk.FullClient,!0)),this.suilendClientCache[o]}async getLendingMarketData(r=!0){let i="lendingMarketData",o=this.sdk.getCache(i,r);if(o)return o;let e=xe(this.sdk.sdkOptions?.suilend)?.lending_market||[];if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:67 ~ SuiLendModule ~ getLendingMarketData ~ lendingMarkets:",e),!e.length)return console.warn("\u26A0\uFE0F No lending markets configured."),{};try{let[a,d]=await Promise.all([(async()=>Object.fromEntries(await Promise.all(e.map(async g=>{let m=await this.getSuilendClient(g.id,g.type),{lendingMarket:M,coinMetadataMap:S,refreshedRawReserves:A,reserveMap:T,reserveCoinTypes:D,reserveCoinMetadataMap:R,rewardCoinTypes:N,activeRewardCoinTypes:L,rewardCoinMetadataMap:O}=await ao(this.sdk.FullClient,m),{rewardPriceMap:F}=await lo(T,L);return[g.id,{suilendClient:m,lendingMarket:M,coinMetadataMap:S,refreshedRawReserves:A,reserveMap:T,reserveCoinTypes:D,reserveCoinMetadataMap:R,rewardPriceMap:F,rewardCoinTypes:N,activeRewardCoinTypes:L,rewardCoinMetadataMap:O}]}))))(),(async()=>{try{let c=await fetch(`${this.sdk.sdkOptions?.suilend?.config?.api_url}/springsui/apy`),g=await c.json();if(c?.statusCode===500)throw new Error("Failed to fetch SpringSui LST APRs");return Object.fromEntries(Object.entries(g).map(([m,M])=>[m,new ut(M)]))}catch(c){return console.error(c),{}}})()]);return this.sdk.updateCache(i,{allLendingMarketData:a,lstAprPercentMap:d},30*1e3),{allLendingMarketData:a,lstAprPercentMap:d}}catch(a){throw console.log("\u{1F680} getLendingMarketData error:",a),a}}async getInitializeObligations(r,i=!1){if(!i&&this.obligationsCache)return this.obligationsCache;r||(r=await this.getLendingMarketData(!1));let o={};for(let e of Object.values(r.allLendingMarketData)){let{obligationOwnerCaps:a,obligations:d}=await uo(this.sdk.FullClient,e.suilendClient,e.refreshedRawReserves,e.reserveMap,this.sdk.senderAddress);d.length>0&&console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:181 ~ SuiLendModule ~ getInitializeObligations ~ obligations:",d[0].original.allowedBorrowValueUsd.value.toString());let c=co(e.reserveMap,e.rewardCoinMetadataMap,e.rewardPriceMap,d);o[e.lendingMarket.id]={obligationOwnerCaps:a,obligations:d,rewardMap:c}}return this.obligationsCache=o,this.obligationsCache}async getSuiLendUserData(r,i=!1){let{allLendingMarketData:o,lstAprPercentMap:e}=await this.getLendingMarketData(!1),a=await this.getInitializeObligations({allLendingMarketData:o,lstAprPercentMap:e},!1),{lending_market_id:d}=xe(this.sdk.sdkOptions?.suilend),c=a[d];if(!c)throw new Error(`No user data found for lending market: ${d}`);let g=c.obligations.find(M=>M.id===r);if(!g)throw new Error(`Obligation not found: ${r}`);let m=go(g,c.rewardMap,e??{});return{obligation:g,netAprPercent:m,deposits:g.deposits,borrowedAmount:g.borrowedAmount,depositedAmount:g.depositedAmount,netValueUsd:g.netValueUsd,rewardMap:c.rewardMap}}priceCheck(r,i=60){let o=Math.floor(Date.now()/1e3);if(!(Math.abs(o-r.last_update_time)>i))return r}};var $i=Gr(Ir());import{Transaction as _o}from"@mysten/sui/transactions";import{addHexPrefix as wo,CoinAssist as ji,d as ee,getPackagerConfigs as Er,removeHexPrefix as Br}from"@cetusprotocol/common-sdk";var ei=class{constructor(r){this.routerSwap=async r=>{let{slippage:i,txb:o,input_coin:e,router:a}=r,d=o||new _o;if(a)return await this._sdk.AggregatorClient.routerSwap({router:a,inputCoin:e,slippage:i,txb:d})};this.flashLoan=r=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:183 ~ SwapModules ~ params:",r);let{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:o}=Er(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{amount:e,clmm_pool:a,clmm_pool_coin_type_a:d,clmm_pool_coin_type_b:c,flash_loan_coin:g,tx:m}=r,M=wo(d)===g;console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:188 ~ SwapModules ~ isLoanA:",M);let[S,A,T]=m.moveCall({target:`${i.published_at}::pool::flash_loan`,arguments:[m.object(o),m.object(a),m.pure.bool(M),m.pure.u64(e.toString())],typeArguments:[d,c]});return{balance_a:S,balance_b:A,receipt:T,is_loan_a:M,loan_coin_type:M?d:c}};this.getFlashLoanPool=async(r,i)=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:201 ~ SwapModules ~ flash_amount:",i,r);try{let o=await fetch(`https://api-sui.cetus.zone/v3/sui/margin_trading/pools?coin_type=${r}&min_amount=${i}`),{data:e}=await o.json();return console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:206 ~ SwapModules ~ data:",e),e&&e.length>0?{clmm_pool_coin_type_a:e[0].coin_type_a,clmm_pool_coin_type_b:e[0].coin_type_b,clmm_pool:e[0].pool_id,clmm_fee_tier:ee(e[0].fee_rate).div(1e6).toString()}:(Gt("FlashLoanPoolNotFound","FlashLoanPoolNotFound"),{clmm_pool_coin_type_a:"",clmm_pool_coin_type_b:"",clmm_pool:"",clmm_fee_tier:""})}catch(o){return Gt("FetchError",o),{clmm_pool_coin_type_a:"",clmm_pool_coin_type_b:"",clmm_pool:"",clmm_fee_tier:""}}};this.repayFlashLoan=r=>{let{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:o}=Er(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{tx:e,repay_base:a,repay_quote:d,receipt:c,clmm_pool:g,clmm_pool_coin_type_a:m,clmm_pool_coin_type_b:M}=r;return e.moveCall({target:`${i.published_at}::pool::repay_flash_loan`,arguments:[e.object(o),e.object(g),a,d,c],typeArguments:[m,M]}),e};this._sdk=r}async findRouters(r,i,o,e,a){try{let d={from:r,target:i,amount:new $i.default(ee(o).toFixed(0).toString()),byAmountIn:e,depth:3},c=await this._sdk.AggregatorClient.findRouters(d);if(c?.error?.code===10001)return{...c,is_exceed:c.insufficientLiquidity};if(c?.insufficientLiquidity)return{...c,is_exceed:c.insufficientLiquidity};if(!c?.paths||c?.paths?.length===0)throw Error("Aggregator no router");return{amount_in:c.amountIn.toString(),amount_out:c.amountOut.toString(),is_exceed:c.insufficientLiquidity,route_obj:c,by_amount_in:!0,origin_res:c}}catch{try{if(a){let c=await this._sdk.AggregatorClient.swapInPools({from:r,target:i,amount:new $i.default(ee(o).toFixed(0).toString()),byAmountIn:e,pools:a});return c?{amount_in:c.routeData.amountIn.toString(),amount_out:c.routeData.amountOut.toString(),is_exceed:c.isExceed,route_obj:c.routeData,by_amount_in:!0,origin_res:c}:null}return null}catch{return null}}}async handleSwapLogic(r){let{is_long:i,is_quote:o,amount:e,base_token:a,quote_token:d,swap_clmm_pool:c="",slippage:g,tx:m}=r,M=i&&o||!i&&!o,S,A,T=e;if(M){let D=i&&o?d:a,R=i&&o?a:d,N=await this.findRouters(D,R,e,!0,[c]);if(T=N?.amount_out.toString(),N){let L=ji.buildCoinWithBalance(BigInt(e),D,m);A=await this.routerSwap({router:N.route_obj,slippage:g,input_coin:L,txb:m}),S=A}}else S=ji.buildCoinWithBalance(BigInt(e.toString()),o?d:a,m);return{has_swap:M,input_coin:S,init_deposit_amount:T}}async handleSwap(r){let{swap_clmm_pool:i="",slippage:o,amount:e,from:a,to:d,tx:c,input_coin:g}=r,m=await this.findRouters(a,d,e,!0,[i]),M=m.amount_out.toString();return{swap_out_coin:await this.routerSwap({router:m.route_obj,slippage:o,input_coin:g||ji.buildCoinWithBalance(BigInt(e),a,c),txb:c}),amount_out:M}}async calculateFlashLoan(r){let{is_long:i,leverage:o,base_token:e,quote_token:a,deposit_amount:d,reserve:c,base_token_decimal:g,quote_token_decimal:m}=r,M=await this._sdk.SuiLendModule.getLatestPriceFeeds(c),S=M&&M[Br(a)]?.price,A=M&&M[Br(e)]?.price,T=i?ee(A).div(ee(S)).toString():ee(S).div(ee(A)).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:267 ~ SwapModules ~ calculateFlashLoan ~ deposit_amount:",d,T,g,m);let D=ee(d).mul(ee(o).sub(1)).mul(T).div(10**(i?g:m)).mul(10**(i?m:g)).toDP(0,dt.ROUND_UP).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ swapModules.ts:274 ~ SwapModules ~ calculateFlashLoan ~ flashAmount:",ee(d).mul(ee(o).sub(1)).mul(T).div(10**(i?g:m)).mul(10**(i?m:g)).toString(),D);let R=i?a:e,{clmm_pool_coin_type_a:N,clmm_fee_tier:L,clmm_pool:O,clmm_pool_coin_type_b:F}=await this.getFlashLoanPool(R,D),q=N===R,W=ee(D).mul(L).toString();return{flash_amount:D,rate:T,quote_price:S,base_price:A,flash_loan_coin:R,is_flash_a:q,flash_loan_fee:W,clmm_pool:O,clmm_pool_coin_type_a:N,clmm_pool_coin_type_b:F,clmm_fee_tier:L}}};var ii=class n extends yo{constructor(r,i){super(r),this._suilendModule=new ti(this),this._permissionModules=new Be(this),this._marketModules=new Ee(this),this._positionModules=new Ve(this),this._swapModules=new ei(this),this._aggregatorClient=new So({signer:Mo("0x0"),client:r.sui_client||new vo({url:r.full_rpc_url}),env:r.env==="testnet"?qr.Testnet:qr.Mainnet}),this._clmmSDK=i||ko.createSDK({env:r.env,full_rpc_url:r.full_rpc_url}),this._pythConnection=new bo("https://hermes.pyth.network",{timeout:30*1e3})}get SuiLendModule(){return this._suilendModule}get PermissionModules(){return this._permissionModules}get MarketModules(){return this._marketModules}get PositionModules(){return this._positionModules}get SwapModules(){return this._swapModules}get AggregatorClient(){return this._aggregatorClient}get ClmmSDK(){return this._clmmSDK}get PythConnection(){return this._pythConnection}static createSDK(r){return n.createCustomSDK({...rr,...r})}static createCustomSDK(r){return new n(r)}};var da=ii;export{ii as CetusMarginTradingSDK,ys as appendExtraRewards,qi as calculateBorrowAprPercent,Dr as calculateDepositAprPercent,Tr as calculateUtilizationPercent,da as default,As as formatLtvPercentValue,Or as getPriceWithFormattedDecimals,Ss as getRewardsAprMultiplier,ks as getUpdatedReserve,rr as margin_trading_mainnet,Si as mergePositionData,Bi as oraclePriceMultiplierDecimal,Ps as updateRewardsWithMultiplier,yi as wrapMarketInfo,Pi as wrapMarketPermissions,ki as wrapPosition};
|
|
2
2
|
/*! Bundled license information:
|
|
3
3
|
|
|
4
4
|
decimal.js/decimal.mjs:
|