(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,e.JSBI=t())})(this,function(){'use strict';var e=Math.imul,t=Math.clz32;function i(e){"@babel/helpers - typeof";return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var _,n=0;ne.length)&&(t=e.length);for(var _=0,n=Array(t);_=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(t){throw t},f:l}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var g,a=!0,u=!1;return{s:function(){_=_.call(e)},n:function(){var e=_.next();return a=e.done,e},e:function(t){u=!0,g=t},f:function(){try{a||null==_.return||_.return()}finally{if(u)throw g}}}}var k=function(e){var t=Math.abs,n=Math.max;function o(e,t){var i;if(_(this,o),e>o.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded");return i=a.call(this,e),i.sign=t,i}g(o,e);var a=c(o);return l(o,[{key:"toDebugString",value:function(){var e,t=["BigInt["],i=y(this);try{for(i.s();!(e=i.n()).done;){var _=e.value;t.push((_?(_>>>0).toString(16):_)+", ")}}catch(e){i.e(e)}finally{i.f()}return t.push("]"),t.join("")}},{key:"toString",value:function(){var e=0e||36this.length&&(_=this.length);for(var n=65535&e,l=e>>>16,g=0,a=65535&t,u=t>>>16,s=0;s<_;s++){var r=this.__digit(s),d=65535&r,h=r>>>16,b=o.__imul(d,n),m=o.__imul(d,l),c=o.__imul(h,n),v=o.__imul(h,l),f=a+(65535&b),y=u+g+(f>>>16)+(b>>>16)+(65535&m)+(65535&c);a=(m>>>16)+(c>>>16)+(65535&v)+(y>>>16),g=a>>>16,a&=65535,u=v>>>16;this.__setDigit(s,65535&f|y<<16)}if(0!==g||0!==a||0!==u)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(e,t,_){for(var n,l=0,g=0;g<_;g++)n=this.__halfDigit(t+g)+e.__halfDigit(g)+l,l=n>>>16,this.__setHalfDigit(t+g,n);return l}},{key:"__inplaceSub",value:function(e,t,_){var n=0;if(1&t){t>>=1;for(var l=this.__digit(t),g=65535&l,o=0;o<_-1>>>1;o++){var a=e.__digit(o),u=(l>>>16)-(65535&a)-n;n=1&u>>>16,this.__setDigit(t+o,u<<16|65535&g),l=this.__digit(t+o+1),g=(65535&l)-(a>>>16)-n,n=1&g>>>16}var s=e.__digit(o),r=(l>>>16)-(65535&s)-n;n=1&r>>>16,this.__setDigit(t+o,r<<16|65535&g);if(t+o+1>=this.length)throw new RangeError("out of bounds");0==(1&_)&&(l=this.__digit(t+o+1),g=(65535&l)-(s>>>16)-n,n=1&g>>>16,this.__setDigit(t+e.length,4294901760&l|65535&g))}else{t>>=1;for(var d=0;d>>16;var c=(h>>>16)-(b>>>16)-n;n=1&c>>>16,this.__setDigit(t+d,c<<16|65535&m)}var v=this.__digit(t+d),f=e.__digit(d),y=(65535&v)-(65535&f)-n;n=1&y>>>16;var k=0;0==(1&_)&&(k=(v>>>16)-(f>>>16)-n,n=1&k>>>16),this.__setDigit(t+d,k<<16|65535&y)}return n}},{key:"__inplaceRightShift",value:function(e){if(0!==e){for(var t,_=this.__digit(0)>>>e,n=this.length-1,l=0;l>>e;this.__setDigit(n,_)}}},{key:"__digit",value:function(e){return this[e]}},{key:"__unsignedDigit",value:function(e){return this[e]>>>0}},{key:"__setDigit",value:function(e,t){this[e]=0|t}},{key:"__setDigitGrow",value:function(e,t){this[e]=0|t}},{key:"__halfDigitLength",value:function(){var e=this.length;return 65535>=this.__unsignedDigit(e-1)?2*e-1:2*e}},{key:"__halfDigit",value:function(e){return 65535&this[e>>>1]>>>((1&e)<<4)}},{key:"__setHalfDigit",value:function(e,t){var i=e>>>1,_=this.__digit(i),n=1&e?65535&_|t<<16:4294901760&_|65535&t;this.__setDigit(i,n)}}],[{key:"BigInt",value:function(e){var t=Math.floor,_=Number.isFinite;if("number"==typeof e){if(0===e)return o.__zero();if((0|e)===e)return 0>e?o.__oneDigit(-e,!0):o.__oneDigit(e,!1);if(!_(e)||t(e)!==e)throw new RangeError("The number "+e+" cannot be converted to BigInt because it is not an integer");return o.__fromDouble(e)}if("string"==typeof e){var n=o.__fromString(e);if(null===n)throw new SyntaxError("Cannot convert "+e+" to a BigInt");return n}if("boolean"==typeof e)return!0===e?o.__oneDigit(1,!1):o.__zero();if("object"===i(e)){if(e.constructor===o)return e;var l=o.__toPrimitive(e);return o.BigInt(l)}throw new TypeError("Cannot convert "+e+" to a BigInt")}},{key:"toNumber",value:function(e){var t=e.length;if(0===t)return 0;if(1===t){var i=e.__unsignedDigit(0);return e.sign?-i:i}var _=e.__digit(t-1),n=o.__clz32(_),l=32*t-n;if(1024>>=12;var d=s-12,h=12<=s?0:a<<20+s,b=20+s;0>>32-d,h=a<>>32-b,b-=32);var m=o.__decideRounding(e,b,u,a);if((1===m||0===m&&1==(1&h))&&(h=h+1>>>0,0===h&&(r++,0!=r>>>20&&(r=0,g++,1023=o.__kMaxLengthBits)throw new RangeError("BigInt too big");if(1===e.length&&2===e.__digit(0)){var _=1+(i>>>5),n=e.sign&&0!=(1&i),l=new o(_,n);l.__initializeDigits();var g=1<<(31&i);return l.__setDigit(_-1,g),l}var a=null,u=e;for(0!=(1&i)&&(a=e),i>>=1;0!==i;i>>=1)u=o.multiply(u,u),0!=(1&i)&&(null===a?a=u:a=o.multiply(a,u));return a}},{key:"multiply",value:function(e,t){if(0===e.length)return e;if(0===t.length)return t;var _=e.length+t.length;32<=e.__clzmsd()+t.__clzmsd()&&_--;var n=new o(_,e.sign!==t.sign);n.__initializeDigits();for(var l=0;lo.__absoluteCompare(e,t))return o.__zero();var i,_=e.sign!==t.sign,n=t.__unsignedDigit(0);if(1===t.length&&65535>=n){if(1===n)return _===e.sign?e:o.unaryMinus(e);i=o.__absoluteDivSmall(e,n,null)}else i=o.__absoluteDivLarge(e,t,!0,!1);return i.sign=_,i.__trim()}},{key:"remainder",value:function e(t,i){if(0===i.length)throw new RangeError("Division by zero");if(0>o.__absoluteCompare(t,i))return t;var _=i.__unsignedDigit(0);if(1===i.length&&65535>=_){if(1===_)return o.__zero();var n=o.__absoluteModSmall(t,_);return 0===n?o.__zero():o.__oneDigit(n,t.sign)}var e=o.__absoluteDivLarge(t,i,!1,!0);return e.sign=t.sign,e.__trim()}},{key:"add",value:function(e,t){var i=e.sign;return i===t.sign?o.__absoluteAdd(e,t,i):0<=o.__absoluteCompare(e,t)?o.__absoluteSub(e,t,i):o.__absoluteSub(t,e,!i)}},{key:"subtract",value:function(e,t){var i=e.sign;return i===t.sign?0<=o.__absoluteCompare(e,t)?o.__absoluteSub(e,t,i):o.__absoluteSub(t,e,!i):o.__absoluteAdd(e,t,i)}},{key:"leftShift",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?o.__rightShiftByAbsolute(e,t):o.__leftShiftByAbsolute(e,t)}},{key:"signedRightShift",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?o.__leftShiftByAbsolute(e,t):o.__rightShiftByAbsolute(e,t)}},{key:"unsignedRightShift",value:function(){throw new TypeError("BigInts have no unsigned right shift; use >> instead")}},{key:"lessThan",value:function(e,t){return 0>o.__compareToBigInt(e,t)}},{key:"lessThanOrEqual",value:function(e,t){return 0>=o.__compareToBigInt(e,t)}},{key:"greaterThan",value:function(e,t){return 0=o.__kMaxLengthBits)return t;var _=e+31>>>5;if(t.length<_)return t;var n=t.__unsignedDigit(_-1),l=1<<(31&e-1);if(t.length===_&&no.__kMaxLengthBits)throw new RangeError("BigInt too big");return o.__truncateAndSubFromPowerOfTwo(e,t,!1)}if(e>=o.__kMaxLengthBits)return t;var i=e+31>>>5;if(t.length>>_)return t}return o.__truncateToNBits(e,t)}},{key:"ADD",value:function(e,t){if(e=o.__toPrimitive(e),t=o.__toPrimitive(t),"string"==typeof e)return"string"!=typeof t&&(t=t.toString()),e+t;if("string"==typeof t)return e.toString()+t;if(e=o.__toNumeric(e),t=o.__toNumeric(t),o.__isBigInt(e)&&o.__isBigInt(t))return o.add(e,t);if("number"==typeof e&&"number"==typeof t)return e+t;throw new TypeError("Cannot mix BigInt and other types, use explicit conversions")}},{key:"LT",value:function(e,t){return o.__compare(e,t,0)}},{key:"LE",value:function(e,t){return o.__compare(e,t,1)}},{key:"GT",value:function(e,t){return o.__compare(e,t,2)}},{key:"GE",value:function(e,t){return o.__compare(e,t,3)}},{key:"EQ",value:function(e,t){for(;;){if(o.__isBigInt(e))return o.__isBigInt(t)?o.equal(e,t):o.EQ(t,e);if("number"==typeof e){if(o.__isBigInt(t))return o.__equalToNumber(t,e);if("object"!==i(t))return e==t;t=o.__toPrimitive(t)}else if("string"==typeof e){if(o.__isBigInt(t))return e=o.__fromString(e),null!==e&&o.equal(e,t);if("object"!==i(t))return e==t;t=o.__toPrimitive(t)}else if("boolean"==typeof e){if(o.__isBigInt(t))return o.__equalToNumber(t,+e);if("object"!==i(t))return e==t;t=o.__toPrimitive(t)}else if("symbol"===i(e)){if(o.__isBigInt(t))return!1;if("object"!==i(t))return e==t;t=o.__toPrimitive(t)}else if("object"===i(e)){if("object"===i(t)&&t.constructor!==o)return e==t;e=o.__toPrimitive(e)}else return e==t}}},{key:"NE",value:function(e,t){return!o.EQ(e,t)}},{key:"__zero",value:function(){return new o(0,!1)}},{key:"__oneDigit",value:function(e,t){var i=new o(1,t);return i.__setDigit(0,e),i}},{key:"__decideRounding",value:function(e,t,i,_){if(0t)n=-t-1;else{if(0===i)return-1;i--,_=e.__digit(i),n=31}var l=1<>>20,_=i-1023,n=(_>>>5)+1,l=new o(n,0>e),g=1048575&o.__kBitConversionInts[1]|1048576,a=o.__kBitConversionInts[0],u=20,s=31&_,r=0;if(s>>d,g=g<<32-d|a>>>d,a<<=32-d}else if(s===u)r=32,t=g,g=a;else{var h=s-u;r=32-h,t=g<>>32-h,g=a<=e&&9<=e)||(159>=e?32==e:131071>=e?160==e||5760==e:196607>=e?(e&=131071,10>=e||40==e||41==e||47==e||95==e||4096==e):65279==e)}},{key:"__fromString",value:function(e){var t=11073741824/a)return null;var s=a*g+u>>>o.__kBitsPerCharTableShift,r=new o(s+31>>>5,!1),h=10>t?t:10,b=10>=o.__kBitsPerCharTableShift;var c=[],v=[],f=!1;do{for(var y,k=0,D=0;;){if(y=void 0,l-48>>>0>>0>>0>>0>>o.__kBitsPerCharTableShift+5;r.__inplaceMultiplyAdd(A,C,m)}while(!p)}if(n!==_){if(!o.__isWhitespace(l))return null;for(n++;n<_;n++)if(l=e.charCodeAt(n),!o.__isWhitespace(l))return null}return 0!==i&&10!==t?null:(r.sign=-1===i,r.__trim())}},{key:"__fillFromParts",value:function(e,t,_){for(var n=0,l=0,g=0,o=t.length-1;0<=o;o--){var a=t[o],u=_[o];l|=a<>>u-g)}if(0!==l){if(n>=e.length)throw new Error("implementation bug");e.__setDigit(n++,l)}for(;n>>1)+(85&n),n=(51&n>>>2)+(51&n),n=(15&n>>>4)+(15&n);var l=n,g=t-1,a=e.__digit(_-1),u=o.__clz32(a),s=0|(32*_-u+l-1)/l;if(e.sign&&s++,268435456>>f,b=32-f;b>=l;)r[d--]=o.__kConversionChars[h&g],h>>>=l,b-=l}var y=(h|a<>>l-b;0!==h;)r[d--]=o.__kConversionChars[h&g],h>>>=l;if(e.sign&&(r[d--]="-"),-1!==d)throw new Error("implementation bug");return r.join("")}},{key:"__toStringGeneric",value:function(e,t,_){var n=e.length;if(0===n)return"";if(1===n){var l=e.__unsignedDigit(0).toString(t);return!1===_&&e.sign&&(l="-"+l),l}var g=32*n-o.__clz32(e.__digit(n-1)),a=o.__kMaxBitsPerChar[t],u=a-1,s=g*o.__kBitsPerCharTableMultiplier;s+=u-1,s=0|s/u;var r,d,h=s+1>>1,b=o.exponentiate(o.__oneDigit(t,!1),o.__oneDigit(h,!1)),m=b.__unsignedDigit(0);if(1===b.length&&65535>=m){r=new o(e.length,!1),r.__initializeDigits();for(var c,v=0,f=2*e.length-1;0<=f;f--)c=v<<16|e.__halfDigit(f),r.__setHalfDigit(f,0|c/m),v=0|c%m;d=v.toString(t)}else{var y=o.__absoluteDivLarge(e,b,!0,!0);r=y.quotient;var k=y.remainder.__trim();d=o.__toStringGeneric(k,t,!0)}r.__trim();for(var D=o.__toStringGeneric(r,t,!0);d.length_?o.__absoluteLess(i):0}},{key:"__compareToNumber",value:function(e,i){if(!0|i){var _=e.sign,n=0>i;if(_!==n)return o.__unequalSign(_);if(0===e.length){if(n)throw new Error("implementation bug");return 0===i?0:-1}if(1l?o.__absoluteGreater(_):gt)return o.__unequalSign(i);if(0===t)throw new Error("implementation bug: should be handled elsewhere");if(0===e.length)return-1;o.__kBitConversionDouble[0]=t;var _=2047&o.__kBitConversionInts[1]>>>20;if(2047==_)throw new Error("implementation bug: handled elsewhere");var n=_-1023;if(0>n)return o.__absoluteGreater(i);var l=e.length,g=e.__digit(l-1),a=o.__clz32(g),u=32*l-a,s=n+1;if(us)return o.__absoluteGreater(i);var r=1048576|1048575&o.__kBitConversionInts[1],d=o.__kBitConversionInts[0],h=20,b=31-a;if(b!==(u-1)%31)throw new Error("implementation bug");var m,c=0;if(b>>v,r=r<<32-v|d>>>v,d<<=32-v}else if(b===h)c=32,m=r,r=d;else{var f=b-h;c=32-f,m=r<>>32-f,r=d<>>=0,m>>>=0,g>m)return o.__absoluteGreater(i);if(g>>0,r=d,d=0):m=0;var k=e.__unsignedDigit(y);if(k>m)return o.__absoluteGreater(i);if(ki&&e.__unsignedDigit(0)===t(i):0===o.__compareToDouble(e,i)}},{key:"__comparisonResultToBool",value:function(e,t){switch(t){case 0:return 0>e;case 1:return 0>=e;case 2:return 0t;case 3:return e>=t;}if(o.__isBigInt(e)&&"string"==typeof t)return t=o.__fromString(t),null!==t&&o.__comparisonResultToBool(o.__compareToBigInt(e,t),i);if("string"==typeof e&&o.__isBigInt(t))return e=o.__fromString(e),null!==e&&o.__comparisonResultToBool(o.__compareToBigInt(e,t),i);if(e=o.__toNumeric(e),t=o.__toNumeric(t),o.__isBigInt(e)){if(o.__isBigInt(t))return o.__comparisonResultToBool(o.__compareToBigInt(e,t),i);if("number"!=typeof t)throw new Error("implementation bug");return o.__comparisonResultToBool(o.__compareToNumber(e,t),i)}if("number"!=typeof e)throw new Error("implementation bug");if(o.__isBigInt(t))return o.__comparisonResultToBool(o.__compareToNumber(t,e),2^i);if("number"!=typeof t)throw new Error("implementation bug");return 0===i?et:3===i?e>=t:void 0}},{key:"__absoluteAdd",value:function(e,t,_){if(e.length>>16)+(u>>>16)+(r>>>16);g=d>>>16,l.__setDigit(a,65535&r|d<<16)}for(;a>>16)+(b>>>16);g=m>>>16,l.__setDigit(a,65535&b|m<<16)}return a>>16;var r=(a>>>16)-(u>>>16)-l;l=1&r>>>16,n.__setDigit(g,65535&s|r<<16)}for(;g>>16;var b=(d>>>16)-l;l=1&b>>>16,n.__setDigit(g,65535&h|b<<16)}return n.__trim()}},{key:"__absoluteAddOne",value:function(e,t){var _=2n?0:e.__unsignedDigit(n)>t.__unsignedDigit(n)?1:-1}},{key:"__multiplyAccumulate",value:function(e,t,_,n){if(0!==t){for(var l=65535&t,g=t>>>16,a=0,u=0,s=0,r=0;r>>16,m=e.__digit(r),c=65535&m,v=m>>>16,f=o.__imul(c,l),y=o.__imul(c,g),k=o.__imul(v,l),D=o.__imul(v,g);h+=u+(65535&f),b+=s+a+(h>>>16)+(f>>>16)+(65535&y)+(65535&k),a=b>>>16,u=(y>>>16)+(k>>>16)+(65535&D)+a,a=u>>>16,u&=65535,s=D>>>16,d=65535&h|b<<16,_.__setDigit(n,d)}for(;0!==a||0!==u||0!==s;n++){var p=_.__digit(n),B=(65535&p)+u,S=(p>>>16)+(B>>>16)+s+a;u=0,s=0,a=S>>>16,p=65535&B|S<<16,_.__setDigit(n,p)}}}},{key:"__internalMultiplyAdd",value:function(e,t,_,l,g){for(var a=_,u=0,s=0;s>>16;var b=o.__imul(r>>>16,t),m=(65535&b)+(d>>>16)+a;a=m>>>16,u=b>>>16,g.__setDigit(s,m<<16|65535&h)}if(g.length>l)for(g.__setDigit(l++,a+u);l>>0,a=0|g/t;n=0|g%t,g=(n<<16|e.__halfDigit(l-1))>>>0;var u=0|g/t;n=0|g%t,_.__setDigit(l>>>1,a<<16|u)}return _}},{key:"__absoluteModSmall",value:function(e,t){for(var _,n=0,l=2*e.length-1;0<=l;l--)_=(n<<16|e.__halfDigit(l))>>>0,n=0|_%t;return n}},{key:"__absoluteDivLarge",value:function(e,t,i,_){var l=t.__halfDigitLength(),n=t.length,g=e.__halfDigitLength()-l,a=null;i&&(a=new o(g+2>>>1,!1),a.__initializeDigits());var s=new o(l+2>>>1,!1);s.__initializeDigits();var r=o.__clz16(t.__halfDigit(l-1));0>>0;m=0|f/u;for(var y=0|f%u,k=t.__halfDigit(l-2),D=d.__halfDigit(b+l-2);o.__imul(m,k)>>>0>(y<<16|D)>>>0&&(m--,y+=u,!(65535>>1,h|m))}return _?(d.__inplaceRightShift(r),i?{quotient:a,remainder:d}:d):i?a:void 0}},{key:"__clz16",value:function(e){return o.__clz32(e)-16}},{key:"__specialLeftShift",value:function(e,t,_){var l=e.length,n=new o(l+_,!1);if(0===t){for(var g=0;g>>32-t;return 0<_&&n.__setDigit(l,u),n}},{key:"__leftShiftByAbsolute",value:function(e,t){var _=o.__toShiftAmount(t);if(0>_)throw new RangeError("BigInt too big");var n=_>>>5,l=31&_,g=e.length,a=0!==l&&0!=e.__digit(g-1)>>>32-l,u=g+n+(a?1:0),s=new o(u,e.sign);if(0===l){for(var r=0;r>>32-l;if(a)s.__setDigit(g+n,h);else if(0!==h)throw new Error("implementation bug")}return s.__trim()}},{key:"__rightShiftByAbsolute",value:function(e,t){var _=e.length,n=e.sign,l=o.__toShiftAmount(t);if(0>l)return o.__rightShiftByMaximum(n);var g=l>>>5,a=31&l,u=_-g;if(0>=u)return o.__rightShiftByMaximum(n);var s=!1;if(n){if(0!=(e.__digit(g)&(1<>>a,f=_-g-1,y=0;y>>a;b.__setDigit(f,v)}return s&&(b=o.__absoluteAddOne(b,!0,b)),b.__trim()}},{key:"__rightShiftByMaximum",value:function(e){return e?o.__oneDigit(1,!0):o.__zero()}},{key:"__toShiftAmount",value:function(e){if(1o.__kMaxLengthBits?-1:t}},{key:"__toPrimitive",value:function(e){var t=1>>5,n=new o(_,t.sign),l=_-1,g=0;g>>u}return n.__setDigit(l,a),n.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(e,t,_){for(var n=Math.min,l=e+31>>>5,g=new o(l,_),a=0,u=l-1,s=0,r=n(u,t.length);a>>16;var b=0-(d>>>16)-s;s=1&b>>>16,g.__setDigit(a,65535&h|b<<16)}for(;a>>16;var y=0-(c>>>16)-s;m=65535&f|y<<16}else{var k=32-v;c=c<>>k;var D=1<<32-k,p=(65535&D)-(65535&c)-s;s=1&p>>>16;var B=(D>>>16)-(c>>>16)-s;m=65535&p|B<<16,m&=D-1}return g.__setDigit(u,m),g.__trim()}},{key:"__digitPow",value:function(e,t){for(var i=1;0>>=1,e*=e;return i}}]),o}(h(Array));return k.__kMaxLength=33554432,k.__kMaxLengthBits=k.__kMaxLength<<5,k.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],k.__kBitsPerCharTableShift=5,k.__kBitsPerCharTableMultiplier=1<>>0)/t)},k.__imul=e||function(e,t){return 0|e*t},k});