{"version":3,"file":"592.d7ca037ed9b7d1c6792a.js","mappings":"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","sources":["webpack://telegram-t/./node_modules/@cryptography/aes/dist/es/aes.js","webpack://telegram-t/./node_modules/async-mutex/lib/Mutex.js","webpack://telegram-t/./node_modules/async-mutex/lib/Semaphore.js","webpack://telegram-t/./node_modules/async-mutex/lib/errors.js","webpack://telegram-t/./node_modules/async-mutex/lib/index.js","webpack://telegram-t/./node_modules/async-mutex/lib/tryAcquire.js","webpack://telegram-t/./node_modules/async-mutex/lib/withTimeout.js","webpack://telegram-t/./node_modules/base64-js/index.js","webpack://telegram-t/./node_modules/big-integer/BigInteger.js","webpack://telegram-t/./node_modules/buffer/index.js","webpack://telegram-t/./node_modules/es5-ext/global.js","webpack://telegram-t/./node_modules/idb-keyval/dist/cjs/index.js","webpack://telegram-t/./node_modules/ieee754/index.js","webpack://telegram-t/./node_modules/os-browserify/browser.js","webpack://telegram-t/./node_modules/pako/dist/pako_inflate.js","webpack://telegram-t/./node_modules/safari-14-idb-fix/dist/cjs/index.js","webpack://telegram-t/./node_modules/tslib/tslib.es6.js","webpack://telegram-t/./node_modules/websocket/lib/browser.js","webpack://telegram-t/./node_modules/websocket/lib/version.js"],"sourcesContent":["var S = new Uint8Array(256);\nvar Si = new Uint8Array(256);\nvar T1 = new Uint32Array(256);\nvar T2 = new Uint32Array(256);\nvar T3 = new Uint32Array(256);\nvar T4 = new Uint32Array(256);\nvar T5 = new Uint32Array(256);\nvar T6 = new Uint32Array(256);\nvar T7 = new Uint32Array(256);\nvar T8 = new Uint32Array(256);\nfunction computeTables() {\n var d = new Uint8Array(256);\n var t = new Uint8Array(256);\n var x2;\n var x4;\n var x8;\n var s;\n var tEnc;\n var tDec;\n var x = 0;\n var xInv = 0;\n // Compute double and third tables\n for (var i = 0; i < 256; i++) {\n d[i] = i << 1 ^ (i >> 7) * 283;\n t[d[i] ^ i] = i;\n }\n for (; !S[x]; x ^= x2 || 1) {\n // Compute sbox\n s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n s = s >> 8 ^ s & 255 ^ 99;\n S[x] = s;\n Si[s] = x;\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n tEnc = d[s] * 0x101 ^ s * 0x1010100;\n T1[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T2[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T3[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T4[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T5[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T6[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T7[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T8[s] = tDec = tDec << 24 ^ tDec >>> 8;\n xInv = t[xInv] || 1;\n }\n}\n\n/**\n * Gets a uint32 from string in big-endian order order\n */\nfunction s2i(str, pos) {\n return (str.charCodeAt(pos) << 24\n ^ str.charCodeAt(pos + 1) << 16\n ^ str.charCodeAt(pos + 2) << 8\n ^ str.charCodeAt(pos + 3));\n}\n\n/* eslint-disable import/prefer-default-export */\n/**\n * Helper function for transforming string key to Uint32Array\n */\nfunction getWords(key) {\n if (key instanceof Uint32Array) {\n return key;\n }\n if (typeof key === 'string') {\n if (key.length % 4 !== 0)\n for (var i = key.length % 4; i <= 4; i++)\n key += '\\0x00';\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4)\n buf[i / 4] = s2i(key, i);\n return buf;\n }\n if (key instanceof Uint8Array) {\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4) {\n buf[i / 4] = (key[i] << 24\n ^ key[i + 1] << 16\n ^ key[i + 2] << 8\n ^ key[i + 3]);\n }\n return buf;\n }\n throw new Error('Unable to create 32-bit words');\n}\nfunction xor(left, right, to) {\n if (to === void 0) { to = left; }\n for (var i = 0; i < left.length; i++)\n to[i] = left[i] ^ right[i];\n}\n\ncomputeTables();\n/**\n * Low-level AES Cipher\n */\nvar AES = /** @class */ (function () {\n function AES(_key) {\n var key = getWords(_key);\n if (key.length !== 4 && key.length !== 6 && key.length !== 8) {\n throw new Error('Invalid key size');\n }\n this.encKey = new Uint32Array(4 * key.length + 28);\n this.decKey = new Uint32Array(4 * key.length + 28);\n this.encKey.set(key);\n var rcon = 1;\n var i = key.length;\n var tmp;\n // schedule encryption keys\n for (; i < 4 * key.length + 28; i++) {\n tmp = this.encKey[i - 1];\n // apply sbox\n if (i % key.length === 0 || (key.length === 8 && i % key.length === 4)) {\n tmp = S[tmp >>> 24] << 24 ^ S[(tmp >> 16) & 255] << 16 ^ S[(tmp >> 8) & 255] << 8 ^ S[tmp & 255];\n // shift rows and add rcon\n if (i % key.length === 0) {\n tmp = tmp << 8 ^ tmp >>> 24 ^ (rcon << 24);\n rcon = rcon << 1 ^ (rcon >> 7) * 283;\n }\n }\n this.encKey[i] = this.encKey[i - key.length] ^ tmp;\n }\n // schedule decryption keys\n for (var j = 0; i; j++, i--) {\n tmp = this.encKey[j & 3 ? i : i - 4];\n if (i <= 4 || j < 4) {\n this.decKey[j] = tmp;\n }\n else {\n this.decKey[j] = (T5[S[tmp >>> 24]]\n ^ T6[S[(tmp >> 16) & 255]]\n ^ T7[S[(tmp >> 8) & 255]]\n ^ T8[S[tmp & 255]]);\n }\n }\n }\n AES.prototype.encrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.encKey[0];\n var b = message[1] ^ this.encKey[1];\n var c = message[2] ^ this.encKey[2];\n var d = message[3] ^ this.encKey[3];\n var rounds = this.encKey.length / 4 - 2;\n var k = 4;\n var a2;\n var b2;\n var c2;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T1[a >>> 24] ^ T2[(b >> 16) & 255] ^ T3[(c >> 8) & 255] ^ T4[d & 255] ^ this.encKey[k];\n b2 = T1[b >>> 24] ^ T2[(c >> 16) & 255] ^ T3[(d >> 8) & 255] ^ T4[a & 255] ^ this.encKey[k + 1];\n c2 = T1[c >>> 24] ^ T2[(d >> 16) & 255] ^ T3[(a >> 8) & 255] ^ T4[b & 255] ^ this.encKey[k + 2];\n d = T1[d >>> 24] ^ T2[(a >> 16) & 255] ^ T3[(b >> 8) & 255] ^ T4[c & 255] ^ this.encKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n // console.log(a, b, c, d);\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[i] = (S[a >>> 24] << 24\n ^ S[(b >> 16) & 255] << 16\n ^ S[(c >> 8) & 255] << 8\n ^ S[d & 255]\n ^ this.encKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n AES.prototype.decrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.decKey[0];\n var b = message[3] ^ this.decKey[1];\n var c = message[2] ^ this.decKey[2];\n var d = message[1] ^ this.decKey[3];\n var rounds = this.decKey.length / 4 - 2;\n var a2;\n var b2;\n var c2;\n var k = 4;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T5[a >>> 24] ^ T6[(b >> 16) & 255] ^ T7[(c >> 8) & 255] ^ T8[d & 255] ^ this.decKey[k];\n b2 = T5[b >>> 24] ^ T6[(c >> 16) & 255] ^ T7[(d >> 8) & 255] ^ T8[a & 255] ^ this.decKey[k + 1];\n c2 = T5[c >>> 24] ^ T6[(d >> 16) & 255] ^ T7[(a >> 8) & 255] ^ T8[b & 255] ^ this.decKey[k + 2];\n d = T5[d >>> 24] ^ T6[(a >> 16) & 255] ^ T7[(b >> 8) & 255] ^ T8[c & 255] ^ this.decKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[3 & -i] = (Si[a >>> 24] << 24\n ^ Si[(b >> 16) & 255] << 16\n ^ Si[(c >> 8) & 255] << 8\n ^ Si[d & 255]\n ^ this.decKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n return AES;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE = /** @class */ (function () {\n function AES_IGE(key, iv, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.key = getWords(key);\n this.iv = getWords(iv);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var prevX = this.iv.subarray(this.blockSize, this.iv.length);\n var prevY = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = text.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.encrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n cipherText[j] = y[k];\n }\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n var cipherText = getWords(message);\n var text = buf || new Uint32Array(cipherText.length);\n var prevY = this.iv.subarray(this.blockSize, this.iv.length);\n var prevX = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = cipherText.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.decrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n text[j] = y[k];\n }\n return text;\n };\n return AES_IGE;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE$1 = /** @class */ (function () {\n function AES_IGE(key, counter, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.offset = 0;\n this.key = getWords(key);\n this.counter = getWords(counter);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n if (this.counter.length !== 4) {\n throw new Error('AES-CTR mode counter must be 16 bytes length');\n }\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var offset = this.offset;\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = this.cipher.encrypt(this.counter);\n for (var j = i, k = offset; j < text.length && k < this.blockSize; j++, k++)\n cipherText[j] = x[k] ^ text[j];\n if (text.length - i >= this.blockSize)\n this.incrementCounter();\n if (offset) {\n i -= offset;\n offset = 0;\n }\n }\n this.offset = (this.offset + (text.length % 4)) % 4;\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n return this.encrypt(message, buf);\n };\n AES_IGE.prototype.incrementCounter = function () {\n // increment counter\n for (var carry = this.counter.length - 1; carry >= 0; carry--) {\n if (++this.counter[carry] < 0xFFFFFFFF)\n break; // If overflowing, it'll be 0 and we'll have to continue propagating the carry\n }\n };\n return AES_IGE;\n}());\n\nexport default AES;\nexport { AES_IGE$1 as CTR, AES_IGE as IGE };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Semaphore_1 = require(\"./Semaphore\");\nvar Mutex = /** @class */ (function () {\n function Mutex(cancelError) {\n this._semaphore = new Semaphore_1.default(1, cancelError);\n }\n Mutex.prototype.acquire = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a, releaser;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._semaphore.acquire()];\n case 1:\n _a = _b.sent(), releaser = _a[1];\n return [2 /*return*/, releaser];\n }\n });\n });\n };\n Mutex.prototype.runExclusive = function (callback) {\n return this._semaphore.runExclusive(function () { return callback(); });\n };\n Mutex.prototype.isLocked = function () {\n return this._semaphore.isLocked();\n };\n /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n Mutex.prototype.release = function () {\n this._semaphore.release();\n };\n Mutex.prototype.cancel = function () {\n return this._semaphore.cancel();\n };\n return Mutex;\n}());\nexports.default = Mutex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar errors_1 = require(\"./errors\");\nvar Semaphore = /** @class */ (function () {\n function Semaphore(_maxConcurrency, _cancelError) {\n if (_cancelError === void 0) { _cancelError = errors_1.E_CANCELED; }\n this._maxConcurrency = _maxConcurrency;\n this._cancelError = _cancelError;\n this._queue = [];\n if (_maxConcurrency <= 0) {\n throw new Error('semaphore must be initialized to a positive value');\n }\n this._value = _maxConcurrency;\n }\n Semaphore.prototype.acquire = function () {\n var _this = this;\n var locked = this.isLocked();\n var ticketPromise = new Promise(function (resolve, reject) {\n return _this._queue.push({ resolve: resolve, reject: reject });\n });\n if (!locked)\n this._dispatch();\n return ticketPromise;\n };\n Semaphore.prototype.runExclusive = function (callback) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a, value, release;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.acquire()];\n case 1:\n _a = _b.sent(), value = _a[0], release = _a[1];\n _b.label = 2;\n case 2:\n _b.trys.push([2, , 4, 5]);\n return [4 /*yield*/, callback(value)];\n case 3: return [2 /*return*/, _b.sent()];\n case 4:\n release();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Semaphore.prototype.isLocked = function () {\n return this._value <= 0;\n };\n /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n Semaphore.prototype.release = function () {\n if (this._maxConcurrency > 1) {\n throw new Error('this method is unavailable on semaphores with concurrency > 1; use the scoped release returned by acquire instead');\n }\n if (this._currentReleaser) {\n var releaser = this._currentReleaser;\n this._currentReleaser = undefined;\n releaser();\n }\n };\n Semaphore.prototype.cancel = function () {\n var _this = this;\n this._queue.forEach(function (ticket) { return ticket.reject(_this._cancelError); });\n this._queue = [];\n };\n Semaphore.prototype._dispatch = function () {\n var _this = this;\n var nextTicket = this._queue.shift();\n if (!nextTicket)\n return;\n var released = false;\n this._currentReleaser = function () {\n if (released)\n return;\n released = true;\n _this._value++;\n _this._dispatch();\n };\n nextTicket.resolve([this._value--, this._currentReleaser]);\n };\n return Semaphore;\n}());\nexports.default = Semaphore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.E_CANCELED = exports.E_ALREADY_LOCKED = exports.E_TIMEOUT = void 0;\nexports.E_TIMEOUT = new Error('timeout while waiting for mutex to become available');\nexports.E_ALREADY_LOCKED = new Error('mutex already locked');\nexports.E_CANCELED = new Error('request for lock canceled');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryAcquire = exports.withTimeout = exports.Semaphore = exports.Mutex = void 0;\nvar tslib_1 = require(\"tslib\");\nvar Mutex_1 = require(\"./Mutex\");\nObject.defineProperty(exports, \"Mutex\", { enumerable: true, get: function () { return Mutex_1.default; } });\nvar Semaphore_1 = require(\"./Semaphore\");\nObject.defineProperty(exports, \"Semaphore\", { enumerable: true, get: function () { return Semaphore_1.default; } });\nvar withTimeout_1 = require(\"./withTimeout\");\nObject.defineProperty(exports, \"withTimeout\", { enumerable: true, get: function () { return withTimeout_1.withTimeout; } });\nvar tryAcquire_1 = require(\"./tryAcquire\");\nObject.defineProperty(exports, \"tryAcquire\", { enumerable: true, get: function () { return tryAcquire_1.tryAcquire; } });\ntslib_1.__exportStar(require(\"./errors\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryAcquire = void 0;\nvar errors_1 = require(\"./errors\");\nvar withTimeout_1 = require(\"./withTimeout\");\n// eslint-disable-next-lisne @typescript-eslint/explicit-module-boundary-types\nfunction tryAcquire(sync, alreadyAcquiredError) {\n if (alreadyAcquiredError === void 0) { alreadyAcquiredError = errors_1.E_ALREADY_LOCKED; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return withTimeout_1.withTimeout(sync, 0, alreadyAcquiredError);\n}\nexports.tryAcquire = tryAcquire;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withTimeout = void 0;\nvar tslib_1 = require(\"tslib\");\nvar errors_1 = require(\"./errors\");\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction withTimeout(sync, timeout, timeoutError) {\n var _this = this;\n if (timeoutError === void 0) { timeoutError = errors_1.E_TIMEOUT; }\n return {\n acquire: function () {\n return new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var isTimeout, handle, ticket, release, e_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isTimeout = false;\n handle = setTimeout(function () {\n isTimeout = true;\n reject(timeoutError);\n }, timeout);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, sync.acquire()];\n case 2:\n ticket = _a.sent();\n if (isTimeout) {\n release = Array.isArray(ticket) ? ticket[1] : ticket;\n release();\n }\n else {\n clearTimeout(handle);\n resolve(ticket);\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n if (!isTimeout) {\n clearTimeout(handle);\n reject(e_1);\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); });\n },\n runExclusive: function (callback) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var release, ticket;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n release = function () { return undefined; };\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 7, 8]);\n return [4 /*yield*/, this.acquire()];\n case 2:\n ticket = _a.sent();\n if (!Array.isArray(ticket)) return [3 /*break*/, 4];\n release = ticket[1];\n return [4 /*yield*/, callback(ticket[0])];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n release = ticket;\n return [4 /*yield*/, callback()];\n case 5: return [2 /*return*/, _a.sent()];\n case 6: return [3 /*break*/, 8];\n case 7:\n release();\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n },\n /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n release: function () {\n sync.release();\n },\n cancel: function () {\n return sync.cancel();\n },\n isLocked: function () { return sync.isLocked(); },\n };\n}\nexports.withTimeout = withTimeout;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = function(v){\r\n v = parseValue(v)\r\n return new NativeBigInt(this.value << v.value)\r\n }\r\n SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = function (v){\r\n v = parseValue(v)\r\n return new NativeBigInt(this.value >> v.value)\r\n }\r\n SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < top) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar safariFix = require('safari-14-idb-fix');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar safariFix__default = /*#__PURE__*/_interopDefaultLegacy(safariFix);\n\nfunction promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n const dbp = safariFix__default['default']().then(() => {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n return promisifyRequest(request);\n });\n return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(customStore, callback) {\n return customStore('readonly', (store) => {\n // This would be store.getAllKeys(), but it isn't supported by Edge or Safari.\n // And openKeyCursor isn't supported by Safari.\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n const items = [];\n return eachCursor(customStore, (cursor) => items.push(cursor.key)).then(() => items);\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n const items = [];\n return eachCursor(customStore, (cursor) => items.push(cursor.value)).then(() => items);\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n const items = [];\n return eachCursor(customStore, (cursor) => items.push([cursor.key, cursor.value])).then(() => items);\n}\n\nexports.clear = clear;\nexports.createStore = createStore;\nexports.del = del;\nexports.entries = entries;\nexports.get = get;\nexports.getMany = getMany;\nexports.keys = keys;\nexports.promisifyRequest = promisifyRequest;\nexports.set = set;\nexports.setMany = setMany;\nexports.update = update;\nexports.values = values;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","\n/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */\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.pako = {}));\n}(this, (function (exports) { 'use strict';\n\n // Note: adler32 takes 12% for level 0 and 2% for level 6.\n // It isn't worth it to make additional optimizations as in original.\n // Small size is preferable.\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n const adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n };\n\n\n var adler32_1 = adler32;\n\n // Note: we can't get significant speed boost here.\n // So write code to minimize size - no pregenerated tables\n // and array tools dependencies.\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n // Use ordinary array, since untyped makes no boost here\n const makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n };\n\n // Create table on load. Just 255 signed longs. Not a problem.\n const crcTable = new Uint32Array(makeTable());\n\n\n const crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n };\n\n\n var crc32_1 = crc32;\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n // See state defs from inflate.js\n const BAD$1 = 30; /* got a data error -- remain here until reset */\n const TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\n\n /*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\n var inffast = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n //#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n //#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n //#ifdef INFLATE_STRICT\n dmax = state.dmax;\n //#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n //#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n //#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n\n // (!) This block is disabled in zlib defaults,\n // don't enable it for binary compatibility\n //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n // if (len <= op - whave) {\n // do {\n // output[_out++] = 0;\n // } while (--len);\n // continue top;\n // }\n // len -= op - whave;\n // do {\n // output[_out++] = 0;\n // } while (--op > whave);\n // if (op === 0) {\n // from = _out - dist;\n // do {\n // output[_out++] = output[from++];\n // } while (--len);\n // continue top;\n // }\n //#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE$1;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n };\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n const MAXBITS = 15;\n const ENOUGH_LENS$1 = 852;\n const ENOUGH_DISTS$1 = 592;\n //const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\n const CODES$1 = 0;\n const LENS$1 = 1;\n const DISTS$1 = 2;\n\n const lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n ]);\n\n const lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n ]);\n\n const dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n ]);\n\n const dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n ]);\n\n const inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n {\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n let base_index = 0;\n // let shoextra; /* extra bits table to use */\n let end; /* use base and extra for symbol > end */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n let extra_index = 0;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES$1 || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES$1) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS$1) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n };\n\n\n var inftrees = inflate_table;\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n var constants$1 = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n };\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\n const CODES = 0;\n const LENS = 1;\n const DISTS = 2;\n\n /* Public constants ==========================================================*/\n /* ===========================================================================*/\n\n const {\n Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,\n Z_DEFLATED\n } = constants$1;\n\n\n /* STATES ====================================================================*/\n /* ===========================================================================*/\n\n\n const HEAD = 1; /* i: waiting for magic header */\n const FLAGS = 2; /* i: waiting for method and flags (gzip) */\n const TIME = 3; /* i: waiting for modification time (gzip) */\n const OS = 4; /* i: waiting for extra flags and operating system (gzip) */\n const EXLEN = 5; /* i: waiting for extra length (gzip) */\n const EXTRA = 6; /* i: waiting for extra bytes (gzip) */\n const NAME = 7; /* i: waiting for end of file name (gzip) */\n const COMMENT = 8; /* i: waiting for end of comment (gzip) */\n const HCRC = 9; /* i: waiting for header crc (gzip) */\n const DICTID = 10; /* i: waiting for dictionary check value */\n const DICT = 11; /* waiting for inflateSetDictionary() call */\n const TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n const TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\n const STORED = 14; /* i: waiting for stored size (length and complement) */\n const COPY_ = 15; /* i/o: same as COPY below, but only first time in */\n const COPY = 16; /* i/o: waiting for input or output to copy stored block */\n const TABLE = 17; /* i: waiting for dynamic block table lengths */\n const LENLENS = 18; /* i: waiting for code length code lengths */\n const CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\n const LEN_ = 20; /* i: same as LEN below, but only first time in */\n const LEN = 21; /* i: waiting for length/lit/eob code */\n const LENEXT = 22; /* i: waiting for length extra bits */\n const DIST = 23; /* i: waiting for distance code */\n const DISTEXT = 24; /* i: waiting for distance extra bits */\n const MATCH = 25; /* o: waiting for output space to copy string */\n const LIT = 26; /* o: waiting for output space to write literal */\n const CHECK = 27; /* i: waiting for 32-bit check value */\n const LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\n const DONE = 29; /* finished check, done -- remain here until reset */\n const BAD = 30; /* got a data error -- remain here until reset */\n const MEM = 31; /* got an inflate() memory error -- remain here until reset */\n const SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n /* ===========================================================================*/\n\n\n\n const ENOUGH_LENS = 852;\n const ENOUGH_DISTS = 592;\n //const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\n const MAX_WBITS = 15;\n /* 32K LZ77 window */\n const DEF_WBITS = MAX_WBITS;\n\n\n const zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n };\n\n\n function InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n }\n\n\n const inflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n };\n\n\n const inflateReset = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n };\n\n\n const inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n };\n\n\n const inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n };\n\n\n const inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n };\n\n\n /*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\n let virgin = true;\n\n let lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\n const fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n };\n\n\n /*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\n const updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n };\n\n\n const inflate$1 = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32_1(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n //#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n //#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inffast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n //#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n // (!) This block is disabled in zlib defaults,\n // don't enable it for binary compatibility\n //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n // Trace((stderr, \"inflate.c too far\\n\"));\n // copy -= state.whave;\n // if (copy > state.length) { copy = state.length; }\n // if (copy > left) { copy = left; }\n // left -= copy;\n // state.length -= copy;\n // do {\n // output[put++] = 0;\n // } while (--copy);\n // if (state.length === 0) { state.mode = LEN; }\n // break;\n //#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR$1;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n };\n\n\n const inflateEnd = (strm) => {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n };\n\n\n const inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n };\n\n\n const inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32_1(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR$1;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n };\n\n\n var inflateReset_1 = inflateReset;\n var inflateReset2_1 = inflateReset2;\n var inflateResetKeep_1 = inflateResetKeep;\n var inflateInit_1 = inflateInit;\n var inflateInit2_1 = inflateInit2;\n var inflate_2$1 = inflate$1;\n var inflateEnd_1 = inflateEnd;\n var inflateGetHeader_1 = inflateGetHeader;\n var inflateSetDictionary_1 = inflateSetDictionary;\n var inflateInfo = 'pako inflate (from Nodeca project)';\n\n /* Not implemented\n module.exports.inflateCopy = inflateCopy;\n module.exports.inflateGetDictionary = inflateGetDictionary;\n module.exports.inflateMark = inflateMark;\n module.exports.inflatePrime = inflatePrime;\n module.exports.inflateSync = inflateSync;\n module.exports.inflateSyncPoint = inflateSyncPoint;\n module.exports.inflateUndermine = inflateUndermine;\n */\n\n var inflate_1$1 = {\n \tinflateReset: inflateReset_1,\n \tinflateReset2: inflateReset2_1,\n \tinflateResetKeep: inflateResetKeep_1,\n \tinflateInit: inflateInit_1,\n \tinflateInit2: inflateInit2_1,\n \tinflate: inflate_2$1,\n \tinflateEnd: inflateEnd_1,\n \tinflateGetHeader: inflateGetHeader_1,\n \tinflateSetDictionary: inflateSetDictionary_1,\n \tinflateInfo: inflateInfo\n };\n\n const _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n };\n\n var assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n };\n\n\n // Join array of chunks to single array.\n var flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n };\n\n var common = {\n \tassign: assign,\n \tflattenChunks: flattenChunks\n };\n\n // String encode/decode helpers\n\n\n // Quick check if we can use fast array to bin string conversion\n //\n // - apply(Array) can fail on Android 2.2\n // - apply(Uint8Array) can fail on iOS 5.1 Safari\n //\n let STR_APPLY_UIA_OK = true;\n\n try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n // Table with utf8 lengths (calculated by first byte of sequence)\n // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n // because max possible codepoint is 0x10ffff\n const _utf8len = new Uint8Array(256);\n for (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n // convert string to array (typed, when possible)\n var string2buf = (str) => {\n if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n return new TextEncoder().encode(str);\n }\n\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n };\n\n // Helper\n const buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n };\n\n\n // convert array to string\n var buf2string = (buf, max) => {\n const len = max || buf.length;\n\n if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n return new TextDecoder().decode(buf.subarray(0, max));\n }\n\n let i, out;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n };\n\n\n // Calculate max possible position in utf8 buffer,\n // that will not break sequence. If that's not possible\n // - (very small limits) return max size as is.\n //\n // buf[] - utf8 bytes array\n // max - length limit (mandatory);\n var utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n };\n\n var strings = {\n \tstring2buf: string2buf,\n \tbuf2string: buf2string,\n \tutf8border: utf8border\n };\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n var messages = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n };\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n function ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n }\n\n var zstream = ZStream;\n\n // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n //\n // This software is provided 'as-is', without any express or implied\n // warranty. In no event will the authors be held liable for any damages\n // arising from the use of this software.\n //\n // Permission is granted to anyone to use this software for any purpose,\n // including commercial applications, and to alter it and redistribute it\n // freely, subject to the following restrictions:\n //\n // 1. The origin of this software must not be misrepresented; you must not\n // claim that you wrote the original software. If you use this software\n // in a product, an acknowledgment in the product documentation would be\n // appreciated but is not required.\n // 2. Altered source versions must be plainly marked as such, and must not be\n // misrepresented as being the original software.\n // 3. This notice may not be removed or altered from any source distribution.\n\n function GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n }\n\n var gzheader = GZheader;\n\n const toString = Object.prototype.toString;\n\n /* Public constants ==========================================================*/\n /* ===========================================================================*/\n\n const {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n } = constants$1;\n\n /* ===========================================================================*/\n\n\n /**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n /* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n /**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n /**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n /**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n /**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\n function Inflate(options) {\n this.options = common.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = inflate_1$1.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n\n this.header = new gzheader();\n\n inflate_1$1.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflate_1$1.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n }\n }\n }\n\n /**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n Inflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate_1$1.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = inflate_1$1.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = inflate_1$1.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n inflate_1$1.inflateReset(strm);\n status = inflate_1$1.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = inflate_1$1.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n };\n\n\n /**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n Inflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n };\n\n\n /**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n Inflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = common.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n };\n\n\n /**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err) {\n * console.log(err);\n * }\n * ```\n **/\n function inflate(input, options) {\n const inflator = new Inflate(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n return inflator.result;\n }\n\n\n /**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\n function inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n }\n\n\n /**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\n var Inflate_1 = Inflate;\n var inflate_2 = inflate;\n var inflateRaw_1 = inflateRaw;\n var ungzip = inflate;\n var constants = constants$1;\n\n var inflate_1 = {\n \tInflate: Inflate_1,\n \tinflate: inflate_2,\n \tinflateRaw: inflateRaw_1,\n \tungzip: ungzip,\n \tconstants: constants\n };\n\n exports.Inflate = Inflate_1;\n exports.constants = constants;\n exports['default'] = inflate_1;\n exports.inflate = inflate_2;\n exports.inflateRaw = inflateRaw_1;\n exports.ungzip = ungzip;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","'use strict';\n\n/**\n * https://bugs.webkit.org/show_bug.cgi?id=226547\n * Safari has a horrible bug where IDB requests can hang while the browser is starting up.\n * The only solution is to keep nudging it until it's awake.\n * This probably creates garbage, but garbage is better than totally failing.\n */\nfunction idbReady() {\n const isSafari = !navigator.userAgentData &&\n /Safari\\//.test(navigator.userAgent) &&\n !/Chrom(e|ium)\\//.test(navigator.userAgent);\n // No point putting other browsers or older versions of Safari through this mess.\n if (!isSafari || !indexedDB.databases)\n return Promise.resolve();\n let intervalId;\n return new Promise((resolve) => {\n const tryIdb = () => indexedDB.databases().finally(resolve);\n intervalId = setInterval(tryIdb, 100);\n tryIdb();\n }).finally(() => clearInterval(intervalId));\n}\n\nmodule.exports = idbReady;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["S","Uint8Array","Si","T1","Uint32Array","T2","T3","T4","T5","T6","T7","T8","getWords","key","length","i","buf","pos","str","charCodeAt","Error","xor","left","right","to","x2","x4","s","tEnc","tDec","d","t","x","xInv","computeTables","AES","_key","this","encKey","decKey","set","tmp","rcon","j","prototype","encrypt","_message","a2","b2","c2","message","out","a","b","c","rounds","k","decrypt","AES_IGE","iv","blockSize","cipher","text","cipherText","prevX","subarray","prevY","yXOR","y","AES_IGE$1","counter","offset","incrementCounter","carry","Object","defineProperty","exports","value","tslib_1","Semaphore_1","Mutex","cancelError","_semaphore","default","acquire","__awaiter","__generator","_b","label","sent","runExclusive","callback","isLocked","release","cancel","errors_1","Semaphore","_maxConcurrency","_cancelError","E_CANCELED","_queue","_value","_this","locked","ticketPromise","Promise","resolve","reject","push","_dispatch","_a","trys","_currentReleaser","releaser","undefined","forEach","ticket","nextTicket","shift","released","E_ALREADY_LOCKED","E_TIMEOUT","tryAcquire","withTimeout","Mutex_1","enumerable","get","withTimeout_1","tryAcquire_1","__exportStar","sync","alreadyAcquiredError","timeout","timeoutError","isTimeout","handle","e_1","setTimeout","Array","isArray","clearTimeout","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","arr","Arr","_byteLength","curByte","len","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","code","indexOf","start","end","num","output","BASE","MAX_INT","MAX_INT_ARR","smallToArray","DEFAULT_ALPHABET","supportsNativeBigInt","BigInt","Integer","v","radix","alphabet","caseSensitive","parseValue","parseBase","BigInteger","sign","isSmall","SmallInteger","NativeBigInt","isPrecise","n","Math","floor","arrayToSmall","trim","compareAbs","createArray","truncate","ceil","add","sum","l_a","l_b","r","base","addAny","addSmall","l","subtract","difference","a_l","b_l","borrow","subtractSmall","multiplyLong","product","a_i","multiplySmall","shiftLeft","concat","multiplyKaratsuba","max","slice","ac","bd","abcd","multiplySmallAndArray","square","divModSmall","lambda","q","remainder","divisor","quotient","divModAny","self","negate","abs","comparison","quotientDigit","result","divisorMostSignificantDigit","divMod1","guess","xlen","highx","highy","check","part","unshift","reverse","divMod2","qSign","mod","mSign","isBasicPrime","isUnit","equals","isEven","isDivisibleBy","lesser","millerRabinTest","nPrev","prev","divide","next","bigInt","modPow","create","plus","subtractAny","minus","small","multiply","l1","l2","times","_multiplyBySmall","divmod","over","pow","toString","_0","_1","_2","isNegative","exp","isZero","modInv","isPositive","isOdd","compare","Infinity","compareTo","eq","notEquals","neq","greater","gt","lt","greaterOrEquals","geq","lesserOrEquals","leq","isPrime","strict","bits","bitLength","logN","log","toJSNumber","isProbablePrime","iterations","rng","randBetween","lastT","lastR","zero","newT","one","newR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","bitwise","fn","xSign","ySign","xRem","not","yRem","xDigit","yDigit","xDivMod","yDivMod","String","shiftRight","remQuo","and","or","LOBMASK_I","roughLOB","integerLogarithm","p","e","min","gcd","toLowerCase","absBase","alphabetValues","digits","parseBaseFromArray","val","toBase","apply","map","valueOf","neg","Number","digit","toBaseString","stringify","parseStringValue","split","decimalPlace","test","parseNumberValue","toArray","toJSON","parseInt","minusOne","lcm","isInstance","usedRNG","random","low","range","restricted","top","fromArray","module","hasOwnProperty","base64","ieee754","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","obj","isBuffer","checked","numberIsNaN","type","data","fromObject","toPrimitive","assertSize","size","array","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","poolSize","fill","allocUnsafeSlow","_isBuffer","list","swap16","swap32","swap64","toLocaleString","inspect","replace","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","src","dst","table","i16","BufferBigIntNotDefined","naiveFallback","window","globalThis","__global__","_interopDefaultLegacy","safariFix__default","promisifyRequest","request","oncomplete","onsuccess","onabort","onerror","createStore","dbName","storeName","dbp","then","indexedDB","open","onupgradeneeded","createObjectStore","txMode","db","transaction","objectStore","defaultGetStoreFunc","defaultGetStore","eachCursor","customStore","store","openCursor","continue","clear","del","delete","entries","items","cursor","getMany","keys","all","put","setMany","entry","update","updater","err","values","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","isNaN","LN2","endianness","hostname","location","loadavg","uptime","freemem","MAX_VALUE","totalmem","cpus","navigator","appVersion","networkInterfaces","getNetworkInterfaces","arch","platform","tmpdir","tmpDir","EOL","homedir","adler32_1","adler","s1","s2","crcTable","makeTable","crc32_1","crc","inffast","strm","_in","_out","beg","dmax","wsize","whave","wnext","s_window","hold","lcode","dcode","lmask","dmask","here","op","dist","from_source","state","next_in","avail_in","next_out","avail_out","lencode","distcode","lenbits","distbits","dolen","mode","dodist","sane","MAXBITS","lbase","Uint16Array","lext","dbase","dext","inftrees","lens_index","codes","table_index","work","opts","incr","mask","root","curr","drop","used","huff","base_index","count","offs","here_bits","here_op","here_val","extra","extra_index","constants$1","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","Z_FINISH$1","Z_OK$1","Z_STREAM_END$1","Z_NEED_DICT$1","Z_STREAM_ERROR$1","Z_DATA_ERROR$1","Z_MEM_ERROR$1","TYPE","BAD","zswap32","InflateState","wrap","havedict","flags","total","head","wbits","ncode","nlen","ndist","have","lendyn","distdyn","back","was","inflateResetKeep","total_in","total_out","Int32Array","inflateReset","inflateReset2","windowBits","inflateInit2","lenfix","distfix","virgin","fixedtables","updatewindow","inflate_1$1","flush","last_bits","last_op","last_val","hbuf","order","inf_leave","done","time","xflags","os","extra_len","comment","hcrc","data_type","dictionary","dictLength","dictid","_has","common","sources","source","chunks","chunk","STR_APPLY_UIA_OK","__","_utf8len","strings","TextEncoder","encode","m_pos","str_len","buf_len","TextDecoder","decode","utf16buf","c_len","buf2binstring","messages","zstream","gzheader","Inflate","options","chunkSize","opt","raw","ended","status","header","inflate","inflator","flush_mode","_flush_mode","last_avail_out","onEnd","next_out_utf8","tail","utf8str","onData","Inflate_1","inflate_2","inflateRaw_1","ungzip","constants","inflate_1","inflateRaw","factory","userAgentData","userAgent","databases","intervalId","tryIdb","finally","setInterval","clearInterval","extendStatics","__proto__","__extends","__assign","assign","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","thisArg","_arguments","P","generator","fulfilled","step","rejected","body","f","g","_","ops","verb","iterator","pop","__createBinding","o","k2","__values","__read","ar","__spread","__spreadArrays","il","jl","__spreadArray","pack","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__setModuleDefault","__importStar","__esModule","__importDefault","__classPrivateFieldGet","receiver","kind","has","__classPrivateFieldSet","_globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","W3CWebSocket","uri","protocols","prop"],"sourceRoot":""}