{"version":3,"sources":["../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/xor.js","../node_modules/public-encrypt/withPublic.js","../node_modules/query-string/index.js"],"names":["exports","publicEncrypt","require","privateDecrypt","privateEncrypt","key","buf","publicDecrypt","parseKeys","randomBytes","createHash","mgf","xor","BN","withPublic","crt","Buffer","module","publicKey","msg","reverse","padding","paddedMsg","k","modulus","byteLength","mLen","length","iHash","update","alloc","digest","hLen","hLen2","Error","ps","dblen","seed","maskedDb","concat","maskedSeed","oaep","len","num","out","allocUnsafe","i","cache","cur","nonZero","from","pkcs1","cmp","privateKey","enc","zBuffer","slice","db","a","b","dif","Math","min","compare","p1","status","toString","assert","val","inherits","ctor","superCtor","super_","TempCtor","prototype","constructor","number","base","endian","isBN","this","negative","words","red","_init","wordSize","window","e","parseHex4Bits","string","index","c","charCodeAt","parseHexByte","lowerBound","r","parseBase","str","start","end","mul","Array","isArray","max","left","right","_initNumber","_initArray","replace","_parseHex","_parseBase","toArray","ceil","j","w","off","strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","copy","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","self","lo","carry","ncarry","rword","maxJ","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","reqLength","littleEndian","res","q","andln","iushrn","clz32","_countBits","t","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","sub","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","K256","call","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","undefined","_strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","i2ops","writeUInt32BE","publicExponent","strictUriEncode","objectAssign","encode","value","opts","strict","encodeURIComponent","keysSorter","sort","Object","keys","Number","map","extract","parse","formatter","result","arrayFormat","accumulator","exec","parserForArrayFormat","create","trim","forEach","param","parts","join","decodeURIComponent","reduce","Boolean","stringify","obj","encoderForArrayFormat","val2","push","filter"],"mappings":"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","file":"static/js/main~f9ca8911.4d151840.chunk.js","sourcesContent":["exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n"],"sourceRoot":""}