{"version":3,"sources":["webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/browserify-sign/node_modules/safe-buffer/index.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/browserify-zlib/lib/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/browserify-zlib/lib/binding.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/brorand/index.js"],"names":["exports","encrypt","self","block","_cipher","encryptBlock","decrypt","decryptBlock","ERR_INVALID_OPT_VALUE","codes","highWaterMarkFrom","options","isDuplex","duplexKey","highWaterMark","getHighWaterMark","state","hwm","isFinite","Math","floor","name","objectMode","module","aes","Buffer","Transform","inherits","StreamCipher","mode","key","iv","call","this","AES","_prev","from","_cache","allocUnsafe","_secCache","_decrypt","_mode","prototype","_update","chunk","_final","scrub","des","des3","CipherBase","modes","CBC","instantiate","EDE","DES","opts","type","modeName","toLowerCase","isBuffer","concat","slice","_des","create","data","update","final","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_require","_require2","inspect","custom","copyBuffer","src","offset","copy","BufferList","head","tail","v","entry","next","ret","s","p","n","alloc","hasStrings","shift","_getString","_getBuffer","c","str","nb","buf","_","depth","customInspect","Stream","Readable","Writable","Duplex","PassThrough","finished","pipeline","xor","encryptStart","len","out","buffer","copyProps","dst","SafeBuffer","arg","encodingOrOffset","allocUnsafeSlow","size","fill","encoding","undefined","SlowBuffer","asUInt32Array","Array","readUInt32BE","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","round","RCON","G","d","j","INV_SBOX","INV_SUB_MIX","x","xi","sx","x2","x4","x8","t","_key","_reset","blockSize","keySize","keyWords","ksRows","k","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","writeUInt32BE","m1","ZEROES","toArray","fromArray","GHASH","h","cache","ghash","_multiply","lsbVi","Vi","Zi","abl","bl","AuthCipher","MODES","ebtk","Decipher","Splitter","_last","_autopadding","unpad","last","padded","Error","createDecipheriv","suite","password","config","createDecipher","thing","add","get","flush","setAutoPadding","setTo","autoPadding","ERR_STREAM_PREMATURE_CLOSE","once","callback","called","_len","args","noop","isRequest","stream","setHeader","abort","eos","readable","onlegacyfinish","onfinish","writableEnded","_writableState","readableEnded","_readableState","endEmitted","onend","onerror","err","onclose","ended","onrequest","req","on","error","removeListener","binding","util","assert","ok","kMaxLength","kRangeErrorMessage","toString","Z_MIN_WINDOWBITS","Z_MAX_WINDOWBITS","Z_DEFAULT_WINDOWBITS","Z_MIN_CHUNK","Z_MAX_CHUNK","Infinity","Z_DEFAULT_CHUNK","Z_MIN_MEMLEVEL","Z_MAX_MEMLEVEL","Z_DEFAULT_MEMLEVEL","Z_MIN_LEVEL","Z_MAX_LEVEL","Z_DEFAULT_LEVEL","Z_DEFAULT_COMPRESSION","bkeys","bk","bkey","match","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_VERSION_ERROR","ckeys","ck","ckey","zlibBuffer","engine","buffers","nread","flow","read","onError","onEnd","RangeError","close","end","zlibBufferSync","flushFlag","_finishFlushFlag","_processChunk","Deflate","Zlib","DEFLATE","Inflate","INFLATE","Gzip","GZIP","Gunzip","GUNZIP","DeflateRaw","DEFLATERAW","InflateRaw","INFLATERAW","Unzip","UNZIP","isValidFlushFlag","flag","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","_this","_opts","_chunkSize","chunkSize","finishFlush","_flushFlag","windowBits","level","memLevel","strategy","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","dictionary","_handle","_hadError","message","errno","_close","code","emit","init","_buffer","_offset","_level","_strategy","process","nextTick","emitCloseNT","freeze","createDeflate","o","createInflate","createDeflateRaw","createInflateRaw","createGzip","createGunzip","createUnzip","deflate","deflateSync","gzip","gzipSync","deflateRaw","deflateRawSync","unzip","unzipSync","inflate","inflateSync","gunzip","gunzipSync","inflateRaw","inflateRawSync","params","reset","_flush","_transform","kind","_this2","ws","ending","needDrain","write","cb","availInBefore","availOutBefore","inOff","async","er","res","writeSync","availInAfter","availOutAfter","have","newReq","CorkedRequest","finish","onCorkedFinish","WritableState","internalUtil","deprecate","OurUint8Array","global","Uint8Array","_uint8ArrayToBuffer","_isUint8Array","realHasInstance","destroyImpl","_require$codes","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","errorOrDestroy","nop","writableObjectMode","finalCalled","destroyed","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","emitClose","autoDestroy","bufferedRequestCount","corkedRequestsFree","_write","writev","_writev","destroy","_destroy","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","l","holder","count","allBuffers","callFinal","prefinish","need","rState","endWritable","corkReq","getBuffer","current","Symbol","hasInstance","Function","pipe","cork","uncork","setDefaultEncoding","indexOf","set","_undestroy","undestroy","getBlock","pad","encryptByte","byteParam","bit","shiftIn","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","done","readAndResolve","iter","resolve","onReadable","wrapForNext","lastPromise","reject","then","AsyncIteratorPrototype","getPrototypeOf","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","Promise","promise","asyncIterator","createReadableStreamAsyncIterator","_Object$create","iterator","bind","objectKeys","method","allowHalfOpen","onEndNT","incr32","chunkNum","ceil","start","Zstream","zlib_deflate","zlib_inflate","constants","NONE","GZIP_HEADER_ID1","GZIP_HEADER_ID2","init_done","write_in_progress","pending_close","gzip_id_bytes_read","deflateEnd","strm","inflateEnd","input","in_off","in_len","out_off","out_len","equal","avail_in","next_in","avail_out","output","next_out","_process","_checkError","_afterSync","_after","next_expected_header_byte","inflateSetDictionary","_error","msg","_init","_setDictionary","deflateInit2","Z_DEFLATED","inflateInit2","deflateSetDictionary","deflateReset","inflateReset","createHmac","crt","EC","ec","BN","parseKeys","curves","sign","hash","hashType","signType","tag","priv","curve","ecSign","dsaSign","modulus","byteLength","curveId","join","keyFromPrivate","privateKey","toDER","algo","priv_key","q","g","r","H","bits2int","mod","kv","getKey","makeKey","makeR","invm","imul","mul","cmpn","total","zeros","hlen","hbits","bits2octets","digest","obits","bits","bitLength","ishrn","cmp","toRed","mont","redPow","fromRed","xorTest","a","b","min","calcIv","_finID","toPad","ivBits","writeUIntBE","_ghash","_alen","_authTag","_called","rump","getAuthTag","setAuthTag","setAAD","Cipher","PADDING","createCipheriv","createCipher","equals","padBuff","writeUInt8","readableDestroyed","writableDestroyed","emitErrorNT","emitErrorAndCloseNT","reading","wState","aesModes","desModes","keyLen","ivLen","getCiphers","Cipheriv","Decipheriv","listCiphers","verify","sig","pub","ecVerify","dsaVerify","padNum","red","publicExponent","algorithm","pubkey","subjectPrivateKey","y","pub_key","unpacked","signature","decode","checkValue","montp","w","randomBytes","blind","getr","blinder","unblinder","umod","prime1","prime2","blinds","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","isub","iadd","toArrayLike","ERR_MISSING_ARGS","destroyer","closed","fn","to","popCallback","streams","pop","isArray","destroys","map","reduce","createHash","algorithms","Sign","_hashType","_hash","_tag","id","_signType","Verify","createSign","createVerify","enc","modeModules","ECB","CFB","CFB8","CFB1","OFB","CTR","GCM","item","readUInt8","ReadableState","EventEmitter","EElistenerCount","emitter","listeners","debug","debugUtil","debuglog","StringDecoder","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","prependListener","event","_events","unshift","readableObjectMode","pipes","pipesCount","flowing","needReadable","emittedReadable","readableListening","resumeScheduled","paused","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","isPaused","setEncoding","content","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","maybeReadMore_","pipeOnDrain","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","first","consume","endReadable","endReadableNT","xs","parseInt","nOrig","doRead","dest","pipeOpts","doEnd","stdout","stderr","endFn","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","cleanedUp","ondata","pause","dests","index","splice","ev","addListener","removeAllListeners","wrap","_fromList","iterable","_inheritsLoose","subClass","superClass","constructor","__proto__","createErrorType","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","String","startsWith","search","pos","substr","endsWith","this_len","substring","includes","actual","determiner","replace","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","transform","err2","ciphers","deciphers","Rand","rand","generate","_rand","getBytes","getByte","crypto","getRandomValues","arr","msCrypto","window","e"],"mappings":"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","file":"js/account~5bb1f863.9f155c9e.js","sourcesContent":["exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","module.exports = require('./browser/algorithms.json')\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: 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 key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\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\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\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\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\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');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar binding = require('./binding');\nvar util = require('util');\nvar assert = require('assert').ok;\nvar kMaxLength = require('buffer').kMaxLength;\nvar kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n// zlib doesn't provide these, so kludge them in following the same\n// const naming scheme zlib uses.\nbinding.Z_MIN_WINDOWBITS = 8;\nbinding.Z_MAX_WINDOWBITS = 15;\nbinding.Z_DEFAULT_WINDOWBITS = 15;\n\n// fewer than 64 bytes per chunk is stupid.\n// technically it could work with as few as 8, but even 64 bytes\n// is absurdly low. Usually a MB or more is best.\nbinding.Z_MIN_CHUNK = 64;\nbinding.Z_MAX_CHUNK = Infinity;\nbinding.Z_DEFAULT_CHUNK = 16 * 1024;\n\nbinding.Z_MIN_MEMLEVEL = 1;\nbinding.Z_MAX_MEMLEVEL = 9;\nbinding.Z_DEFAULT_MEMLEVEL = 8;\n\nbinding.Z_MIN_LEVEL = -1;\nbinding.Z_MAX_LEVEL = 9;\nbinding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;\n\n// expose all the zlib constants\nvar bkeys = Object.keys(binding);\nfor (var bk = 0; bk < bkeys.length; bk++) {\n var bkey = bkeys[bk];\n if (bkey.match(/^Z/)) {\n Object.defineProperty(exports, bkey, {\n enumerable: true, value: binding[bkey], writable: false\n });\n }\n}\n\n// translation table for return codes.\nvar codes = {\n Z_OK: binding.Z_OK,\n Z_STREAM_END: binding.Z_STREAM_END,\n Z_NEED_DICT: binding.Z_NEED_DICT,\n Z_ERRNO: binding.Z_ERRNO,\n Z_STREAM_ERROR: binding.Z_STREAM_ERROR,\n Z_DATA_ERROR: binding.Z_DATA_ERROR,\n Z_MEM_ERROR: binding.Z_MEM_ERROR,\n Z_BUF_ERROR: binding.Z_BUF_ERROR,\n Z_VERSION_ERROR: binding.Z_VERSION_ERROR\n};\n\nvar ckeys = Object.keys(codes);\nfor (var ck = 0; ck < ckeys.length; ck++) {\n var ckey = ckeys[ck];\n codes[codes[ckey]] = ckey;\n}\n\nObject.defineProperty(exports, 'codes', {\n enumerable: true, value: Object.freeze(codes), writable: false\n});\n\nexports.Deflate = Deflate;\nexports.Inflate = Inflate;\nexports.Gzip = Gzip;\nexports.Gunzip = Gunzip;\nexports.DeflateRaw = DeflateRaw;\nexports.InflateRaw = InflateRaw;\nexports.Unzip = Unzip;\n\nexports.createDeflate = function (o) {\n return new Deflate(o);\n};\n\nexports.createInflate = function (o) {\n return new Inflate(o);\n};\n\nexports.createDeflateRaw = function (o) {\n return new DeflateRaw(o);\n};\n\nexports.createInflateRaw = function (o) {\n return new InflateRaw(o);\n};\n\nexports.createGzip = function (o) {\n return new Gzip(o);\n};\n\nexports.createGunzip = function (o) {\n return new Gunzip(o);\n};\n\nexports.createUnzip = function (o) {\n return new Unzip(o);\n};\n\n// Convenience methods.\n// compress/decompress a string or buffer in one step.\nexports.deflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Deflate(opts), buffer, callback);\n};\n\nexports.deflateSync = function (buffer, opts) {\n return zlibBufferSync(new Deflate(opts), buffer);\n};\n\nexports.gzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gzip(opts), buffer, callback);\n};\n\nexports.gzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gzip(opts), buffer);\n};\n\nexports.deflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n};\n\nexports.deflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new DeflateRaw(opts), buffer);\n};\n\nexports.unzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Unzip(opts), buffer, callback);\n};\n\nexports.unzipSync = function (buffer, opts) {\n return zlibBufferSync(new Unzip(opts), buffer);\n};\n\nexports.inflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Inflate(opts), buffer, callback);\n};\n\nexports.inflateSync = function (buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n};\n\nexports.gunzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gunzip(opts), buffer, callback);\n};\n\nexports.gunzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gunzip(opts), buffer);\n};\n\nexports.inflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new InflateRaw(opts), buffer, callback);\n};\n\nexports.inflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new InflateRaw(opts), buffer);\n};\n\nfunction zlibBuffer(engine, buffer, callback) {\n var buffers = [];\n var nread = 0;\n\n engine.on('error', onError);\n engine.on('end', onEnd);\n\n engine.end(buffer);\n flow();\n\n function flow() {\n var chunk;\n while (null !== (chunk = engine.read())) {\n buffers.push(chunk);\n nread += chunk.length;\n }\n engine.once('readable', flow);\n }\n\n function onError(err) {\n engine.removeListener('end', onEnd);\n engine.removeListener('readable', flow);\n callback(err);\n }\n\n function onEnd() {\n var buf;\n var err = null;\n\n if (nread >= kMaxLength) {\n err = new RangeError(kRangeErrorMessage);\n } else {\n buf = Buffer.concat(buffers, nread);\n }\n\n buffers = [];\n engine.close();\n callback(err, buf);\n }\n}\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n\n if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n\n var flushFlag = engine._finishFlushFlag;\n\n return engine._processChunk(buffer, flushFlag);\n}\n\n// generic zlib\n// minimal 2-byte header\nfunction Deflate(opts) {\n if (!(this instanceof Deflate)) return new Deflate(opts);\n Zlib.call(this, opts, binding.DEFLATE);\n}\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) return new Inflate(opts);\n Zlib.call(this, opts, binding.INFLATE);\n}\n\n// gzip - bigger header, same deflate compression\nfunction Gzip(opts) {\n if (!(this instanceof Gzip)) return new Gzip(opts);\n Zlib.call(this, opts, binding.GZIP);\n}\n\nfunction Gunzip(opts) {\n if (!(this instanceof Gunzip)) return new Gunzip(opts);\n Zlib.call(this, opts, binding.GUNZIP);\n}\n\n// raw - no header\nfunction DeflateRaw(opts) {\n if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n Zlib.call(this, opts, binding.DEFLATERAW);\n}\n\nfunction InflateRaw(opts) {\n if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n Zlib.call(this, opts, binding.INFLATERAW);\n}\n\n// auto-detect header.\nfunction Unzip(opts) {\n if (!(this instanceof Unzip)) return new Unzip(opts);\n Zlib.call(this, opts, binding.UNZIP);\n}\n\nfunction isValidFlushFlag(flag) {\n return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\n\nfunction Zlib(opts, mode) {\n var _this = this;\n\n this._opts = opts = opts || {};\n this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n\n Transform.call(this, opts);\n\n if (opts.flush && !isValidFlushFlag(opts.flush)) {\n throw new Error('Invalid flush flag: ' + opts.flush);\n }\n if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n throw new Error('Invalid flush flag: ' + opts.finishFlush);\n }\n\n this._flushFlag = opts.flush || binding.Z_NO_FLUSH;\n this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;\n\n if (opts.chunkSize) {\n if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n throw new Error('Invalid chunk size: ' + opts.chunkSize);\n }\n }\n\n if (opts.windowBits) {\n if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n throw new Error('Invalid windowBits: ' + opts.windowBits);\n }\n }\n\n if (opts.level) {\n if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n throw new Error('Invalid compression level: ' + opts.level);\n }\n }\n\n if (opts.memLevel) {\n if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n throw new Error('Invalid memLevel: ' + opts.memLevel);\n }\n }\n\n if (opts.strategy) {\n if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new Error('Invalid strategy: ' + opts.strategy);\n }\n }\n\n if (opts.dictionary) {\n if (!Buffer.isBuffer(opts.dictionary)) {\n throw new Error('Invalid dictionary: it should be a Buffer instance');\n }\n }\n\n this._handle = new binding.Zlib(mode);\n\n var self = this;\n this._hadError = false;\n this._handle.onerror = function (message, errno) {\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n _close(self);\n self._hadError = true;\n\n var error = new Error(message);\n error.errno = errno;\n error.code = exports.codes[errno];\n self.emit('error', error);\n };\n\n var level = exports.Z_DEFAULT_COMPRESSION;\n if (typeof opts.level === 'number') level = opts.level;\n\n var strategy = exports.Z_DEFAULT_STRATEGY;\n if (typeof opts.strategy === 'number') strategy = opts.strategy;\n\n this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n\n this._buffer = Buffer.allocUnsafe(this._chunkSize);\n this._offset = 0;\n this._level = level;\n this._strategy = strategy;\n\n this.once('end', this.close);\n\n Object.defineProperty(this, '_closed', {\n get: function () {\n return !_this._handle;\n },\n configurable: true,\n enumerable: true\n });\n}\n\nutil.inherits(Zlib, Transform);\n\nZlib.prototype.params = function (level, strategy, callback) {\n if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n throw new RangeError('Invalid compression level: ' + level);\n }\n if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new TypeError('Invalid strategy: ' + strategy);\n }\n\n if (this._level !== level || this._strategy !== strategy) {\n var self = this;\n this.flush(binding.Z_SYNC_FLUSH, function () {\n assert(self._handle, 'zlib binding closed');\n self._handle.params(level, strategy);\n if (!self._hadError) {\n self._level = level;\n self._strategy = strategy;\n if (callback) callback();\n }\n });\n } else {\n process.nextTick(callback);\n }\n};\n\nZlib.prototype.reset = function () {\n assert(this._handle, 'zlib binding closed');\n return this._handle.reset();\n};\n\n// This is the _flush function called by the transform class,\n// internally, when the last chunk has been written.\nZlib.prototype._flush = function (callback) {\n this._transform(Buffer.alloc(0), '', callback);\n};\n\nZlib.prototype.flush = function (kind, callback) {\n var _this2 = this;\n\n var ws = this._writableState;\n\n if (typeof kind === 'function' || kind === undefined && !callback) {\n callback = kind;\n kind = binding.Z_FULL_FLUSH;\n }\n\n if (ws.ended) {\n if (callback) process.nextTick(callback);\n } else if (ws.ending) {\n if (callback) this.once('end', callback);\n } else if (ws.needDrain) {\n if (callback) {\n this.once('drain', function () {\n return _this2.flush(kind, callback);\n });\n }\n } else {\n this._flushFlag = kind;\n this.write(Buffer.alloc(0), '', callback);\n }\n};\n\nZlib.prototype.close = function (callback) {\n _close(this, callback);\n process.nextTick(emitCloseNT, this);\n};\n\nfunction _close(engine, callback) {\n if (callback) process.nextTick(callback);\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) return;\n\n engine._handle.close();\n engine._handle = null;\n}\n\nfunction emitCloseNT(self) {\n self.emit('close');\n}\n\nZlib.prototype._transform = function (chunk, encoding, cb) {\n var flushFlag;\n var ws = this._writableState;\n var ending = ws.ending || ws.ended;\n var last = ending && (!chunk || ws.length === chunk.length);\n\n if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n\n if (!this._handle) return cb(new Error('zlib binding closed'));\n\n // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n // (or whatever flag was provided using opts.finishFlush).\n // If it's explicitly flushing at some other time, then we use\n // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n // goodness.\n if (last) flushFlag = this._finishFlushFlag;else {\n flushFlag = this._flushFlag;\n // once we've flushed the last of the queue, stop flushing and\n // go back to the normal behavior.\n if (chunk.length >= ws.length) {\n this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;\n }\n }\n\n this._processChunk(chunk, flushFlag, cb);\n};\n\nZlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var inOff = 0;\n\n var self = this;\n\n var async = typeof cb === 'function';\n\n if (!async) {\n var buffers = [];\n var nread = 0;\n\n var error;\n this.on('error', function (er) {\n error = er;\n });\n\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n } while (!this._hadError && callback(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(kRangeErrorMessage);\n }\n\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n }\n\n assert(this._handle, 'zlib binding closed');\n var req = this._handle.write(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n\n req.buffer = chunk;\n req.callback = callback;\n\n function callback(availInAfter, availOutAfter) {\n // When the callback is used in an async write, the callback's\n // context is the `req` object that was created. The req object\n // is === this._handle, and that's why it's important to null\n // out the values after they are done being used. `this._handle`\n // can stay in memory longer than the callback and buffer are needed.\n if (this) {\n this.buffer = null;\n this.callback = null;\n }\n\n if (self._hadError) return;\n\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n // serve some output to the consumer.\n if (async) {\n self.push(out);\n } else {\n buffers.push(out);\n nread += out.length;\n }\n }\n\n // exhausted the output buffer, or used all the input create a new one.\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n // Not actually done. Need to reprocess.\n // Also, update the availInBefore to the availInAfter value,\n // so that if we have to hit it a third (fourth, etc.) time,\n // it'll have the correct byte counts.\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n\n if (!async) return true;\n\n var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n newReq.callback = callback; // this same function\n newReq.buffer = chunk;\n return;\n }\n\n if (!async) return false;\n\n // finished with the chunk.\n cb();\n }\n};\n\nutil.inherits(Deflate, Zlib);\nutil.inherits(Inflate, Zlib);\nutil.inherits(Gzip, Zlib);\nutil.inherits(Gunzip, Zlib);\nutil.inherits(DeflateRaw, Zlib);\nutil.inherits(InflateRaw, Zlib);\nutil.inherits(Unzip, Zlib);","// 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// 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'use strict';\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} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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 // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // 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\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // 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\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // 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\n this.sync = true; // 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\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\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 value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // 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 // 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 // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\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.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\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 if (typeof cb !== 'function') cb = nop;\n if (state.ending) 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 return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !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 ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\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\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 get() {\n return this._writableState.highWaterMark;\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.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\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\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\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 (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else 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 process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, 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 errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\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 if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\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) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\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} // 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.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\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 var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\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 doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // 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\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 ERR_METHOD_NOT_IMPLEMENTED('_write()'));\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); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.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\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\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\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\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 get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","// 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// 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'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\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 Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\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 get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(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 } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","'use strict';\n/* eslint camelcase: \"off\" */\n\nvar assert = require('assert');\n\nvar Zstream = require('pako/lib/zlib/zstream');\nvar zlib_deflate = require('pako/lib/zlib/deflate.js');\nvar zlib_inflate = require('pako/lib/zlib/inflate.js');\nvar constants = require('pako/lib/zlib/constants');\n\nfor (var key in constants) {\n exports[key] = constants[key];\n}\n\n// zlib modes\nexports.NONE = 0;\nexports.DEFLATE = 1;\nexports.INFLATE = 2;\nexports.GZIP = 3;\nexports.GUNZIP = 4;\nexports.DEFLATERAW = 5;\nexports.INFLATERAW = 6;\nexports.UNZIP = 7;\n\nvar GZIP_HEADER_ID1 = 0x1f;\nvar GZIP_HEADER_ID2 = 0x8b;\n\n/**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\nfunction Zlib(mode) {\n if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n throw new TypeError('Bad argument');\n }\n\n this.dictionary = null;\n this.err = 0;\n this.flush = 0;\n this.init_done = false;\n this.level = 0;\n this.memLevel = 0;\n this.mode = mode;\n this.strategy = 0;\n this.windowBits = 0;\n this.write_in_progress = false;\n this.pending_close = false;\n this.gzip_id_bytes_read = 0;\n}\n\nZlib.prototype.close = function () {\n if (this.write_in_progress) {\n this.pending_close = true;\n return;\n }\n\n this.pending_close = false;\n\n assert(this.init_done, 'close before init');\n assert(this.mode <= exports.UNZIP);\n\n if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n zlib_deflate.deflateEnd(this.strm);\n } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n zlib_inflate.inflateEnd(this.strm);\n }\n\n this.mode = exports.NONE;\n\n this.dictionary = null;\n};\n\nZlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n assert.equal(arguments.length, 8);\n\n assert(this.init_done, 'write before init');\n assert(this.mode !== exports.NONE, 'already finalized');\n assert.equal(false, this.write_in_progress, 'write already in progress');\n assert.equal(false, this.pending_close, 'close is pending');\n\n this.write_in_progress = true;\n\n assert.equal(false, flush === undefined, 'must provide flush value');\n\n this.write_in_progress = true;\n\n if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n throw new Error('Invalid flush value');\n }\n\n if (input == null) {\n input = Buffer.alloc(0);\n in_len = 0;\n in_off = 0;\n }\n\n this.strm.avail_in = in_len;\n this.strm.input = input;\n this.strm.next_in = in_off;\n this.strm.avail_out = out_len;\n this.strm.output = out;\n this.strm.next_out = out_off;\n this.flush = flush;\n\n if (!async) {\n // sync version\n this._process();\n\n if (this._checkError()) {\n return this._afterSync();\n }\n return;\n }\n\n // async version\n var self = this;\n process.nextTick(function () {\n self._process();\n self._after();\n });\n\n return this;\n};\n\nZlib.prototype._afterSync = function () {\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n return [avail_in, avail_out];\n};\n\nZlib.prototype._process = function () {\n var next_expected_header_byte = null;\n\n // If the avail_out is left at 0, then it means that it ran out\n // of room. If there was avail_out left over, then it means\n // that all of the input was consumed.\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflate(this.strm, this.flush);\n break;\n case exports.UNZIP:\n if (this.strm.avail_in > 0) {\n next_expected_header_byte = this.strm.next_in;\n }\n\n switch (this.gzip_id_bytes_read) {\n case 0:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n this.gzip_id_bytes_read = 1;\n next_expected_header_byte++;\n\n if (this.strm.avail_in === 1) {\n // The only available byte was already read.\n break;\n }\n } else {\n this.mode = exports.INFLATE;\n break;\n }\n\n // fallthrough\n case 1:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n this.gzip_id_bytes_read = 2;\n this.mode = exports.GUNZIP;\n } else {\n // There is no actual difference between INFLATE and INFLATERAW\n // (after initialization).\n this.mode = exports.INFLATE;\n }\n\n break;\n default:\n throw new Error('invalid number of gzip magic number bytes read');\n }\n\n // fallthrough\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n this.err = zlib_inflate.inflate(this.strm, this.flush\n\n // If data was encoded with dictionary\n );if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n // Load it\n this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n if (this.err === exports.Z_OK) {\n // And try to decode again\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n } else if (this.err === exports.Z_DATA_ERROR) {\n // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n // Make it possible for After() to tell a bad dictionary from bad\n // input.\n this.err = exports.Z_NEED_DICT;\n }\n }\n while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n // Bytes remain in input buffer. Perhaps this is another compressed\n // member in the same archive, or just trailing garbage.\n // Trailing zero bytes are okay, though, since they are frequently\n // used for padding.\n\n this.reset();\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n }\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n};\n\nZlib.prototype._checkError = function () {\n // Acceptable error states depend on the type of zlib stream.\n switch (this.err) {\n case exports.Z_OK:\n case exports.Z_BUF_ERROR:\n if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n this._error('unexpected end of file');\n return false;\n }\n break;\n case exports.Z_STREAM_END:\n // normal statuses, not fatal\n break;\n case exports.Z_NEED_DICT:\n if (this.dictionary == null) {\n this._error('Missing dictionary');\n } else {\n this._error('Bad dictionary');\n }\n return false;\n default:\n // something else.\n this._error('Zlib error');\n return false;\n }\n\n return true;\n};\n\nZlib.prototype._after = function () {\n if (!this._checkError()) {\n return;\n }\n\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n // call the write() cb\n this.callback(avail_in, avail_out);\n\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype._error = function (message) {\n if (this.strm.msg) {\n message = this.strm.msg;\n }\n this.onerror(message, this.err\n\n // no hope of rescue.\n );this.write_in_progress = false;\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n\n assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n assert(level >= -1 && level <= 9, 'invalid compression level');\n\n assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n\n assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n\n this._init(level, windowBits, memLevel, strategy, dictionary);\n this._setDictionary();\n};\n\nZlib.prototype.params = function () {\n throw new Error('deflateParams Not supported');\n};\n\nZlib.prototype.reset = function () {\n this._reset();\n this._setDictionary();\n};\n\nZlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n this.level = level;\n this.windowBits = windowBits;\n this.memLevel = memLevel;\n this.strategy = strategy;\n\n this.flush = exports.Z_NO_FLUSH;\n\n this.err = exports.Z_OK;\n\n if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n this.windowBits += 16;\n }\n\n if (this.mode === exports.UNZIP) {\n this.windowBits += 32;\n }\n\n if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n this.windowBits = -1 * this.windowBits;\n }\n\n this.strm = new Zstream();\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n break;\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n case exports.UNZIP:\n this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Init error');\n }\n\n this.dictionary = dictionary;\n\n this.write_in_progress = false;\n this.init_done = true;\n};\n\nZlib.prototype._setDictionary = function () {\n if (this.dictionary == null) {\n return;\n }\n\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to set dictionary');\n }\n};\n\nZlib.prototype._reset = function () {\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n case exports.GZIP:\n this.err = zlib_deflate.deflateReset(this.strm);\n break;\n case exports.INFLATE:\n case exports.INFLATERAW:\n case exports.GUNZIP:\n this.err = zlib_inflate.inflateReset(this.strm);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to reset stream');\n }\n};\n\nexports.Zlib = Zlib;","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\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) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\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\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\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.finalCalled = false;\n this._writableState.prefinished = 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\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\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'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\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); // 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\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // 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\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; // 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\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\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 if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\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.\n\n\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\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\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\n if (er) {\n errorOrDestroy(stream, 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) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\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 maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\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 if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\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\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\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 } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // 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\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || 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); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\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 // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\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; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // 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\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 = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\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; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\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.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\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.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\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.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\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\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\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 } // 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\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\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 cleanedUp = true; // 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\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\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', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\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 = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\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 if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\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, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\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\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\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.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\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 stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\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\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\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 get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\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 get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\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 get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\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 get() {\n return this._readableState.length;\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.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\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.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\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\n return -1;\n}","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","module.exports = require('events').EventEmitter;\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// 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'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\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 Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // 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\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\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}; // 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.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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\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}; // 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.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\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 Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n"],"sourceRoot":""}