{"version":3,"sources":["webpack:///./node_modules/url/url.js","webpack:///./src/views/oilDistribution/print/PrintRefineryOilDistribution.vue?8629","webpack:///src/views/oilDistribution/print/PrintRefineryOilDistribution.vue","webpack:///./src/views/oilDistribution/print/PrintRefineryOilDistribution.vue?f1de","webpack:///./src/views/oilDistribution/print/PrintRefineryOilDistribution.vue","webpack:///./node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/buffer/node_modules/isarray/index.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/stream-http/node_modules/isarray/index.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/builtin-status-codes/browser.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/stream-http/lib/request.js","webpack:///./node_modules/stream-http/index.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/stream-http/node_modules/safe-buffer/index.js","webpack:///./node_modules/stream-http/lib/capability.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/stream-http/lib/response.js","webpack:///./node_modules/to-arraybuffer/index.js","webpack:///./src/views/oilDistribution/print/PrintRefineryOilDistribution.vue?5b02"],"names":["punycode","Url","this","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","protocolPattern","portPattern","simplePathPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","querystring","urlParse","url","parseQueryString","slashesDenoteHost","u","parse","urlFormat","obj","format","prototype","call","urlResolve","source","relative","resolve","urlResolveObject","resolveObject","TypeError","queryIndex","indexOf","splitter","uSplit","split","slashRegex","replace","join","rest","trim","length","simplePath","exec","substr","proto","lowerProto","toLowerCase","match","atSign","hostEnd","i","hec","lastIndexOf","slice","decodeURIComponent","parseHost","ipv6Hostname","hostparts","l","part","newpart","j","k","charCodeAt","validParts","notHost","bit","push","unshift","toASCII","p","h","ae","esc","encodeURIComponent","escape","qm","s","Object","keys","stringify","arrayFormat","addQueryPrefix","charAt","rel","result","tkeys","tk","tkey","rkeys","rk","rkey","v","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","splice","isAbsolute","exports","render","_vm","_h","$createElement","_c","_self","domProps","_s","detailPrintNotification","staticRenderFns","data","computed","_objectSpread","mapState","getVesselTripId","state","vesselTripId","loading","vesselTrip","created","getHtmlPrintNotification","watch","newValue","oldValue","_","isEqual","console","log","$vs","close","methods","_getHtmlPrintNotification","_asyncToGenerator","regeneratorRuntime","mark","_callee","id","vm","options","request","wrap","_context","prev","next","localStorage","getItem","require","headers","res","on","chunk","newStr","replaceAll","newdata","sent","e","message","end","stop","apply","arguments","component","pna","objectKeys","key","module","Duplex","util","create","inherits","Readable","Writable","method","readable","writable","allowHalfOpen","once","onend","_writableState","ended","nextTick","onEndNT","self","defineProperty","enumerable","get","highWaterMark","undefined","_readableState","destroyed","set","value","_destroy","err","cb","root","nodeType","freeGlobal","global","window","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","Math","stringFromCharCode","String","fromCharCode","error","type","RangeError","map","array","fn","mapDomain","string","parts","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","decode","input","out","basic","index","oldi","w","t","baseMinusT","inputLength","n","bias","encode","handledCPCount","basicLength","m","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","test","EventEmitter","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","len","getLens","b64","Error","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","extraBytes","maxChunkLength","len2","toString","isArray","arg","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isDate","d","isError","isFunction","isPrimitive","o","isBuffer","Buffer","Stream","Transform","PassThrough","ctor","superCtor","super_","constructor","configurable","TempCtor","_classCallCheck","instance","Constructor","copyBuffer","src","target","offset","copy","BufferList","head","tail","entry","ret","clear","alloc","allocUnsafe","inspect","custom","name","_transform","encoding","afterTransform","er","ts","_transformState","transforming","writecb","emit","writechunk","rs","reading","needReadable","_read","bind","needTransform","writeencoding","sync","transform","flush","_flush","prefinish","_this","done","stream","_write","_this2","err2","extend","hasOwnProperty","CorkedRequest","finish","onCorkedFinish","asyncWrite","process","browser","version","setImmediate","WritableState","internalUtil","deprecate","OurUint8Array","_uint8ArrayToBuffer","from","_isUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","write","writev","_writev","destroy","final","_final","writeAfterEnd","validChunk","valid","decodeChunk","writeOrBuffer","isBuf","newChunk","callback","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","buffer","holder","count","allBuffers","callFinal","need","endWritable","corkReq","getBuffer","current","Symbol","hasInstance","Function","object","pipe","cork","uncork","setDefaultEncoding","_undestroy","undestroy","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","StringDecoder","nb","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckIncomplete","buf","utf8CheckExtraBytes","r","utf8Text","total","utf8End","c","copyProps","dst","SafeBuffer","encodingOrOffset","allocUnsafeSlow","size","fill","SlowBuffer","ReadableState","EElistenerCount","emitter","listeners","debugUtil","debug","debuglog","kProxyEvents","prependListener","event","_events","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","read","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","getPrototypeOf","addChunk","maybeReadMore","needMoreData","emitReadable","isPaused","setEncoding","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","nReadingNextTick","resume","resume_","fromList","fromListPartial","list","hasStrings","copyFromBufferString","copyFromBuffer","str","endReadable","endReadableNT","xs","x","parseInt","nOrig","doRead","dest","pipeOpts","doEnd","stdout","stderr","endFn","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","cleanedUp","removeListener","onclose","onfinish","onerror","ondata","increasedAwaitDrain","pause","dests","ev","addListener","paused","_fromList","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","pow","rt","abs","isNaN","LN2","response","toArrayBuffer","IncomingMessage","rStates","readyStates","decideMode","preferBinary","useFetch","capability","fetch","mozchunkedarraybuffer","msstream","arraybuffer","vbArray","ClientRequest","opts","_opts","_body","_headers","setHeader","forEach","mode","abortController","overrideMimeType","_mode","_fetchTimer","_onFinish","statusValid","xhr","status","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","headersObj","body","blobConstructor","Blob","headersList","keyName","signal","controller","AbortController","_fetchAbortController","requestTimeout","setTimeout","abort","credentials","withCredentials","then","_fetchResponse","_connect","reason","clearTimeout","_xhr","XMLHttpRequest","open","responseType","timeout","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","send","flushHeaders","setNoDelay","setSocketKeepAlive","statusCodes","defaultProtocol","location","toUpperCase","req","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","arg1","arg2","arg3","args","writableStream","WritableStream","ArrayBuffer","getXHR","XDomainRequest","checkTypeSupport","haveArrayBuffer","haveSlice","VBArray","base64","ieee754","typedArraySupport","__proto__","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","fromArrayBuffer","fromString","fromObject","assertSize","checked","actual","fromArrayLike","byteOffset","isnan","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","bidirectionalIndexOf","val","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","min","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","_isBuffer","compare","a","y","pos","swap16","swap32","swap64","equals","max","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","msg","config","warned","deprecated","trace","warn","readableDestroyed","writableDestroyed","emitErrorNT","UNSENT","OPENED","HEADERS_RECEIVED","fetchTimer","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","Promise","reject","_resumeFetch","pipeTo","catch","reader","getReader","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","responseBody","toArray","responseText","newData","MSStreamReader","onload","readAsArrayBuffer","arrayCopy"],"mappings":"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","file":"js/chunk-306fbac8.41f863f9.js","sourcesContent":["/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{domProps:{\"innerHTML\":_vm._s(_vm.detailPrintNotification)}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrintRefineryOilDistribution.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrintRefineryOilDistribution.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PrintRefineryOilDistribution.vue?vue&type=template&id=987aace4\"\nimport script from \"./PrintRefineryOilDistribution.vue?vue&type=script&lang=js\"\nexport * from \"./PrintRefineryOilDistribution.vue?vue&type=script&lang=js\"\nimport style0 from \"./PrintRefineryOilDistribution.vue?vue&type=style&index=0&id=987aace4&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","module.exports = require('events').EventEmitter;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else if (capability.vbArray && preferBinary) {\n\t\treturn 'text:vbarray'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n\t\tif (capability.arraybuffer) {\n\t\t\tbody = toArrayBuffer(Buffer.concat(self._body))\n\t\t} else if (capability.blobConstructor) {\n\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t}), {\n\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t})\n\t\t} else {\n\t\t\t// get utf8 string\n\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t}\n\t}\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tvar fetchTimer = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tglobal.clearTimeout(self._fetchTimer)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress()\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer)\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\tvar self = this\n\tself._destroyed = true\n\tglobal.clearTimeout(self._fetchTimer)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setTimeout = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","/* 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\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","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || (haveArrayBuffer && checkTypeSupport('arraybuffer'))\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\tcheckTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.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\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(new Buffer(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tif (result.done) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(new Buffer(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text:vbarray': // For IE9\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\ttry {\n\t\t\t\t// This fails in IE8\n\t\t\t\tresponse = new global.VBArray(xhr.responseBody).toArray()\n\t\t\t} catch (e) {}\n\t\t\tif (response !== null) {\n\t\t\t\tself.push(new Buffer(response))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Falls through in IE8\t\n\t\tcase 'text':\n\t\t\ttry { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n\t\t\t\tresponse = xhr.responseText\n\t\t\t} catch (e) {\n\t\t\t\tself._mode = 'text:vbarray'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = new Buffer(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tself.push(null)\n\t}\n}\n","var Buffer = require('buffer').Buffer\n\nmodule.exports = function (buf) {\n\t// If the buffer is backed by a Uint8Array, a faster version will work\n\tif (buf instanceof Uint8Array) {\n\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\treturn buf.buffer\n\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t// Otherwise we need to get a proper copy\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t}\n\t}\n\n\tif (Buffer.isBuffer(buf)) {\n\t\t// This is the slow version that will work with any Buffer\n\t\t// implementation (even in old browsers)\n\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\tvar len = buf.length\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tarrayCopy[i] = buf[i]\n\t\t}\n\t\treturn arrayCopy.buffer\n\t} else {\n\t\tthrow new Error('Argument must be a Buffer')\n\t}\n}\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrintRefineryOilDistribution.vue?vue&type=style&index=0&id=987aace4&prod&lang=css\""],"sourceRoot":""}