{"version":3,"sources":["webpack:///./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/public-encrypt/privateDecrypt.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/parse-asn1/index.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/parse-asn1/asn1.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/parse-asn1/certificate.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/public-encrypt/browser.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/public-encrypt/xor.js","webpack:///./node_modules/pbkdf2/lib/to-buffer.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/pbkdf2/browser.js","webpack:///./node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/public-encrypt/mgf.js"],"names":["assert","val","msg","Error","inherits","ctor","superCtor","super_","TempCtor","prototype","constructor","BN","number","base","endian","isBN","this","negative","words","length","red","_init","Buffer","module","exports","wordSize","e","parseHex","str","start","end","r","len","Math","min","i","c","charCodeAt","parseBase","mul","num","Array","isArray","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","strip","toArray","ceil","j","w","off","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","copy","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","toBitArray","bitLength","bit","wbit","smallMulTo","self","out","a","b","lo","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","q","andln","iushrn","clz32","_countBits","t","_zeroBits","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","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","imul","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","mulp","x","y","mulTo","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","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","bhiBits","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","windowSize","wnd","current","currentLen","mont","u","parseKeys","mgf","crt","createHash","withPublic","oaep","key","modulus","iHash","update","alloc","digest","hLen","maskedSeed","slice","maskedDb","seed","db","compare","pkcs1","reverse","p1","status","ps","from","dif","privateKey","enc","zBuffer","concat","MAX_BYTES","MAX_UINT32","oldBrowser","crypto","global","msCrypto","randomBytes","cb","RangeError","bytes","allocUnsafe","generated","getRandomValues","process","nextTick","ZERO_BUF","checkParameters","defaultEncoding","sync","subtle","toBrowser","sha","sha1","sha256","sha384","sha512","checks","checkNative","algo","browser","Promise","resolve","importKey","deriveBits","prom","browserPbkdf2","then","catch","password","salt","iterations","hash","resolvePromise","promise","callback","keylen","toLowerCase","resp","Transform","Duplex","util","Object","create","afterTransform","er","data","ts","_transformState","transforming","writecb","emit","writechunk","push","rs","_readableState","reading","needReadable","highWaterMark","_read","options","bind","needTransform","writeencoding","_transform","flush","_flush","on","prefinish","_this","done","stream","_writableState","chunk","encoding","_write","_destroy","err","_this2","err2","asn1","aesid","fixProc","ciphers","compat","buffer","isBuffer","passphrase","subtype","ndata","stripped","type","tag","certificate","decode","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","join","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","EncryptedPrivateKey","decrypt","PrivateKey","RSAPrivateKey","curve","ECPrivateKey","priv_key","DSAPrivateKey","parameters","value","kde","kdeparams","iters","parseInt","cipher","iv","cipherText","pbkdf2Sync","createDecipheriv","final","signature","define","seq","obj","int","use","AlgorithmIdentifier","bitstr","objid","null_","optional","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","explicit","ECParameters","choice","namedCurve","EventEmitter","pna","destroy","readableDestroyed","destroyed","writableDestroyed","errorEmitted","emitErrorNT","undestroy","ended","endEmitted","ending","finished","findProc","startRegex","fullRegex","evp","okey","decrypted","match","suite","cipherKey","match2","paddedMsg","publicExponent","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","any","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","def","TBSCertificate","implicit","X509Certificate","_classCallCheck","instance","Constructor","TypeError","copyBuffer","src","target","offset","BufferList","head","tail","v","entry","unshift","clear","custom","publicEncrypt","privateDecrypt","privateEncrypt","buf","publicDecrypt","safeBuffer","randombytes","kBufferMaxLength","kMaxLength","kMaxUint32","assertOffset","assertSize","randomFill","Uint8Array","actualFill","ourBuf","uint","randomFillSync","PassThrough","MAX_ALLOC","thing","ArrayBuffer","isView","fn","arg1","arg2","arg3","args","arguments","apply","version","indexOf","pVersionMajor","pbkdf2","mLen","hLen2","dblen","nonZero","cache","cur","publicKey","Readable","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","debugUtil","debug","debuglog","StringDecoder","destroyImpl","kProxyEvents","prependListener","event","_events","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","floor","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","readable","read","readableAddChunk","addToFront","skipChunkCheck","state","onEofChunk","chunkInvalid","getPrototypeOf","addChunk","write","maybeReadMore","needMoreData","emitReadable","defineProperty","get","set","_undestroy","isPaused","setEncoding","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","nReadingNextTick","resume","resume_","fromList","fromListPartial","list","hasStrings","copyFromBufferString","copyFromBuffer","nb","endReadable","endReadableNT","xs","nOrig","doRead","pipe","pipeOpts","doEnd","stdout","stderr","endFn","onend","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","once","ondrain","cleanedUp","removeListener","onclose","onfinish","onerror","ondata","needDrain","increasedAwaitDrain","pause","dests","index","splice","ev","addListener","wrap","paused","method","enumerable","_fromList","objectKeys","keys","Writable","writable","allowHalfOpen","onEndNT","HashBase","ARRAY16","zl","zr","sl","sr","hl","hr","RIPEMD160","_a","_b","_c","_d","_e","rotl","fn1","d","fn2","fn3","fn4","fn5","_update","_block","readInt32LE","al","bl","cl","dl","el","ar","br","cr","dr","tl","tr","_digest","_blockOffset","fill","writeUInt32LE","_length","writeInt32LE","CorkedRequest","finish","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","deprecate","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","bufferedRequestCount","corkedRequestsFree","writev","_writev","_final","writeAfterEnd","validChunk","valid","decodeChunk","writeOrBuffer","isBuf","newChunk","last","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","count","allBuffers","callFinal","need","endWritable","corkReq","getBuffer","Symbol","hasInstance","Function","object","cork","uncork","setDefaultEncoding","normalizeArray","parts","allowAboveRoot","up","basename","path","matchedSlash","filter","f","resolvedPath","resolvedAbsolute","cwd","charAt","normalize","isAbsolute","trailingSlash","substr","paths","relative","to","trim","arr","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","code","hasRoot","ext","extname","startDot","startPart","preDotState","md5","ZEROS","sizes","sha224","rmd160","ripemd160","Hmac","alg","saltLen","getDigest","blocksize","ipad","opad","ipad1","ipad2","shaFunc","rmd160Func","hmac","DK","block1","destPos","writeUInt32BE","T","run","U","i2ops"],"mappings":"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","file":"js/chunk-vendors~f9ca8911.806b9ee4.js","sourcesContent":["(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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\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","module.exports = require('./lib/_stream_duplex.js');\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","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","module.exports = require('./lib/_stream_writable.js');\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\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","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","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","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\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 Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else if (process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","module.exports = require('./readable').PassThrough\n","module.exports = require('./readable').Transform\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\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"],"sourceRoot":""}