@withgraphite/graphite-cli 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.CHANGELOG.md +36 -4
- package/1463a26331df3b0b4d694b076097b2dd.node +0 -0
- package/741.js +3 -0
- package/741.js.LICENSE.txt +41 -0
- package/999.js +3 -0
- package/999.js.map +1 -0
- package/build/asset-manifest.json +3 -3
- package/build/index.html +1 -1
- package/build/static/css/74.67093f40.chunk.css.map +1 -1
- package/build/static/css/{main.a1031f14.css → main.c959f863.css} +2 -2
- package/build/static/css/main.c959f863.css.map +1 -0
- package/build/static/js/main.js +1 -1
- package/build/static/js/main.js.map +1 -1
- package/child.js +1 -1
- package/child.js.map +1 -1
- package/graphite.js +1 -1
- package/graphite.js.LICENSE.txt +42 -0
- package/package.json +1 -1
- package/325.js +0 -3
- package/325.js.map +0 -1
- package/903.js +0 -3
- package/903.js.map +0 -1
- package/build/static/css/main.a1031f14.css.map +0 -1
package/903.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"903.js","mappings":"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","sources":["webpack://@withgraphite/graphite-cli/../gti-server/node_modules/bser/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/cross-spawn/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/cross-spawn/lib/enoent.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/cross-spawn/lib/parse.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/cross-spawn/lib/util/escape.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/cross-spawn/lib/util/readShebang.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/cross-spawn/lib/util/resolveCommand.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/execa/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/execa/lib/command.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/execa/lib/error.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/execa/lib/kill.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/execa/lib/promise.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/execa/lib/stdio.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/execa/lib/stream.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/fb-watchman/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/get-stream/buffer-stream.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/get-stream/index.js","webpack://@withgraphite/graphite-cli/../../src/core.js","webpack://@withgraphite/graphite-cli/../../src/main.js","webpack://@withgraphite/graphite-cli/../../src/realtime.js","webpack://@withgraphite/graphite-cli/../../src/signals.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/is-stream/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/isexe/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/isexe/mode.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/isexe/windows.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/lru-cache/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/merge-stream/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/mimic-fn/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/node-int64/Int64.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/npm-run-path/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/onetime/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/path-key/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/classes/comparator.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/classes/range.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/classes/semver.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/clean.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/cmp.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/coerce.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/compare-build.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/compare-loose.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/compare.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/diff.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/eq.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/gt.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/gte.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/inc.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/lt.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/lte.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/major.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/minor.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/neq.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/parse.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/patch.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/prerelease.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/rcompare.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/rsort.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/satisfies.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/sort.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/functions/valid.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/internal/constants.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/internal/debug.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/internal/identifiers.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/internal/parse-options.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/internal/re.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/gtr.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/intersects.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/ltr.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/max-satisfying.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/min-satisfying.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/min-version.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/outside.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/simplify.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/subset.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/to-comparators.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/semver/ranges/valid.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/shebang-command/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/shebang-regex/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/signal-exit/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/signal-exit/signals.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/strip-final-newline/index.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/which/which.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/yallist/iterator.js","webpack://@withgraphite/graphite-cli/../gti-server/node_modules/yallist/yallist.js","webpack://@withgraphite/graphite-cli/../../../libs/public/gti-shared/node_modules/immutable/dist/immutable.js","webpack://@withgraphite/graphite-cli/../../../libs/public/gti-shared/node_modules/node-abort-controller/index.js"],"sourcesContent":["/* Copyright 2015-present Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 */\n\nvar EE = require('events').EventEmitter;\nvar util = require('util');\nvar os = require('os');\nvar assert = require('assert');\nvar Int64 = require('node-int64');\n\n// BSER uses the local endianness to reduce byte swapping overheads\n// (the protocol is expressly local IPC only). We need to tell node\n// to use the native endianness when reading various native values.\nvar isBigEndian = os.endianness() == 'BE';\n\n// Find the next power-of-2 >= size\nfunction nextPow2(size) {\n return Math.pow(2, Math.ceil(Math.log(size) / Math.LN2));\n}\n\n// Expandable buffer that we can provide a size hint for\nfunction Accumulator(initsize) {\n this.buf = Buffer.alloc(nextPow2(initsize || 8192));\n this.readOffset = 0;\n this.writeOffset = 0;\n}\n// For testing\nexports.Accumulator = Accumulator\n\n// How much we can write into this buffer without allocating\nAccumulator.prototype.writeAvail = function() {\n return this.buf.length - this.writeOffset;\n}\n\n// How much we can read\nAccumulator.prototype.readAvail = function() {\n return this.writeOffset - this.readOffset;\n}\n\n// Ensure that we have enough space for size bytes\nAccumulator.prototype.reserve = function(size) {\n if (size < this.writeAvail()) {\n return;\n }\n\n // If we can make room by shunting down, do so\n if (this.readOffset > 0) {\n this.buf.copy(this.buf, 0, this.readOffset, this.writeOffset);\n this.writeOffset -= this.readOffset;\n this.readOffset = 0;\n }\n\n // If we made enough room, no need to allocate more\n if (size < this.writeAvail()) {\n return;\n }\n\n // Allocate a replacement and copy it in\n var buf = Buffer.alloc(nextPow2(this.buf.length + size - this.writeAvail()));\n this.buf.copy(buf);\n this.buf = buf;\n}\n\n// Append buffer or string. Will resize as needed\nAccumulator.prototype.append = function(buf) {\n if (Buffer.isBuffer(buf)) {\n this.reserve(buf.length);\n buf.copy(this.buf, this.writeOffset, 0, buf.length);\n this.writeOffset += buf.length;\n } else {\n var size = Buffer.byteLength(buf);\n this.reserve(size);\n this.buf.write(buf, this.writeOffset);\n this.writeOffset += size;\n }\n}\n\nAccumulator.prototype.assertReadableSize = function(size) {\n if (this.readAvail() < size) {\n throw new Error(\"wanted to read \" + size +\n \" bytes but only have \" + this.readAvail());\n }\n}\n\nAccumulator.prototype.peekString = function(size) {\n this.assertReadableSize(size);\n return this.buf.toString('utf-8', this.readOffset, this.readOffset + size);\n}\n\nAccumulator.prototype.readString = function(size) {\n var str = this.peekString(size);\n this.readOffset += size;\n return str;\n}\n\nAccumulator.prototype.peekInt = function(size) {\n this.assertReadableSize(size);\n switch (size) {\n case 1:\n return this.buf.readInt8(this.readOffset, size);\n case 2:\n return isBigEndian ?\n this.buf.readInt16BE(this.readOffset, size) :\n this.buf.readInt16LE(this.readOffset, size);\n case 4:\n return isBigEndian ?\n this.buf.readInt32BE(this.readOffset, size) :\n this.buf.readInt32LE(this.readOffset, size);\n case 8:\n var big = this.buf.slice(this.readOffset, this.readOffset + 8);\n if (isBigEndian) {\n // On a big endian system we can simply pass the buffer directly\n return new Int64(big);\n }\n // Otherwise we need to byteswap\n return new Int64(byteswap64(big));\n default:\n throw new Error(\"invalid integer size \" + size);\n }\n}\n\nAccumulator.prototype.readInt = function(bytes) {\n var ival = this.peekInt(bytes);\n if (ival instanceof Int64 && isFinite(ival.valueOf())) {\n ival = ival.valueOf();\n }\n this.readOffset += bytes;\n return ival;\n}\n\nAccumulator.prototype.peekDouble = function() {\n this.assertReadableSize(8);\n return isBigEndian ?\n this.buf.readDoubleBE(this.readOffset) :\n this.buf.readDoubleLE(this.readOffset);\n}\n\nAccumulator.prototype.readDouble = function() {\n var dval = this.peekDouble();\n this.readOffset += 8;\n return dval;\n}\n\nAccumulator.prototype.readAdvance = function(size) {\n if (size > 0) {\n this.assertReadableSize(size);\n } else if (size < 0 && this.readOffset + size < 0) {\n throw new Error(\"advance with negative offset \" + size +\n \" would seek off the start of the buffer\");\n }\n this.readOffset += size;\n}\n\nAccumulator.prototype.writeByte = function(value) {\n this.reserve(1);\n this.buf.writeInt8(value, this.writeOffset);\n ++this.writeOffset;\n}\n\nAccumulator.prototype.writeInt = function(value, size) {\n this.reserve(size);\n switch (size) {\n case 1:\n this.buf.writeInt8(value, this.writeOffset);\n break;\n case 2:\n if (isBigEndian) {\n this.buf.writeInt16BE(value, this.writeOffset);\n } else {\n this.buf.writeInt16LE(value, this.writeOffset);\n }\n break;\n case 4:\n if (isBigEndian) {\n this.buf.writeInt32BE(value, this.writeOffset);\n } else {\n this.buf.writeInt32LE(value, this.writeOffset);\n }\n break;\n default:\n throw new Error(\"unsupported integer size \" + size);\n }\n this.writeOffset += size;\n}\n\nAccumulator.prototype.writeDouble = function(value) {\n this.reserve(8);\n if (isBigEndian) {\n this.buf.writeDoubleBE(value, this.writeOffset);\n } else {\n this.buf.writeDoubleLE(value, this.writeOffset);\n }\n this.writeOffset += 8;\n}\n\nvar BSER_ARRAY = 0x00;\nvar BSER_OBJECT = 0x01;\nvar BSER_STRING = 0x02;\nvar BSER_INT8 = 0x03;\nvar BSER_INT16 = 0x04;\nvar BSER_INT32 = 0x05;\nvar BSER_INT64 = 0x06;\nvar BSER_REAL = 0x07;\nvar BSER_TRUE = 0x08;\nvar BSER_FALSE = 0x09;\nvar BSER_NULL = 0x0a;\nvar BSER_TEMPLATE = 0x0b;\nvar BSER_SKIP = 0x0c;\n\nvar ST_NEED_PDU = 0; // Need to read and decode PDU length\nvar ST_FILL_PDU = 1; // Know the length, need to read whole content\n\nvar MAX_INT8 = 127;\nvar MAX_INT16 = 32767;\nvar MAX_INT32 = 2147483647;\n\nfunction BunserBuf() {\n EE.call(this);\n this.buf = new Accumulator();\n this.state = ST_NEED_PDU;\n}\nutil.inherits(BunserBuf, EE);\nexports.BunserBuf = BunserBuf;\n\nBunserBuf.prototype.append = function(buf, synchronous) {\n if (synchronous) {\n this.buf.append(buf);\n return this.process(synchronous);\n }\n\n try {\n this.buf.append(buf);\n } catch (err) {\n this.emit('error', err);\n return;\n }\n // Arrange to decode later. This allows the consuming\n // application to make progress with other work in the\n // case that we have a lot of subscription updates coming\n // in from a large tree.\n this.processLater();\n}\n\nBunserBuf.prototype.processLater = function() {\n var self = this;\n process.nextTick(function() {\n try {\n self.process(false);\n } catch (err) {\n self.emit('error', err);\n }\n });\n}\n\n// Do something with the buffer to advance our state.\n// If we're running synchronously we'll return either\n// the value we've decoded or undefined if we don't\n// yet have enought data.\n// If we're running asynchronously, we'll emit the value\n// when it becomes ready and schedule another invocation\n// of process on the next tick if we still have data we\n// can process.\nBunserBuf.prototype.process = function(synchronous) {\n if (this.state == ST_NEED_PDU) {\n if (this.buf.readAvail() < 2) {\n return;\n }\n // Validate BSER header\n this.expectCode(0);\n this.expectCode(1);\n this.pduLen = this.decodeInt(true /* relaxed */);\n if (this.pduLen === false) {\n // Need more data, walk backwards\n this.buf.readAdvance(-2);\n return;\n }\n // Ensure that we have a big enough buffer to read the rest of the PDU\n this.buf.reserve(this.pduLen);\n this.state = ST_FILL_PDU;\n }\n\n if (this.state == ST_FILL_PDU) {\n if (this.buf.readAvail() < this.pduLen) {\n // Need more data\n return;\n }\n\n // We have enough to decode it\n var val = this.decodeAny();\n if (synchronous) {\n return val;\n }\n this.emit('value', val);\n this.state = ST_NEED_PDU;\n }\n\n if (!synchronous && this.buf.readAvail() > 0) {\n this.processLater();\n }\n}\n\nBunserBuf.prototype.raise = function(reason) {\n throw new Error(reason + \", in Buffer of length \" +\n this.buf.buf.length + \" (\" + this.buf.readAvail() +\n \" readable) at offset \" + this.buf.readOffset + \" buffer: \" +\n JSON.stringify(this.buf.buf.slice(\n this.buf.readOffset, this.buf.readOffset + 32).toJSON()));\n}\n\nBunserBuf.prototype.expectCode = function(expected) {\n var code = this.buf.readInt(1);\n if (code != expected) {\n this.raise(\"expected bser opcode \" + expected + \" but got \" + code);\n }\n}\n\nBunserBuf.prototype.decodeAny = function() {\n var code = this.buf.peekInt(1);\n switch (code) {\n case BSER_INT8:\n case BSER_INT16:\n case BSER_INT32:\n case BSER_INT64:\n return this.decodeInt();\n case BSER_REAL:\n this.buf.readAdvance(1);\n return this.buf.readDouble();\n case BSER_TRUE:\n this.buf.readAdvance(1);\n return true;\n case BSER_FALSE:\n this.buf.readAdvance(1);\n return false;\n case BSER_NULL:\n this.buf.readAdvance(1);\n return null;\n case BSER_STRING:\n return this.decodeString();\n case BSER_ARRAY:\n return this.decodeArray();\n case BSER_OBJECT:\n return this.decodeObject();\n case BSER_TEMPLATE:\n return this.decodeTemplate();\n default:\n this.raise(\"unhandled bser opcode \" + code);\n }\n}\n\nBunserBuf.prototype.decodeArray = function() {\n this.expectCode(BSER_ARRAY);\n var nitems = this.decodeInt();\n var arr = [];\n for (var i = 0; i < nitems; ++i) {\n arr.push(this.decodeAny());\n }\n return arr;\n}\n\nBunserBuf.prototype.decodeObject = function() {\n this.expectCode(BSER_OBJECT);\n var nitems = this.decodeInt();\n var res = {};\n for (var i = 0; i < nitems; ++i) {\n var key = this.decodeString();\n var val = this.decodeAny();\n res[key] = val;\n }\n return res;\n}\n\nBunserBuf.prototype.decodeTemplate = function() {\n this.expectCode(BSER_TEMPLATE);\n var keys = this.decodeArray();\n var nitems = this.decodeInt();\n var arr = [];\n for (var i = 0; i < nitems; ++i) {\n var obj = {};\n for (var keyidx = 0; keyidx < keys.length; ++keyidx) {\n if (this.buf.peekInt(1) == BSER_SKIP) {\n this.buf.readAdvance(1);\n continue;\n }\n var val = this.decodeAny();\n obj[keys[keyidx]] = val;\n }\n arr.push(obj);\n }\n return arr;\n}\n\nBunserBuf.prototype.decodeString = function() {\n this.expectCode(BSER_STRING);\n var len = this.decodeInt();\n return this.buf.readString(len);\n}\n\n// This is unusual compared to the other decode functions in that\n// we may not have enough data available to satisfy the read, and\n// we don't want to throw. This is only true when we're reading\n// the PDU length from the PDU header; we'll set relaxSizeAsserts\n// in that case.\nBunserBuf.prototype.decodeInt = function(relaxSizeAsserts) {\n if (relaxSizeAsserts && (this.buf.readAvail() < 1)) {\n return false;\n } else {\n this.buf.assertReadableSize(1);\n }\n var code = this.buf.peekInt(1);\n var size = 0;\n switch (code) {\n case BSER_INT8:\n size = 1;\n break;\n case BSER_INT16:\n size = 2;\n break;\n case BSER_INT32:\n size = 4;\n break;\n case BSER_INT64:\n size = 8;\n break;\n default:\n this.raise(\"invalid bser int encoding \" + code);\n }\n\n if (relaxSizeAsserts && (this.buf.readAvail() < 1 + size)) {\n return false;\n }\n this.buf.readAdvance(1);\n return this.buf.readInt(size);\n}\n\n// synchronously BSER decode a string and return the value\nfunction loadFromBuffer(input) {\n var buf = new BunserBuf();\n var result = buf.append(input, true);\n if (buf.buf.readAvail()) {\n throw Error(\n 'excess data found after input buffer, use BunserBuf instead');\n }\n if (typeof result === 'undefined') {\n throw Error(\n 'no bser found in string and no error raised!?');\n }\n return result;\n}\nexports.loadFromBuffer = loadFromBuffer\n\n// Byteswap an arbitrary buffer, flipping from one endian\n// to the other, returning a new buffer with the resultant data\nfunction byteswap64(buf) {\n var swap = Buffer.alloc(buf.length);\n for (var i = 0; i < buf.length; i++) {\n swap[i] = buf[buf.length -1 - i];\n }\n return swap;\n}\n\nfunction dump_int64(buf, val) {\n // Get the raw bytes. The Int64 buffer is big endian\n var be = val.toBuffer();\n\n if (isBigEndian) {\n // We're a big endian system, so the buffer is exactly how we\n // want it to be\n buf.writeByte(BSER_INT64);\n buf.append(be);\n return;\n }\n // We need to byte swap to get the correct representation\n var le = byteswap64(be);\n buf.writeByte(BSER_INT64);\n buf.append(le);\n}\n\nfunction dump_int(buf, val) {\n var abs = Math.abs(val);\n if (abs <= MAX_INT8) {\n buf.writeByte(BSER_INT8);\n buf.writeInt(val, 1);\n } else if (abs <= MAX_INT16) {\n buf.writeByte(BSER_INT16);\n buf.writeInt(val, 2);\n } else if (abs <= MAX_INT32) {\n buf.writeByte(BSER_INT32);\n buf.writeInt(val, 4);\n } else {\n dump_int64(buf, new Int64(val));\n }\n}\n\nfunction dump_any(buf, val) {\n switch (typeof(val)) {\n case 'number':\n // check if it is an integer or a float\n if (isFinite(val) && Math.floor(val) === val) {\n dump_int(buf, val);\n } else {\n buf.writeByte(BSER_REAL);\n buf.writeDouble(val);\n }\n return;\n case 'string':\n buf.writeByte(BSER_STRING);\n dump_int(buf, Buffer.byteLength(val));\n buf.append(val);\n return;\n case 'boolean':\n buf.writeByte(val ? BSER_TRUE : BSER_FALSE);\n return;\n case 'object':\n if (val === null) {\n buf.writeByte(BSER_NULL);\n return;\n }\n if (val instanceof Int64) {\n dump_int64(buf, val);\n return;\n }\n if (Array.isArray(val)) {\n buf.writeByte(BSER_ARRAY);\n dump_int(buf, val.length);\n for (var i = 0; i < val.length; ++i) {\n dump_any(buf, val[i]);\n }\n return;\n }\n buf.writeByte(BSER_OBJECT);\n var keys = Object.keys(val);\n\n // First pass to compute number of defined keys\n var num_keys = keys.length;\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var v = val[key];\n if (typeof(v) == 'undefined') {\n num_keys--;\n }\n }\n dump_int(buf, num_keys);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var v = val[key];\n if (typeof(v) == 'undefined') {\n // Don't include it\n continue;\n }\n dump_any(buf, key);\n try {\n dump_any(buf, v);\n } catch (e) {\n throw new Error(\n e.message + ' (while serializing object property with name `' +\n key + \"')\");\n }\n }\n return;\n\n default:\n throw new Error('cannot serialize type ' + typeof(val) + ' to BSER');\n }\n}\n\n// BSER encode value and return a buffer of the contents\nfunction dumpToBuffer(val) {\n var buf = new Accumulator();\n // Build out the header\n buf.writeByte(0);\n buf.writeByte(1);\n // Reserve room for an int32 to hold our PDU length\n buf.writeByte(BSER_INT32);\n buf.writeInt(0, 4); // We'll come back and fill this in at the end\n\n dump_any(buf, val);\n\n // Compute PDU length\n var off = buf.writeOffset;\n var len = off - 7 /* the header length */;\n buf.writeOffset = 3; // The length value to fill in\n buf.writeInt(len, 4); // write the length in the space we reserved\n buf.writeOffset = off;\n\n return buf.buf.slice(0, off);\n}\nexports.dumpToBuffer = dumpToBuffer\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\nconst path = require('path');\nconst childProcess = require('child_process');\nconst crossSpawn = require('cross-spawn');\nconst stripFinalNewline = require('strip-final-newline');\nconst npmRunPath = require('npm-run-path');\nconst onetime = require('onetime');\nconst makeError = require('./lib/error');\nconst normalizeStdio = require('./lib/stdio');\nconst {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} = require('./lib/kill');\nconst {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = require('./lib/stream');\nconst {mergePromise, getSpawnedPromise} = require('./lib/promise');\nconst {joinCommand, parseCommand, getEscapedCommand} = require('./lib/command');\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPath.env({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\t...options\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execa.sync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nconst execa = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t}));\n\t\treturn mergePromise(dummySpawned, errorPromise);\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled,\n\t\t\t\tkilled: spawned.killed\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options.input);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\treturn mergePromise(spawned, handlePromiseOnce);\n};\n\nmodule.exports = execa;\n\nmodule.exports.sync = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false\n\t};\n};\n\nmodule.exports.command = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n};\n\nmodule.exports.commandSync = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa.sync(file, args, options);\n};\n\nmodule.exports.node = (scriptPath, args, options = {}) => {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdio.node(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : [])\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false\n\t\t}\n\t);\n};\n","'use strict';\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\nconst DOUBLE_QUOTES_REGEXP = /\"/g;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replace(DOUBLE_QUOTES_REGEXP, '\\\\\"')}\"`;\n};\n\nconst joinCommand = (file, args) => {\n\treturn normalizeArgs(file, args).join(' ');\n};\n\nconst getEscapedCommand = (file, args) => {\n\treturn normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n};\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execa.command()`\nconst parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens[tokens.length - 1];\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nmodule.exports = {\n\tjoinCommand,\n\tgetEscapedCommand,\n\tparseCommand\n};\n","'use strict';\nconst {signalsByName} = require('human-signals');\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nconst makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout}}\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n\nmodule.exports = makeError;\n","'use strict';\nconst os = require('os');\nconst onExit = require('signal-exit');\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nconst spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => {\n\treturn isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n};\n\nconst isSigterm = signal => {\n\treturn signal === os.constants.signals.SIGTERM ||\n\t\t(typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n};\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nconst spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nconst setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nconst validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nconst setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n\nmodule.exports = {\n\tspawnedKill,\n\tspawnedCancel,\n\tsetupTimeout,\n\tvalidateTimeout,\n\tsetExitHandler\n};\n","'use strict';\n\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property)\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nconst mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function' ?\n\t\t\t(...args) => Reflect.apply(descriptor.value, promise(), args) :\n\t\t\tdescriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n\n\treturn spawned;\n};\n\n// Use promises instead of `child_process` events\nconst getSpawnedPromise = spawned => {\n\treturn new Promise((resolve, reject) => {\n\t\tspawned.on('exit', (exitCode, signal) => {\n\t\t\tresolve({exitCode, signal});\n\t\t});\n\n\t\tspawned.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\n\t\tif (spawned.stdin) {\n\t\t\tspawned.stdin.on('error', error => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t}\n\t});\n};\n\nmodule.exports = {\n\tmergePromise,\n\tgetSpawnedPromise\n};\n\n","'use strict';\nconst aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nconst normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\nmodule.exports = normalizeStdio;\n\n// `ipc` is pushed unless it is already present\nmodule.exports.node = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n","'use strict';\nconst isStream = require('is-stream');\nconst getStream = require('get-stream');\nconst mergeStream = require('merge-stream');\n\n// `input` option\nconst handleInput = (spawned, input) => {\n\t// Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852\n\t// @todo remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0\n\tif (input === undefined || spawned.stdin === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nconst makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\tif (!stream) {\n\t\treturn;\n\t}\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\tif (encoding) {\n\t\treturn getStream(stream, {encoding, maxBuffer});\n\t}\n\n\treturn getStream.buffer(stream, {maxBuffer});\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nconst getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise)\n\t\t]);\n\t}\n};\n\nconst validateInputSync = ({input}) => {\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n};\n\nmodule.exports = {\n\thandleInput,\n\tmakeAllStream,\n\tgetSpawnedResult,\n\tvalidateInputSync\n};\n\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar net = require('net');\nvar EE = require('events').EventEmitter;\nvar util = require('util');\nvar childProcess = require('child_process');\nvar bser = require('bser');\n\n// We'll emit the responses to these when they get sent down to us\nvar unilateralTags = ['subscription', 'log'];\n\n/**\n * @param options An object with the following optional keys:\n * * 'watchmanBinaryPath' (string) Absolute path to the watchman binary.\n * If not provided, the Client locates the binary using the PATH specified\n * by the node child_process's default env.\n */\nfunction Client(options) {\n var self = this;\n EE.call(this);\n\n this.watchmanBinaryPath = 'watchman';\n if (options && options.watchmanBinaryPath) {\n this.watchmanBinaryPath = options.watchmanBinaryPath.trim();\n };\n this.commands = [];\n}\nutil.inherits(Client, EE);\n\nmodule.exports.Client = Client;\n\n// Try to send the next queued command, if any\nClient.prototype.sendNextCommand = function() {\n if (this.currentCommand) {\n // There's a command pending response, don't send this new one yet\n return;\n }\n\n this.currentCommand = this.commands.shift();\n if (!this.currentCommand) {\n // No further commands are queued\n return;\n }\n\n this.socket.write(bser.dumpToBuffer(this.currentCommand.cmd));\n}\n\nClient.prototype.cancelCommands = function(why) {\n var error = new Error(why);\n\n // Steal all pending commands before we start cancellation, in\n // case something decides to schedule more commands\n var cmds = this.commands;\n this.commands = [];\n\n if (this.currentCommand) {\n cmds.unshift(this.currentCommand);\n this.currentCommand = null;\n }\n\n // Synthesize an error condition for any commands that were queued\n cmds.forEach(function(cmd) {\n cmd.cb(error);\n });\n}\n\nClient.prototype.connect = function() {\n var self = this;\n\n function makeSock(sockname) {\n // bunser will decode the watchman BSER protocol for us\n self.bunser = new bser.BunserBuf();\n // For each decoded line:\n self.bunser.on('value', function(obj) {\n // Figure out if this is a unliteral response or if it is the\n // response portion of a request-response sequence. At the time\n // of writing, there are only two possible unilateral responses.\n var unilateral = false;\n for (var i = 0; i < unilateralTags.length; i++) {\n var tag = unilateralTags[i];\n if (tag in obj) {\n unilateral = tag;\n }\n }\n\n if (unilateral) {\n self.emit(unilateral, obj);\n } else if (self.currentCommand) {\n var cmd = self.currentCommand;\n self.currentCommand = null;\n if ('error' in obj) {\n var error = new Error(obj.error);\n error.watchmanResponse = obj;\n cmd.cb(error);\n } else {\n cmd.cb(null, obj);\n }\n }\n\n // See if we can dispatch the next queued command, if any\n self.sendNextCommand();\n });\n self.bunser.on('error', function(err) {\n self.emit('error', err);\n });\n\n self.socket = net.createConnection(sockname);\n self.socket.on('connect', function() {\n self.connecting = false;\n self.emit('connect');\n self.sendNextCommand();\n });\n self.socket.on('error', function(err) {\n self.connecting = false;\n self.emit('error', err);\n });\n self.socket.on('data', function(buf) {\n if (self.bunser) {\n self.bunser.append(buf);\n }\n });\n self.socket.on('end', function() {\n self.socket = null;\n self.bunser = null;\n self.cancelCommands('The watchman connection was closed');\n self.emit('end');\n });\n }\n\n // triggers will export the sock path to the environment.\n // If we're invoked in such a way, we can simply pick up the\n // definition from the environment and avoid having to fork off\n // a process to figure it out\n if (process.env.WATCHMAN_SOCK) {\n makeSock(process.env.WATCHMAN_SOCK);\n return;\n }\n\n // We need to ask the client binary where to find it.\n // This will cause the service to start for us if it isn't\n // already running.\n var args = ['--no-pretty', 'get-sockname'];\n\n // We use the more elaborate spawn rather than exec because there\n // are some error cases on Windows where process spawning can hang.\n // It is desirable to pipe stderr directly to stderr live so that\n // we can discover the problem.\n var proc = null;\n var spawnFailed = false;\n\n function spawnError(error) {\n if (spawnFailed) {\n // For ENOENT, proc 'close' will also trigger with a negative code,\n // let's suppress that second error.\n return;\n }\n spawnFailed = true;\n if (error.code === 'EACCES' || error.errno === 'EACCES') {\n error.message = 'The Watchman CLI is installed but cannot ' +\n 'be spawned because of a permission problem';\n } else if (error.code === 'ENOENT' || error.errno === 'ENOENT') {\n error.message = 'Watchman was not found in PATH. See ' +\n 'https://facebook.github.io/watchman/docs/install.html ' +\n 'for installation instructions';\n }\n console.error('Watchman: ', error.message);\n self.emit('error', error);\n }\n\n try {\n proc = childProcess.spawn(this.watchmanBinaryPath, args, {\n stdio: ['ignore', 'pipe', 'pipe'],\n windowsHide: true\n });\n } catch (error) {\n spawnError(error);\n return;\n }\n\n var stdout = [];\n var stderr = [];\n proc.stdout.on('data', function(data) {\n stdout.push(data);\n });\n proc.stderr.on('data', function(data) {\n data = data.toString('utf8');\n stderr.push(data);\n console.error(data);\n });\n proc.on('error', function(error) {\n spawnError(error);\n });\n\n proc.on('close', function (code, signal) {\n if (code !== 0) {\n spawnError(new Error(\n self.watchmanBinaryPath + ' ' + args.join(' ') +\n ' returned with exit code=' + code + ', signal=' +\n signal + ', stderr= ' + stderr.join('')));\n return;\n }\n try {\n var obj = JSON.parse(stdout.join(''));\n if ('error' in obj) {\n var error = new Error(obj.error);\n error.watchmanResponse = obj;\n self.emit('error', error);\n return;\n }\n makeSock(obj.sockname);\n } catch (e) {\n self.emit('error', e);\n }\n });\n}\n\nClient.prototype.command = function(args, done) {\n done = done || function() {};\n\n // Queue up the command\n this.commands.push({cmd: args, cb: done});\n\n // Establish a connection if we don't already have one\n if (!this.socket) {\n if (!this.connecting) {\n this.connecting = true;\n this.connect();\n return;\n }\n return;\n }\n\n // If we're already connected and idle, try sending the command immediately\n this.sendNextCommand();\n}\n\nvar cap_versions = {\n \"cmd-watch-del-all\": \"3.1.1\",\n \"cmd-watch-project\": \"3.1\",\n \"relative_root\": \"3.3\",\n \"term-dirname\": \"3.1\",\n \"term-idirname\": \"3.1\",\n \"wildmatch\": \"3.7\",\n}\n\n// Compares a vs b, returns < 0 if a < b, > 0 if b > b, 0 if a == b\nfunction vers_compare(a, b) {\n a = a.split('.');\n b = b.split('.');\n for (var i = 0; i < 3; i++) {\n var d = parseInt(a[i] || '0') - parseInt(b[i] || '0');\n if (d != 0) {\n return d;\n }\n }\n return 0; // Equal\n}\n\nfunction have_cap(vers, name) {\n if (name in cap_versions) {\n return vers_compare(vers, cap_versions[name]) >= 0;\n }\n return false;\n}\n\n// This is a helper that we expose for testing purposes\nClient.prototype._synthesizeCapabilityCheck = function(\n resp, optional, required) {\n resp.capabilities = {}\n var version = resp.version;\n optional.forEach(function (name) {\n resp.capabilities[name] = have_cap(version, name);\n });\n required.forEach(function (name) {\n var have = have_cap(version, name);\n resp.capabilities[name] = have;\n if (!have) {\n resp.error = 'client required capability `' + name +\n '` is not supported by this server';\n }\n });\n return resp;\n}\n\nClient.prototype.capabilityCheck = function(caps, done) {\n var optional = caps.optional || [];\n var required = caps.required || [];\n var self = this;\n this.command(['version', {\n optional: optional,\n required: required\n }], function (error, resp) {\n if (error) {\n done(error);\n return;\n }\n if (!('capabilities' in resp)) {\n // Server doesn't support capabilities, so we need to\n // synthesize the results based on the version\n resp = self._synthesizeCapabilityCheck(resp, optional, required);\n if (resp.error) {\n error = new Error(resp.error);\n error.watchmanResponse = resp;\n done(error);\n return;\n }\n }\n done(null, resp);\n });\n}\n\n// Close the connection to the service\nClient.prototype.end = function() {\n this.cancelCommands('The client was ended');\n if (this.socket) {\n this.socket.end();\n this.socket = null;\n }\n this.bunser = null;\n}\n","'use strict';\nconst {PassThrough: PassThroughStream} = require('stream');\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n","'use strict';\nconst {constants: BufferConstants} = require('buffer');\nconst stream = require('stream');\nconst {promisify} = require('util');\nconst bufferStream = require('./buffer-stream');\n\nconst streamPipelinePromisified = promisify(stream.pipeline);\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\tthrow new Error('Expected a stream');\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\tconst stream = bufferStream(options);\n\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait streamPipelinePromisified(inputStream, stream);\n\t\t\t\tresolve();\n\t\t\t} catch (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t}\n\t\t})();\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n","/* eslint-disable max-lines */\n// List of known process signals with information about them\nexport const SIGNALS = [\n {\n name: 'SIGHUP',\n number: 1,\n action: 'terminate',\n description: 'Terminal closed',\n standard: 'posix',\n },\n {\n name: 'SIGINT',\n number: 2,\n action: 'terminate',\n description: 'User interruption with CTRL-C',\n standard: 'ansi',\n },\n {\n name: 'SIGQUIT',\n number: 3,\n action: 'core',\n description: 'User interruption with CTRL-\\\\',\n standard: 'posix',\n },\n {\n name: 'SIGILL',\n number: 4,\n action: 'core',\n description: 'Invalid machine instruction',\n standard: 'ansi',\n },\n {\n name: 'SIGTRAP',\n number: 5,\n action: 'core',\n description: 'Debugger breakpoint',\n standard: 'posix',\n },\n {\n name: 'SIGABRT',\n number: 6,\n action: 'core',\n description: 'Aborted',\n standard: 'ansi',\n },\n {\n name: 'SIGIOT',\n number: 6,\n action: 'core',\n description: 'Aborted',\n standard: 'bsd',\n },\n {\n name: 'SIGBUS',\n number: 7,\n action: 'core',\n description:\n 'Bus error due to misaligned, non-existing address or paging error',\n standard: 'bsd',\n },\n {\n name: 'SIGEMT',\n number: 7,\n action: 'terminate',\n description: 'Command should be emulated but is not implemented',\n standard: 'other',\n },\n {\n name: 'SIGFPE',\n number: 8,\n action: 'core',\n description: 'Floating point arithmetic error',\n standard: 'ansi',\n },\n {\n name: 'SIGKILL',\n number: 9,\n action: 'terminate',\n description: 'Forced termination',\n standard: 'posix',\n forced: true,\n },\n {\n name: 'SIGUSR1',\n number: 10,\n action: 'terminate',\n description: 'Application-specific signal',\n standard: 'posix',\n },\n {\n name: 'SIGSEGV',\n number: 11,\n action: 'core',\n description: 'Segmentation fault',\n standard: 'ansi',\n },\n {\n name: 'SIGUSR2',\n number: 12,\n action: 'terminate',\n description: 'Application-specific signal',\n standard: 'posix',\n },\n {\n name: 'SIGPIPE',\n number: 13,\n action: 'terminate',\n description: 'Broken pipe or socket',\n standard: 'posix',\n },\n {\n name: 'SIGALRM',\n number: 14,\n action: 'terminate',\n description: 'Timeout or timer',\n standard: 'posix',\n },\n {\n name: 'SIGTERM',\n number: 15,\n action: 'terminate',\n description: 'Termination',\n standard: 'ansi',\n },\n {\n name: 'SIGSTKFLT',\n number: 16,\n action: 'terminate',\n description: 'Stack is empty or overflowed',\n standard: 'other',\n },\n {\n name: 'SIGCHLD',\n number: 17,\n action: 'ignore',\n description: 'Child process terminated, paused or unpaused',\n standard: 'posix',\n },\n {\n name: 'SIGCLD',\n number: 17,\n action: 'ignore',\n description: 'Child process terminated, paused or unpaused',\n standard: 'other',\n },\n {\n name: 'SIGCONT',\n number: 18,\n action: 'unpause',\n description: 'Unpaused',\n standard: 'posix',\n forced: true,\n },\n {\n name: 'SIGSTOP',\n number: 19,\n action: 'pause',\n description: 'Paused',\n standard: 'posix',\n forced: true,\n },\n {\n name: 'SIGTSTP',\n number: 20,\n action: 'pause',\n description: 'Paused using CTRL-Z or \"suspend\"',\n standard: 'posix',\n },\n {\n name: 'SIGTTIN',\n number: 21,\n action: 'pause',\n description: 'Background process cannot read terminal input',\n standard: 'posix',\n },\n {\n name: 'SIGBREAK',\n number: 21,\n action: 'terminate',\n description: 'User interruption with CTRL-BREAK',\n standard: 'other',\n },\n {\n name: 'SIGTTOU',\n number: 22,\n action: 'pause',\n description: 'Background process cannot write to terminal output',\n standard: 'posix',\n },\n {\n name: 'SIGURG',\n number: 23,\n action: 'ignore',\n description: 'Socket received out-of-band data',\n standard: 'bsd',\n },\n {\n name: 'SIGXCPU',\n number: 24,\n action: 'core',\n description: 'Process timed out',\n standard: 'bsd',\n },\n {\n name: 'SIGXFSZ',\n number: 25,\n action: 'core',\n description: 'File too big',\n standard: 'bsd',\n },\n {\n name: 'SIGVTALRM',\n number: 26,\n action: 'terminate',\n description: 'Timeout or timer',\n standard: 'bsd',\n },\n {\n name: 'SIGPROF',\n number: 27,\n action: 'terminate',\n description: 'Timeout or timer',\n standard: 'bsd',\n },\n {\n name: 'SIGWINCH',\n number: 28,\n action: 'ignore',\n description: 'Terminal window size changed',\n standard: 'bsd',\n },\n {\n name: 'SIGIO',\n number: 29,\n action: 'terminate',\n description: 'I/O is available',\n standard: 'other',\n },\n {\n name: 'SIGPOLL',\n number: 29,\n action: 'terminate',\n description: 'Watched event',\n standard: 'other',\n },\n {\n name: 'SIGINFO',\n number: 29,\n action: 'ignore',\n description: 'Request for process information',\n standard: 'other',\n },\n {\n name: 'SIGPWR',\n number: 30,\n action: 'terminate',\n description: 'Device running out of power',\n standard: 'systemv',\n },\n {\n name: 'SIGSYS',\n number: 31,\n action: 'core',\n description: 'Invalid system call',\n standard: 'other',\n },\n {\n name: 'SIGUNUSED',\n number: 31,\n action: 'terminate',\n description: 'Invalid system call',\n standard: 'other',\n },\n]\n/* eslint-enable max-lines */\n","import { constants } from 'os'\n\nimport { getSignals } from './signals.js'\nimport { SIGRTMAX } from './realtime.js'\n\n// Retrieve `signalsByName`, an object mapping signal name to signal properties.\n// We make sure the object is sorted by `number`.\nconst getSignalsByName = function() {\n const signals = getSignals()\n return signals.reduce(getSignalByName, {})\n}\n\nconst getSignalByName = function(\n signalByNameMemo,\n { name, number, description, supported, action, forced, standard },\n) {\n return {\n ...signalByNameMemo,\n [name]: { name, number, description, supported, action, forced, standard },\n }\n}\n\nexport const signalsByName = getSignalsByName()\n\n// Retrieve `signalsByNumber`, an object mapping signal number to signal\n// properties.\n// We make sure the object is sorted by `number`.\nconst getSignalsByNumber = function() {\n const signals = getSignals()\n const length = SIGRTMAX + 1\n const signalsA = Array.from({ length }, (value, number) =>\n getSignalByNumber(number, signals),\n )\n return Object.assign({}, ...signalsA)\n}\n\nconst getSignalByNumber = function(number, signals) {\n const signal = findSignalByNumber(number, signals)\n\n if (signal === undefined) {\n return {}\n }\n\n const { name, description, supported, action, forced, standard } = signal\n return {\n [number]: {\n name,\n number,\n description,\n supported,\n action,\n forced,\n standard,\n },\n }\n}\n\n// Several signals might end up sharing the same number because of OS-specific\n// numbers, in which case those prevail.\nconst findSignalByNumber = function(number, signals) {\n const signal = signals.find(({ name }) => constants.signals[name] === number)\n\n if (signal !== undefined) {\n return signal\n }\n\n return signals.find(signalA => signalA.number === number)\n}\n\nexport const signalsByNumber = getSignalsByNumber()\n","// List of realtime signals with information about them\nexport const getRealtimeSignals = function() {\n const length = SIGRTMAX - SIGRTMIN + 1\n return Array.from({ length }, getRealtimeSignal)\n}\n\nconst getRealtimeSignal = function(value, index) {\n return {\n name: `SIGRT${index + 1}`,\n number: SIGRTMIN + index,\n action: 'terminate',\n description: 'Application-specific signal (realtime)',\n standard: 'posix',\n }\n}\n\nconst SIGRTMIN = 34\nexport const SIGRTMAX = 64\n","import { constants } from 'os'\n\nimport { SIGNALS } from './core.js'\nimport { getRealtimeSignals } from './realtime.js'\n\n// Retrieve list of know signals (including realtime) with information about\n// them\nexport const getSignals = function() {\n const realtimeSignals = getRealtimeSignals()\n const signals = [...SIGNALS, ...realtimeSignals].map(normalizeSignal)\n return signals\n}\n\n// Normalize signal:\n// - `number`: signal numbers are OS-specific. This is taken into account by\n// `os.constants.signals`. However we provide a default `number` since some\n// signals are not defined for some OS.\n// - `forced`: set default to `false`\n// - `supported`: set value\nconst normalizeSignal = function({\n name,\n number: defaultNumber,\n description,\n action,\n forced = false,\n standard,\n}) {\n const {\n signals: { [name]: constantSignal },\n } = constants\n const supported = constantSignal !== undefined\n const number = supported ? constantSignal : defaultNumber\n return { name, number, description, supported, action, forced, standard }\n}\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","'use strict';\n\nconst { PassThrough } = require('stream');\n\nmodule.exports = function (/*streams...*/) {\n var sources = []\n var output = new PassThrough({objectMode: true})\n\n output.setMaxListeners(0)\n\n output.add = add\n output.isEmpty = isEmpty\n\n output.on('unpipe', remove)\n\n Array.prototype.slice.call(arguments).forEach(add)\n\n return output\n\n function add (source) {\n if (Array.isArray(source)) {\n source.forEach(add)\n return this\n }\n\n sources.push(source);\n source.once('end', remove.bind(null, source))\n source.once('error', output.emit.bind(output, 'error'))\n source.pipe(output, {end: false})\n return this\n }\n\n function isEmpty () {\n return sources.length == 0;\n }\n\n function remove (source) {\n sources = sources.filter(function (it) { return it !== source })\n if (!sources.length && output.readable) { output.end() }\n }\n}\n","'use strict';\n\nconst mimicFn = (to, from) => {\n\tfor (const prop of Reflect.ownKeys(from)) {\n\t\tObject.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));\n\t}\n\n\treturn to;\n};\n\nmodule.exports = mimicFn;\n// TODO: Remove this for the next major release\nmodule.exports.default = mimicFn;\n","// Int64.js\n//\n// Copyright (c) 2012 Robert Kieffer\n// MIT License - http://opensource.org/licenses/mit-license.php\n\n/**\n * Support for handling 64-bit int numbers in Javascript (node.js)\n *\n * JS Numbers are IEEE-754 binary double-precision floats, which limits the\n * range of values that can be represented with integer precision to:\n *\n * 2^^53 <= N <= 2^53\n *\n * Int64 objects wrap a node Buffer that holds the 8-bytes of int64 data. These\n * objects operate directly on the buffer which means that if they are created\n * using an existing buffer then setting the value will modify the Buffer, and\n * vice-versa.\n *\n * Internal Representation\n *\n * The internal buffer format is Big Endian. I.e. the most-significant byte is\n * at buffer[0], the least-significant at buffer[7]. For the purposes of\n * converting to/from JS native numbers, the value is assumed to be a signed\n * integer stored in 2's complement form.\n *\n * For details about IEEE-754 see:\n * http://en.wikipedia.org/wiki/Double_precision_floating-point_format\n */\n\n// Useful masks and values for bit twiddling\nvar MASK31 = 0x7fffffff, VAL31 = 0x80000000;\nvar MASK32 = 0xffffffff, VAL32 = 0x100000000;\n\n// Map for converting hex octets to strings\nvar _HEX = [];\nfor (var i = 0; i < 256; i++) {\n _HEX[i] = (i > 0xF ? '' : '0') + i.toString(16);\n}\n\n//\n// Int64\n//\n\n/**\n * Constructor accepts any of the following argument types:\n *\n * new Int64(buffer[, offset=0]) - Existing Buffer with byte offset\n * new Int64(Uint8Array[, offset=0]) - Existing Uint8Array with a byte offset\n * new Int64(string) - Hex string (throws if n is outside int64 range)\n * new Int64(number) - Number (throws if n is outside int64 range)\n * new Int64(hi, lo) - Raw bits as two 32-bit values\n */\nvar Int64 = module.exports = function(a1, a2) {\n if (a1 instanceof Buffer) {\n this.buffer = a1;\n this.offset = a2 || 0;\n } else if (Object.prototype.toString.call(a1) == '[object Uint8Array]') {\n // Under Browserify, Buffers can extend Uint8Arrays rather than an\n // instance of Buffer. We could assume the passed in Uint8Array is actually\n // a buffer but that won't handle the case where a raw Uint8Array is passed\n // in. We construct a new Buffer just in case.\n this.buffer = new Buffer(a1);\n this.offset = a2 || 0;\n } else {\n this.buffer = this.buffer || new Buffer(8);\n this.offset = 0;\n this.setValue.apply(this, arguments);\n }\n};\n\n\n// Max integer value that JS can accurately represent\nInt64.MAX_INT = Math.pow(2, 53);\n\n// Min integer value that JS can accurately represent\nInt64.MIN_INT = -Math.pow(2, 53);\n\nInt64.prototype = {\n\n constructor: Int64,\n\n /**\n * Do in-place 2's compliment. See\n * http://en.wikipedia.org/wiki/Two's_complement\n */\n _2scomp: function() {\n var b = this.buffer, o = this.offset, carry = 1;\n for (var i = o + 7; i >= o; i--) {\n var v = (b[i] ^ 0xff) + carry;\n b[i] = v & 0xff;\n carry = v >> 8;\n }\n },\n\n /**\n * Set the value. Takes any of the following arguments:\n *\n * setValue(string) - A hexidecimal string\n * setValue(number) - Number (throws if n is outside int64 range)\n * setValue(hi, lo) - Raw bits as two 32-bit values\n */\n setValue: function(hi, lo) {\n var negate = false;\n if (arguments.length == 1) {\n if (typeof(hi) == 'number') {\n // Simplify bitfield retrieval by using abs() value. We restore sign\n // later\n negate = hi < 0;\n hi = Math.abs(hi);\n lo = hi % VAL32;\n hi = hi / VAL32;\n if (hi > VAL32) throw new RangeError(hi + ' is outside Int64 range');\n hi = hi | 0;\n } else if (typeof(hi) == 'string') {\n hi = (hi + '').replace(/^0x/, '');\n lo = hi.substr(-8);\n hi = hi.length > 8 ? hi.substr(0, hi.length - 8) : '';\n hi = parseInt(hi, 16);\n lo = parseInt(lo, 16);\n } else {\n throw new Error(hi + ' must be a Number or String');\n }\n }\n\n // Technically we should throw if hi or lo is outside int32 range here, but\n // it's not worth the effort. Anything past the 32'nd bit is ignored.\n\n // Copy bytes to buffer\n var b = this.buffer, o = this.offset;\n for (var i = 7; i >= 0; i--) {\n b[o+i] = lo & 0xff;\n lo = i == 4 ? hi : lo >>> 8;\n }\n\n // Restore sign of passed argument\n if (negate) this._2scomp();\n },\n\n /**\n * Convert to a native JS number.\n *\n * WARNING: Do not expect this value to be accurate to integer precision for\n * large (positive or negative) numbers!\n *\n * @param allowImprecise If true, no check is performed to verify the\n * returned value is accurate to integer precision. If false, imprecise\n * numbers (very large positive or negative numbers) will be forced to +/-\n * Infinity.\n */\n toNumber: function(allowImprecise) {\n var b = this.buffer, o = this.offset;\n\n // Running sum of octets, doing a 2's complement\n var negate = b[o] & 0x80, x = 0, carry = 1;\n for (var i = 7, m = 1; i >= 0; i--, m *= 256) {\n var v = b[o+i];\n\n // 2's complement for negative numbers\n if (negate) {\n v = (v ^ 0xff) + carry;\n carry = v >> 8;\n v = v & 0xff;\n }\n\n x += v * m;\n }\n\n // Return Infinity if we've lost integer precision\n if (!allowImprecise && x >= Int64.MAX_INT) {\n return negate ? -Infinity : Infinity;\n }\n\n return negate ? -x : x;\n },\n\n /**\n * Convert to a JS Number. Returns +/-Infinity for values that can't be\n * represented to integer precision.\n */\n valueOf: function() {\n return this.toNumber(false);\n },\n\n /**\n * Return string value\n *\n * @param radix Just like Number#toString()'s radix\n */\n toString: function(radix) {\n return this.valueOf().toString(radix || 10);\n },\n\n /**\n * Return a string showing the buffer octets, with MSB on the left.\n *\n * @param sep separator string. default is '' (empty string)\n */\n toOctetString: function(sep) {\n var out = new Array(8);\n var b = this.buffer, o = this.offset;\n for (var i = 0; i < 8; i++) {\n out[i] = _HEX[b[o+i]];\n }\n return out.join(sep || '');\n },\n\n /**\n * Returns the int64's 8 bytes in a buffer.\n *\n * @param {bool} [rawBuffer=false] If no offset and this is true, return the internal buffer. Should only be used if\n * you're discarding the Int64 afterwards, as it breaks encapsulation.\n */\n toBuffer: function(rawBuffer) {\n if (rawBuffer && this.offset === 0) return this.buffer;\n\n var out = new Buffer(8);\n this.buffer.copy(out, 0, this.offset, this.offset + 8);\n return out;\n },\n\n /**\n * Copy 8 bytes of int64 into target buffer at target offset.\n *\n * @param {Buffer} targetBuffer Buffer to copy into.\n * @param {number} [targetOffset=0] Offset into target buffer.\n */\n copy: function(targetBuffer, targetOffset) {\n this.buffer.copy(targetBuffer, targetOffset || 0, this.offset, this.offset + 8);\n },\n\n /**\n * Returns a number indicating whether this comes before or after or is the\n * same as the other in sort order.\n *\n * @param {Int64} other Other Int64 to compare.\n */\n compare: function(other) {\n\n // If sign bits differ ...\n if ((this.buffer[this.offset] & 0x80) != (other.buffer[other.offset] & 0x80)) {\n return other.buffer[other.offset] - this.buffer[this.offset];\n }\n\n // otherwise, compare bytes lexicographically\n for (var i = 0; i < 8; i++) {\n if (this.buffer[this.offset+i] !== other.buffer[other.offset+i]) {\n return this.buffer[this.offset+i] - other.buffer[other.offset+i];\n }\n }\n return 0;\n },\n\n /**\n * Returns a boolean indicating if this integer is equal to other.\n *\n * @param {Int64} other Other Int64 to compare.\n */\n equals: function(other) {\n return this.compare(other) === 0;\n },\n\n /**\n * Pretty output in console.log\n */\n inspect: function() {\n return '[Int64 value:' + this + ' octets:' + this.toOctetString(' ') + ']';\n }\n};\n","'use strict';\nconst path = require('path');\nconst pathKey = require('path-key');\n\nconst npmRunPath = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tpath: process.env[pathKey()],\n\t\texecPath: process.execPath,\n\t\t...options\n\t};\n\n\tlet previous;\n\tlet cwdPath = path.resolve(options.cwd);\n\tconst result = [];\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n\n\t// Ensure the running `node` binary is used\n\tconst execPathDir = path.resolve(options.cwd, options.execPath, '..');\n\tresult.push(execPathDir);\n\n\treturn result.concat(options.path).join(path.delimiter);\n};\n\nmodule.exports = npmRunPath;\n// TODO: Remove this for the next major release\nmodule.exports.default = npmRunPath;\n\nmodule.exports.env = options => {\n\toptions = {\n\t\tenv: process.env,\n\t\t...options\n\t};\n\n\tconst env = {...options.env};\n\tconst path = pathKey({env});\n\n\toptions.path = env[path];\n\tenv[path] = module.exports(options);\n\n\treturn env;\n};\n","'use strict';\nconst mimicFn = require('mimic-fn');\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFn(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nmodule.exports = onetime;\n// TODO: Remove this for the next major release\nmodule.exports.default = onetime;\n\nmodule.exports.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nvar process = global.process\n\nconst processOk = function (process) {\n return process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n}\n\n// some kind of non-node environment, just no-op\n/* istanbul ignore if */\nif (!processOk(process)) {\n module.exports = function () {\n return function () {}\n }\n} else {\n var assert = require('assert')\n var signals = require('./signals.js')\n var isWin = /^win/i.test(process.platform)\n\n var EE = require('events')\n /* istanbul ignore if */\n if (typeof EE !== 'function') {\n EE = EE.EventEmitter\n }\n\n var emitter\n if (process.__signal_exit_emitter__) {\n emitter = process.__signal_exit_emitter__\n } else {\n emitter = process.__signal_exit_emitter__ = new EE()\n emitter.count = 0\n emitter.emitted = {}\n }\n\n // Because this emitter is a global, we have to check to see if a\n // previous version of this library failed to enable infinite listeners.\n // I know what you're about to say. But literally everything about\n // signal-exit is a compromise with evil. Get used to it.\n if (!emitter.infinite) {\n emitter.setMaxListeners(Infinity)\n emitter.infinite = true\n }\n\n module.exports = function (cb, opts) {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return function () {}\n }\n assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')\n\n if (loaded === false) {\n load()\n }\n\n var ev = 'exit'\n if (opts && opts.alwaysLast) {\n ev = 'afterexit'\n }\n\n var remove = function () {\n emitter.removeListener(ev, cb)\n if (emitter.listeners('exit').length === 0 &&\n emitter.listeners('afterexit').length === 0) {\n unload()\n }\n }\n emitter.on(ev, cb)\n\n return remove\n }\n\n var unload = function unload () {\n if (!loaded || !processOk(global.process)) {\n return\n }\n loaded = false\n\n signals.forEach(function (sig) {\n try {\n process.removeListener(sig, sigListeners[sig])\n } catch (er) {}\n })\n process.emit = originalProcessEmit\n process.reallyExit = originalProcessReallyExit\n emitter.count -= 1\n }\n module.exports.unload = unload\n\n var emit = function emit (event, code, signal) {\n /* istanbul ignore if */\n if (emitter.emitted[event]) {\n return\n }\n emitter.emitted[event] = true\n emitter.emit(event, code, signal)\n }\n\n // { <signal>: <listener fn>, ... }\n var sigListeners = {}\n signals.forEach(function (sig) {\n sigListeners[sig] = function listener () {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return\n }\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n var listeners = process.listeners(sig)\n if (listeners.length === emitter.count) {\n unload()\n emit('exit', null, sig)\n /* istanbul ignore next */\n emit('afterexit', null, sig)\n /* istanbul ignore next */\n if (isWin && sig === 'SIGHUP') {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n sig = 'SIGINT'\n }\n /* istanbul ignore next */\n process.kill(process.pid, sig)\n }\n }\n })\n\n module.exports.signals = function () {\n return signals\n }\n\n var loaded = false\n\n var load = function load () {\n if (loaded || !processOk(global.process)) {\n return\n }\n loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n emitter.count += 1\n\n signals = signals.filter(function (sig) {\n try {\n process.on(sig, sigListeners[sig])\n return true\n } catch (er) {\n return false\n }\n })\n\n process.emit = processEmit\n process.reallyExit = processReallyExit\n }\n module.exports.load = load\n\n var originalProcessReallyExit = process.reallyExit\n var processReallyExit = function processReallyExit (code) {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return\n }\n process.exitCode = code || /* istanbul ignore next */ 0\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n /* istanbul ignore next */\n originalProcessReallyExit.call(process, process.exitCode)\n }\n\n var originalProcessEmit = process.emit\n var processEmit = function processEmit (ev, arg) {\n if (ev === 'exit' && processOk(global.process)) {\n /* istanbul ignore else */\n if (arg !== undefined) {\n process.exitCode = arg\n }\n var ret = originalProcessEmit.apply(this, arguments)\n /* istanbul ignore next */\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n /* istanbul ignore next */\n return ret\n } else {\n return originalProcessEmit.apply(this, arguments)\n }\n }\n}\n","// This is not the set of all possible signals.\n//\n// It IS, however, the set of all signals that trigger\n// an exit on either Linux or BSD systems. Linux is a\n// superset of the signal names supported on BSD, and\n// the unknown signals just fail to register, so we can\n// catch that easily enough.\n//\n// Don't bother with SIGKILL. It's uncatchable, which\n// means that we can't fire any callbacks anyway.\n//\n// If a user does happen to register a handler on a non-\n// fatal signal like SIGWINCH or something, and then\n// exit, it'll end up firing `process.emit('exit')`, so\n// the handler will be fired anyway.\n//\n// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n// artificially, inherently leave the process in a\n// state from which it is not safe to try and enter JS\n// listeners.\nmodule.exports = [\n 'SIGABRT',\n 'SIGALRM',\n 'SIGHUP',\n 'SIGINT',\n 'SIGTERM'\n]\n\nif (process.platform !== 'win32') {\n module.exports.push(\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n module.exports.push(\n 'SIGIO',\n 'SIGPOLL',\n 'SIGPWR',\n 'SIGSTKFLT',\n 'SIGUNUSED'\n )\n}\n","'use strict';\n\nmodule.exports = input => {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\treturn input;\n};\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Immutable = {}));\n}(this, (function (exports) { 'use strict';\n\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n function MakeRef() {\n return { value: false };\n }\n\n function SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n }\n\n function isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n }\n\n var IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\n function isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n }\n\n var IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\n function isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n }\n\n var IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\n function isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n var Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n };\n\n var KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n }(Collection));\n\n var IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n }(Collection));\n\n var SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n }(Collection));\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\n function isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n }\n\n var IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\n function isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n }\n\n function isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n }\n\n var IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\n function isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n }\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n var Iterator = function Iterator(next) {\n this.next = next;\n };\n\n Iterator.prototype.toString = function toString () {\n return '[Iterator]';\n };\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n };\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n }\n\n function isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n }\n\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n function isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n }\n\n var Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n }(Collection));\n\n var KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === undefined || value === null\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n }(Seq));\n\n var IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n }(Seq));\n\n var SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n }(Seq));\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n Seq.prototype[IS_SEQ_SYMBOL] = true;\n\n // #pragma Root Sequences\n\n var ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n }(IndexedSeq));\n\n var ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object).concat(\n Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n );\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n }(KeyedSeq));\n ObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\n var CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n }(IndexedSeq));\n\n // # pragma Helper functions\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n }\n\n function maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n }\n\n var IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\n function isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n }\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n function isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n }\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n }\n\n var defaultValueOf = Object.prototype.valueOf;\n\n function hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n }\n\n function hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n }\n\n // Compress arbitrarily large numbers into smi hashes.\n function hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n }\n\n function cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n }\n\n function hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n }\n\n function hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n })();\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n function valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n }\n\n function nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var symbolMap = Object.create(null);\n\n var _objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n var ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n }(KeyedSeq));\n ToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\n var ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n }(IndexedSeq));\n\n var ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n }(SetSeq));\n\n var FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n }(KeyedSeq));\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n function flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n }\n\n function mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n }\n\n function reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n }\n\n function filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n }\n\n function countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n }\n\n function groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n }\n\n function partitionFactory(collection, predicate, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = [[], []];\n collection.__iterate(function (v, k) {\n groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n isKeyedIter ? [k, v] : v\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n }\n\n function sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n }\n\n function takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n function skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n function concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n }\n\n function flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n }\n\n function flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n }\n\n function interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n function sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n }\n\n function maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n }\n\n function zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n }\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n }\n\n function makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n }\n\n function defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n }\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n function coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n }\n\n var toString = Object.prototype.toString;\n\n function isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n }\n\n /**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\n function isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n }\n\n function quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n }\n\n function has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n }\n\n function get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n }\n\n function shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n }\n\n function remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n }\n\n function set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n }\n\n function updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n }\n\n function updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n ) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n }\n\n function setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n }\n\n function setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n }\n\n function removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n }\n\n function deleteIn(keyPath) {\n return removeIn(this, keyPath);\n }\n\n function update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n }\n\n function update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n }\n\n function updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n }\n\n function merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n }\n\n function mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n }\n\n function mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n }\n\n function merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n }\n\n function mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n }\n\n function mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n }\n\n function mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n }\n\n function mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n }\n\n function mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n }\n\n function deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n }\n\n /**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\n function areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n }\n\n function mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n }\n\n function mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n }\n\n function mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n }\n\n function mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n }\n\n function withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n }\n\n function asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n }\n\n function asImmutable() {\n return this.__ensureOwner();\n }\n\n function wasAltered() {\n return this.__altered;\n }\n\n var Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === undefined || value === null\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n }(KeyedCollection));\n\n Map.isMap = isMap;\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SYMBOL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeAll = MapPrototype.deleteAll;\n MapPrototype.setIn = setIn;\n MapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\n MapPrototype.update = update;\n MapPrototype.updateIn = updateIn;\n MapPrototype.merge = MapPrototype.concat = merge$1;\n MapPrototype.mergeWith = mergeWith$1;\n MapPrototype.mergeDeep = mergeDeep;\n MapPrototype.mergeDeepWith = mergeDeepWith;\n MapPrototype.mergeIn = mergeIn;\n MapPrototype.mergeDeepIn = mergeDeepIn;\n MapPrototype.withMutations = withMutations;\n MapPrototype.wasAltered = wasAltered;\n MapPrototype.asImmutable = asImmutable;\n MapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\n MapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n };\n MapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n };\n\n // #pragma Trie Nodes\n\n var ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n };\n\n ArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n var BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n };\n\n BitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n };\n\n BitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n var HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n };\n\n HashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n var HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n };\n\n HashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n var ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n };\n\n ValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\n BitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n // eslint-disable-next-line no-unused-vars\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n };\n\n var MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n }(Iterator));\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n ) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n }\n\n function isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n }\n\n function setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n var IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\n function isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n }\n\n var List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === undefined || value === null) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n }(IndexedCollection));\n\n List.isList = isList;\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SYMBOL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.merge = ListPrototype.concat;\n ListPrototype.setIn = setIn;\n ListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\n ListPrototype.update = update;\n ListPrototype.updateIn = updateIn;\n ListPrototype.mergeIn = mergeIn;\n ListPrototype.mergeDeepIn = mergeDeepIn;\n ListPrototype.withMutations = withMutations;\n ListPrototype.wasAltered = wasAltered;\n ListPrototype.asImmutable = asImmutable;\n ListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\n ListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n };\n ListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n };\n\n var VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n };\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n }\n\n var OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === undefined || value === null\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n }(Map));\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n var IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\n function isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n }\n\n var Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === undefined || value === null\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n }(IndexedCollection));\n\n Stack.isStack = isStack;\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SYMBOL] = true;\n StackPrototype.shift = StackPrototype.pop;\n StackPrototype.unshift = StackPrototype.push;\n StackPrototype.unshiftAll = StackPrototype.pushAll;\n StackPrototype.withMutations = withMutations;\n StackPrototype.wasAltered = wasAltered;\n StackPrototype.asImmutable = asImmutable;\n StackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\n StackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n };\n StackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n };\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n var IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\n function isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n }\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n function mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n function toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n }\n\n var Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === undefined || value === null\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n if (typeof iters[ii] === 'string') {\n set.add(iters[ii]);\n } else {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n }(SetCollection));\n\n Set.isSet = isSet;\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SYMBOL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.merge = SetPrototype.concat = SetPrototype.union;\n SetPrototype.withMutations = withMutations;\n SetPrototype.asImmutable = asImmutable;\n SetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\n SetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n };\n SetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n };\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n /**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\n var Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n }(IndexedSeq));\n\n var EMPTY_RANGE;\n\n function getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n }\n\n function getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n }\n\n function hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n }\n\n function hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n }\n\n function toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n }\n\n // Note: all of these methods are deprecated.\n Collection.isIterable = isCollection;\n Collection.isKeyed = isKeyed;\n Collection.isIndexed = isIndexed;\n Collection.isAssociative = isAssociative;\n Collection.isOrdered = isOrdered;\n\n Collection.Iterator = Iterator;\n\n mixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n partition: function partition(predicate, context) {\n return partitionFactory(this, predicate, context);\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = false;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n returnValue = true;\n return false;\n }\n });\n return returnValue;\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n var CollectionPrototype = Collection.prototype;\n CollectionPrototype[IS_COLLECTION_SYMBOL] = true;\n CollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\n CollectionPrototype.toJSON = CollectionPrototype.toArray;\n CollectionPrototype.__toStringMapper = quoteString;\n CollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n };\n CollectionPrototype.chain = CollectionPrototype.flatMap;\n CollectionPrototype.contains = CollectionPrototype.includes;\n\n mixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n });\n\n var KeyedCollectionPrototype = KeyedCollection.prototype;\n KeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\n KeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\n KeyedCollectionPrototype.toJSON = toObject;\n KeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\n mixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n });\n\n var IndexedCollectionPrototype = IndexedCollection.prototype;\n IndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\n IndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\n mixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n });\n\n var SetCollectionPrototype = SetCollection.prototype;\n SetCollectionPrototype.has = CollectionPrototype.includes;\n SetCollectionPrototype.contains = SetCollectionPrototype.includes;\n SetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedCollectionPrototype);\n mixin(IndexedSeq, IndexedCollectionPrototype);\n mixin(SetSeq, SetCollectionPrototype);\n\n // #pragma Helper functions\n\n function reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n }\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n }\n\n function neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n }\n\n function hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n }\n\n var OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === undefined || value === null\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n }(Set));\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\n OrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\n OrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\n OrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n }\n\n var PairSorting = {\n LeftThenRight: -1,\n RightThenLeft: +1,\n };\n\n function throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n }\n\n var Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n };\n\n Record.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n };\n\n Record.prototype.equals = function equals (other) {\n return (\n this === other ||\n (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n );\n };\n\n Record.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n };\n\n // @pragma Access\n\n Record.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n };\n\n Record.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n };\n\n // @pragma Modification\n\n Record.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n };\n\n Record.prototype.remove = function remove (k) {\n return this.set(k);\n };\n\n Record.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n };\n\n Record.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n };\n\n Record.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n };\n\n Record.prototype.toJS = function toJS$1 () {\n return toJS(this);\n };\n\n Record.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n };\n\n Record.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n };\n\n Record.isRecord = isRecord;\n Record.getDescriptiveName = recordName;\n var RecordPrototype = Record.prototype;\n RecordPrototype[IS_RECORD_SYMBOL] = true;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\n RecordPrototype.getIn = getIn;\n RecordPrototype.hasIn = CollectionPrototype.hasIn;\n RecordPrototype.merge = merge$1;\n RecordPrototype.mergeWith = mergeWith$1;\n RecordPrototype.mergeIn = mergeIn;\n RecordPrototype.mergeDeep = mergeDeep;\n RecordPrototype.mergeDeepWith = mergeDeepWith;\n RecordPrototype.mergeDeepIn = mergeDeepIn;\n RecordPrototype.setIn = setIn;\n RecordPrototype.update = update;\n RecordPrototype.updateIn = updateIn;\n RecordPrototype.withMutations = withMutations;\n RecordPrototype.asMutable = asMutable;\n RecordPrototype.asImmutable = asImmutable;\n RecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\n RecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\n RecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n };\n\n function makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n }\n\n function recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n }\n\n function setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n /**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\n var Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n }(IndexedSeq));\n\n var EMPTY_REPEAT;\n\n function fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n }\n\n function fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n }\n\n function defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n }\n\n var version = \"4.3.1\";\n\n var Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n PairSorting: PairSorting,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n };\n\n // Note: Iterable is deprecated\n var Iterable = Collection;\n\n exports.Collection = Collection;\n exports.Iterable = Iterable;\n exports.List = List;\n exports.Map = Map;\n exports.OrderedMap = OrderedMap;\n exports.OrderedSet = OrderedSet;\n exports.PairSorting = PairSorting;\n exports.Range = Range;\n exports.Record = Record;\n exports.Repeat = Repeat;\n exports.Seq = Seq;\n exports.Set = Set;\n exports.Stack = Stack;\n exports.default = Immutable;\n exports.fromJS = fromJS;\n exports.get = get;\n exports.getIn = getIn$1;\n exports.has = has;\n exports.hasIn = hasIn$1;\n exports.hash = hash;\n exports.is = is;\n exports.isAssociative = isAssociative;\n exports.isCollection = isCollection;\n exports.isImmutable = isImmutable;\n exports.isIndexed = isIndexed;\n exports.isKeyed = isKeyed;\n exports.isList = isList;\n exports.isMap = isMap;\n exports.isOrdered = isOrdered;\n exports.isOrderedMap = isOrderedMap;\n exports.isOrderedSet = isOrderedSet;\n exports.isPlainObject = isPlainObject;\n exports.isRecord = isRecord;\n exports.isSeq = isSeq;\n exports.isSet = isSet;\n exports.isStack = isStack;\n exports.isValueObject = isValueObject;\n exports.merge = merge;\n exports.mergeDeep = mergeDeep$1;\n exports.mergeDeepWith = mergeDeepWith$1;\n exports.mergeWith = mergeWith;\n exports.remove = remove;\n exports.removeIn = removeIn;\n exports.set = set;\n exports.setIn = setIn$1;\n exports.update = update$1;\n exports.updateIn = updateIn$1;\n exports.version = version;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","const { EventEmitter } = require(\"events\");\n\nclass AbortSignal {\n constructor() {\n this.eventEmitter = new EventEmitter();\n this.onabort = null;\n this.aborted = false;\n this.reason = undefined;\n }\n toString() {\n return \"[object AbortSignal]\";\n }\n get [Symbol.toStringTag]() {\n return \"AbortSignal\";\n }\n removeEventListener(name, handler) {\n this.eventEmitter.removeListener(name, handler);\n }\n addEventListener(name, handler) {\n this.eventEmitter.on(name, handler);\n }\n dispatchEvent(type) {\n const event = { type, target: this };\n const handlerName = `on${type}`;\n\n if (typeof this[handlerName] === \"function\") this[handlerName](event);\n\n this.eventEmitter.emit(type, event);\n }\n throwIfAborted() {\n if (this.aborted) {\n throw this.reason;\n }\n }\n static abort(reason) {\n const controller = new AbortController();\n controller.abort();\n return controller.signal;\n }\n static timeout(time) {\n const controller = new AbortController();\n setTimeout(() => controller.abort(new Error(\"TimeoutError\")), time);\n return controller.signal;\n }\n}\nclass AbortController {\n constructor() {\n this.signal = new AbortSignal();\n }\n abort(reason) {\n if (this.signal.aborted) return;\n\n this.signal.aborted = true;\n\n if (reason) this.signal.reason = reason;\n else this.signal.reason = new Error(\"AbortError\");\n\n this.signal.dispatchEvent(\"abort\");\n }\n toString() {\n return \"[object AbortController]\";\n }\n get [Symbol.toStringTag]() {\n return \"AbortController\";\n }\n}\n\nmodule.exports = { AbortController, AbortSignal };\n"],"names":["EE","require","util","os","Int64","isBigEndian","endianness","nextPow2","size","Math","pow","ceil","log","LN2","Accumulator","initsize","this","buf","Buffer","alloc","readOffset","writeOffset","exports","prototype","writeAvail","length","readAvail","reserve","copy","append","isBuffer","byteLength","write","assertReadableSize","Error","peekString","toString","readString","str","peekInt","readInt8","readInt16BE","readInt16LE","readInt32BE","readInt32LE","big","slice","byteswap64","readInt","bytes","ival","isFinite","valueOf","peekDouble","readDoubleBE","readDoubleLE","readDouble","dval","readAdvance","writeByte","value","writeInt8","writeInt","writeInt16BE","writeInt16LE","writeInt32BE","writeInt32LE","writeDouble","writeDoubleBE","writeDoubleLE","BSER_INT8","BSER_INT16","BSER_INT32","BSER_INT64","MAX_INT8","MAX_INT16","MAX_INT32","BunserBuf","call","state","swap","i","dump_int64","val","be","toBuffer","le","dump_int","abs","dump_any","floor","Array","isArray","keys","Object","num_keys","v","key","e","message","inherits","synchronous","process","err","emit","processLater","self","nextTick","expectCode","pduLen","decodeInt","decodeAny","raise","reason","JSON","stringify","toJSON","expected","code","decodeString","decodeArray","decodeObject","decodeTemplate","nitems","arr","push","res","obj","keyidx","len","relaxSizeAsserts","loadFromBuffer","input","result","dumpToBuffer","off","cp","parse","enoent","spawn","command","args","options","parsed","spawned","hookChildProcess","module","sync","spawnSync","error","verifyENOENTSync","status","_parse","_enoent","isWin","platform","notFoundError","original","syscall","assign","errno","path","spawnargs","verifyENOENT","file","originalEmit","name","arg1","apply","arguments","resolveCommand","escape","readShebang","isExecutableRegExp","isCmdShimRegExp","undefined","shell","commandFile","shebang","unshift","detectShebang","needsShell","test","forceShell","needsDoubleEscapeMetaChars","normalize","map","arg","argument","shellCommand","concat","join","env","comspec","windowsVerbatimArguments","parseNonShell","metaCharsRegExp","replace","doubleEscapeMetaChars","fs","shebangCommand","buffer","fd","openSync","readSync","closeSync","which","getPathKey","resolveCommandAttempt","withoutPathExt","cwd","hasCustomCwd","shouldSwitchCwd","chdir","disabled","resolved","pathExt","delimiter","resolve","childProcess","crossSpawn","stripFinalNewline","npmRunPath","onetime","makeError","normalizeStdio","spawnedKill","spawnedCancel","setupTimeout","validateTimeout","setExitHandler","handleInput","getSpawnedResult","makeAllStream","validateInputSync","mergePromise","getSpawnedPromise","joinCommand","parseCommand","getEscapedCommand","handleArguments","maxBuffer","extendEnv","preferLocal","localDir","execPath","encoding","reject","cleanup","all","windowsHide","envOption","getEnv","stdio","basename","handleOutput","execa","escapedCommand","dummySpawned","ChildProcess","errorPromise","Promise","stdout","stderr","timedOut","isCanceled","killed","spawnedPromise","timedPromise","processDone","context","kill","bind","cancel","handlePromiseOnce","async","exitCode","signal","stdoutResult","stderrResult","allResult","returnedError","failed","commandSync","node","scriptPath","defaultExecArgv","execArgv","filter","startsWith","nodePath","nodeOptions","stdin","normalizeArgs","NO_ESCAPE_REGEXP","DOUBLE_QUOTES_REGEXP","SPACES_REGEXP","escapeArg","tokens","token","trim","split","previousToken","endsWith","signalsByName","timeout","signalDescription","description","prefix","errorCode","getErrorPrefix","execaMessage","isError","shortMessage","Boolean","originalMessage","bufferedData","onExit","shouldForceKill","forceKillAfterTimeout","killResult","isSigterm","constants","signals","SIGTERM","toUpperCase","getForceKillAfterTimeout","Number","TypeError","t","setTimeout","unref","setKillTimeout","killSignal","timeoutId","timeoutPromise","timeoutKill","safeSpawnedPromise","finally","clearTimeout","race","detached","removeExitHandler","nativePromisePrototype","constructor","descriptors","property","Reflect","getOwnPropertyDescriptor","promise","descriptor","defineProperty","on","aliases","alias","some","hasAlias","max","from","index","includes","isStream","getStream","mergeStream","getBufferedData","stream","streamPromise","destroy","getStreamPromise","pipe","end","mixed","add","stdoutPromise","stderrPromise","allPromise","net","bser","unilateralTags","Client","watchmanBinaryPath","commands","sendNextCommand","currentCommand","shift","socket","cmd","cancelCommands","why","cmds","forEach","cb","connect","makeSock","sockname","bunser","unilateral","tag","watchmanResponse","createConnection","connecting","WATCHMAN_SOCK","proc","spawnFailed","spawnError","data","console","done","cap_versions","have_cap","vers","a","b","d","parseInt","vers_compare","_synthesizeCapabilityCheck","resp","optional","required","capabilities","version","have","capabilityCheck","caps","PassThrough","PassThroughStream","array","objectMode","setEncoding","chunks","chunk","getBufferedValue","getBufferedLength","BufferConstants","promisify","bufferStream","streamPipelinePromisified","pipeline","MaxBufferError","super","inputStream","Infinity","rejectPromise","MAX_LENGTH","number","action","standard","forced","getSignals","reduce","signalByNameMemo","supported","findSignalByNumber","find","signalA","signalsByNumber","SIGRTMAX","signalsA","getSignalByNumber","getSignalsByNumber","SIGRTMIN","getRealtimeSignal","realtimeSignals","getRealtimeSignals","SIGNALS","normalizeSignal","defaultNumber","constantSignal","writable","_write","_writableState","readable","_read","_readableState","duplex","transform","_transform","core","isexe","er","is","ignoreErrors","global","TESTING_WINDOWS","checkStat","statSync","stat","isFile","mod","mode","uid","gid","myUid","getuid","myGid","getgid","u","g","checkMode","isSymbolicLink","pathext","PATHEXT","indexOf","p","toLowerCase","substr","checkPathExt","Yallist","MAX","Symbol","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","get","doUse","hit","isStale","del","now","Date","unshiftNode","maxAge","diff","walker","tail","prev","delete","removeNode","Entry","forEachStep","fn","thisp","lc","stale","dispose","noDisposeOnSet","updateAgeOnGet","reset","mL","allowStale","mA","lengthCalculator","lC","itemCount","rforEach","head","next","toArray","k","values","Map","dump","h","dumpLru","set","has","item","peek","pop","load","l","expiresAt","prune","sources","output","setMaxListeners","isEmpty","remove","source","once","it","mimicFn","to","prop","ownKeys","VAL32","_HEX","a1","a2","offset","setValue","MAX_INT","MIN_INT","_2scomp","o","carry","hi","lo","negate","RangeError","toNumber","allowImprecise","x","m","radix","toOctetString","sep","out","rawBuffer","targetBuffer","targetOffset","compare","other","equals","inspect","pathKey","previous","cwdPath","execPathDir","calledFunctions","WeakMap","function_","returnValue","callCount","functionName","displayName","arguments_","throw","environment","reverse","ANY","Comparator","comp","parseOptions","loose","debug","semver","operator","r","re","COMPARATORLOOSE","COMPARATOR","match","SemVer","cmp","intersects","Range","includePrerelease","safeRe","range","raw","format","parseRange","c","first","isNullSet","isAny","comps","memoKey","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","cached","cache","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","rangeList","parseComparator","replaceGTE0","rangeMap","comparators","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","testSet","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","id","replaceTilde","TILDELOOSE","TILDE","_","M","pr","ret","replaceCaret","CARETLOOSE","CARET","z","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","prerelease","allowed","major","minor","patch","MAX_SAFE_INTEGER","compareIdentifiers","LOOSE","FULL","num","build","compareMain","comparePre","compareBuild","inc","release","identifier","identifierBase","base","isNaN","s","eq","neq","gt","gte","lt","lte","op","String","rtl","COERCERTL","exec","lastIndex","COERCE","versionA","versionB","version1","version2","v1","v2","comparison","v1Higher","highVersion","lowVersion","highHasPre","throwErrors","list","sort","internalRe","identifiers","valid","clean","rcompare","compareLoose","rsort","coerce","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","outside","gtr","ltr","simplifyRange","subset","src","SEMVER_SPEC_VERSION","RELEASE_TYPES","rcompareIdentifiers","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","NODE_DEBUG","numeric","anum","bnum","looseOption","freeze","emptyOpts","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","LONETILDE","LONECARET","r1","r2","versions","maxSV","rangeObj","min","minSV","minver","setMin","comparator","compver","hilo","gtfn","ltefn","ltfn","ecomp","high","low","ranges","simplified","minimumVersionWithPreRelease","minimumVersion","simpleSubset","sub","dom","eqSet","Set","gtltComp","higher","lower","hasDomLT","hasDomGT","higherGT","lowerLT","needDomLTPre","needDomGTPre","sawNonNull","OUTER","simpleSub","simpleDom","isSub","shebangRegex","string","binary","processOk","removeListener","reallyExit","listeners","pid","emitter","assert","EventEmitter","__signal_exit_emitter__","count","emitted","infinite","opts","equal","loaded","ev","alwaysLast","unload","sig","sigListeners","originalProcessEmit","originalProcessReallyExit","event","processEmit","processReallyExit","LF","charCodeAt","CR","isWindows","OSTYPE","COLON","getNotFoundError","getPathInfo","opt","colon","pathEnv","PATH","pathExtExe","found","step","ppRaw","pathPart","pCmd","subStep","ii","ext","then","j","cur","ex","nothrow","iterator","Node","create","pushNode","forEachReverse","n","getReverse","mapReverse","initial","acc","reduceReverse","toArrayReverse","sliceReverse","splice","start","deleteCount","nodes","inserted","DELETE","SHIFT","SIZE","MASK","NOT_SET","SetRef","ref","OwnerID","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","NaN","wholeSlice","begin","isNeg","resolveBegin","resolveIndex","resolveEnd","defaultIndex","IS_COLLECTION_SYMBOL","isCollection","maybeCollection","IS_KEYED_SYMBOL","isKeyed","maybeKeyed","IS_INDEXED_SYMBOL","isIndexed","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","__proto__","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","IS_SEQ_SYMBOL","isSeq","maybeSeq","IS_RECORD_SYMBOL","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","type","iteratorResult","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","KEYS","VALUES","ENTRIES","toSource","hasOwnProperty","isArrayLike","isInteger","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","entries","fromEntrySeq","isKeysIterable","toSetSeq","ObjectSeq","seqFromValue","__toString","cacheResult","_cache","__iterateUncached","entrySeq","entry","__iterator","__iteratorUncached","toKeyedSeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","of","ArraySeq","_array","notSetValue","object","getOwnPropertySymbols","_object","_keys","EMPTY_SEQ","CollectionSeq","collection","_collection","iterations","IS_MAP_SYMBOL","isMap","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","hashCode","valueA","valueB","imul","smi","i32","defaultValueOf","hash","hashNullish","hashed","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","nodeType","uniqueID","documentElement","getIENodeHash","nextHash","isExtensible","enumerable","configurable","hashJSObj","sym","symbolMap","hashSymbol","nullish","_objHashUID","ToKeyedSequence","indexed","useKeys","_iter","_useKeys","valueSeq","this$1$1","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","ToSetSequence","FromEntriesSequence","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","flip","cacheResultThrough","filterFactory","predicate","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","stack","sortFactory","defaultComparator","isKeyedCollection","maxFactory","maxCompare","zipWithFactory","keyIter","zipper","iters","zipAll","zipSequence","sizes","iterators","isDone","steps","reify","collectionClass","arrCopy","newArr","invariant","condition","assertNotInfinite","coerceKeyPath","keyPath","isPlainObject","proto","getPrototypeOf","parentProto","nextProto","isDataStructure","quoteString","_ignoreError","shallowCopy","collectionCopy","updateIn$1","updater","updatedValue","updateInDeeply","inImmutable","existing","wasNotSet","existingValue","newValue","nextExisting","nextUpdated","emptyMap","setIn$1","setIn","removeIn","deleteIn","update$1","update","updateIn","merge$1","mergeIntoKeyedWith","mergeWith$1","merger","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","merge","mergeWithSources","mergeWith","mergeDeep$1","mergeDeepWithSources","mergeDeepWith$1","deepMerger","oldValue","newDataStructure","oldSeq","newSeq","deepMergerWith","merged","mergeItem","hasVal","nextVal","mergeDeep","mergeDeepWith","mergeIn","mergeDeepIn","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","__altered","keyValues","_root","updateMap","deleteAll","clear","__hash","OrderedMap","sortBy","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","ArrayMapNode","keyHash","didChangeSize","didAlter","removed","idx","exists","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","bit","popCount","keyHashFrag","newNode","updateNode","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","newArray","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","root","newRoot","newSize","idx1","idx2","IS_LIST_SYMBOL","isList","maybeList","List","empty","emptyList","makeList","VNode","setSize","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","insert","oldSize","arguments$1","seqs","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","left","right","tailPos","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","emptyOrderedMap","_map","_list","updateOrderedMap","newMap","newList","makeOrderedMap","omap","toMap","IS_STACK_SYMBOL","isStack","maybeStack","Stack","emptyStack","pushAll","_head","makeStack","EMPTY_STACK","StackPrototype","unshiftAll","IS_SET_SYMBOL","isSet","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","allEqual","bSize","mixin","ctor","methods","keyCopier","toJS","result$1","emptySet","fromKeys","keySeq","intersect","sets","SetPrototype","union","updateSet","didChanges","mapEntries","mapped","toRemove","subtract","OrderedSet","__make","__empty","EMPTY_SET","makeSet","EMPTY_RANGE","_start","_end","_step","searchValue","possibleIndex","offsetValue","lastIndexOf","getIn$1","searchKeyPath","getIn","hasIn$1","toObject","isIterable","useTuples","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","singleton","concatSeq","flatten","sum","concatFactory","partition","isKeyedIter","groups","partitionFactory","findEntry","sideEffect","separator","joined","isFirst","reducer","initialReduction","reduceRight","butLast","countBy","grouper","countByFactory","entriesSequence","entryMapper","filterNot","not","findKey","findLast","findLastEntry","findLastKey","flatMap","flatMapFactory","searchKey","groupBy","groupByFactory","hasIn","isSubset","isSuperset","keyOf","keyMapper","last","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","chain","contains","mapKeys","KeyedCollectionPrototype","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","defaultZipper","zipWith","IndexedCollectionPrototype","SetCollectionPrototype","reduction","useFirst","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","PairSorting","LeftThenRight","RightThenLeft","Record","defaultValues","hasInitialized","throwOnInvalidDefaultValues","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","propName","warn","recordName","setProp","_values","RecordPrototype","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","record","EMPTY_REPEAT","Repeat","times","_value","fromJS","converter","fromJSWith","defaultConverter","parentValue","converted","Immutable","Iterable","default","factory","AbortSignal","eventEmitter","onabort","aborted","toStringTag","removeEventListener","handler","addEventListener","dispatchEvent","target","handlerName","throwIfAborted","controller","AbortController","abort","time"],"sourceRoot":""}
|