{"version":3,"file":"vendors-640e94a9.xxxxxxxx.bundle.js","mappings":"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","sources":["webpack://iadviser/./node_modules/base64-js/index.js","webpack://iadviser/./node_modules/broadcast-channel/dist/es/util.js","webpack://iadviser/./node_modules/broadcast-channel/dist/es/methods/native.js","webpack://iadviser/./node_modules/broadcast-channel/dist/es/options.js","webpack://iadviser/./node_modules/broadcast-channel/dist/es/methods/indexed-db.js","webpack://iadviser/./node_modules/broadcast-channel/dist/es/methods/localstorage.js","webpack://iadviser/./node_modules/broadcast-channel/dist/es/methods/simulate.js","webpack://iadviser/./node_modules/broadcast-channel/dist/es/method-chooser.js","webpack://iadviser/./node_modules/broadcast-channel/dist/es/broadcast-channel.js","webpack://iadviser/./node_modules/buffer/index.js"],"sourcesContent":["'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","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n if (obj && typeof obj.then === 'function') {\n return true;\n } else {\n return false;\n }\n}\nexport function sleep(time) {\n if (!time) time = 0;\n return new Promise(function (res) {\n return setTimeout(res, time);\n });\n}\nexport function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n/**\n * https://stackoverflow.com/a/8084248\n */\n\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\n\nexport function microSeconds() {\n var ms = new Date().getTime();\n\n if (ms === lastMs) {\n additional++;\n return ms * 1000 + additional;\n } else {\n lastMs = ms;\n additional = 0;\n return ms * 1000;\n }\n}\n/**\n * copied from the 'detect-node' npm module\n * We cannot use the module directly because it causes problems with rollup\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\n\nexport var isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';","import { microSeconds as micro, isNode } from '../util';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n var state = {\n messagesCallback: null,\n bc: new BroadcastChannel(channelName),\n subFns: [] // subscriberFunctions\n\n };\n\n state.bc.onmessage = function (msg) {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data);\n }\n };\n\n return state;\n}\nexport function close(channelState) {\n channelState.bc.close();\n channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n try {\n channelState.bc.postMessage(messageJson, false);\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n /**\n * in the electron-renderer, isNode will be true even if we are in browser-context\n * so we also check if window is undefined\n */\n if (isNode && typeof window === 'undefined') return false;\n\n if (typeof BroadcastChannel === 'function') {\n if (BroadcastChannel._pubkey) {\n throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n }\n\n return true;\n } else return false;\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions)); // main\n\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true; // indexed-db\n\n if (!options.idb) options.idb = {}; // after this time the messages get deleted\n\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150; // handles abrupt db onclose events.\n\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose; // localstorage\n\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60; // custom methods\n\n if (originalOptions.methods) options.methods = originalOptions.methods; // node\n\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n\n if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n */\nimport { sleep, randomInt, randomToken, microSeconds as micro, isNode } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n\n if (typeof window !== 'undefined') {\n if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n }\n\n return false;\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb(); // create table\n\n var dbName = DB_PREFIX + channelName;\n var openRequest = IndexedDB.open(dbName, 1);\n\n openRequest.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n db.createObjectStore(OBJECT_STORE_ID, {\n keyPath: 'id',\n autoIncrement: true\n });\n };\n\n var dbPromise = new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n return dbPromise;\n}\n/**\n * writes the new message to the database\n * so other readers can find it\n */\n\nexport function writeMessage(db, readerUuid, messageJson) {\n var time = new Date().getTime();\n var writeObject = {\n uuid: readerUuid,\n time: time,\n data: messageJson\n };\n var transaction = db.transaction([OBJECT_STORE_ID], 'readwrite');\n return new Promise(function (res, rej) {\n transaction.oncomplete = function () {\n return res();\n };\n\n transaction.onerror = function (ev) {\n return rej(ev);\n };\n\n var objectStore = transaction.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n });\n}\nexport function getAllMessages(db) {\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n ret.push(cursor.value); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n\n function openCursor() {\n // Occasionally Safari will fail on IDBKeyRange.bound, this\n // catches that error, having it open the cursor to the first\n // item. When it gets data it will advance to the desired key.\n try {\n var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return objectStore.openCursor(keyRangeValue);\n } catch (e) {\n return objectStore.openCursor();\n }\n }\n\n return new Promise(function (res) {\n openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n if (cursor.value.id < lastCursorId + 1) {\n cursor[\"continue\"](lastCursorId + 1);\n } else {\n ret.push(cursor.value);\n cursor[\"continue\"]();\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function removeMessageById(db, id) {\n var request = db.transaction([OBJECT_STORE_ID], 'readwrite').objectStore(OBJECT_STORE_ID)[\"delete\"](id);\n return new Promise(function (res) {\n request.onsuccess = function () {\n return res();\n };\n });\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = new Date().getTime() - ttl;\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n var msgObk = cursor.value;\n\n if (msgObk.time < olderThen) {\n ret.push(msgObk); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n res(ret);\n return;\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(db, ttl) {\n return getOldMessages(db, ttl).then(function (tooOld) {\n return Promise.all(tooOld.map(function (msgObj) {\n return removeMessageById(db, msgObj.id);\n }));\n });\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n return createDatabase(channelName).then(function (db) {\n var state = {\n closed: false,\n lastCursorId: 0,\n channelName: channelName,\n options: options,\n uuid: randomToken(),\n\n /**\n * emittedMessagesIds\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n eMIs: new ObliviousSet(options.idb.ttl * 2),\n // ensures we do not read messages in parrallel\n writeBlockPromise: Promise.resolve(),\n messagesCallback: null,\n readQueuePromises: [],\n db: db\n };\n /**\n * Handle abrupt closes that do not originate from db.close().\n * This could happen, for example, if the underlying storage is\n * removed or if the user clears the database in the browser's\n * history preferences.\n */\n\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\n };\n /**\n * if service-workers are used,\n * we have no 'storage'-event if they post a message,\n * therefore we also have to set an interval\n */\n\n\n _readLoop(state);\n\n return state;\n });\n}\n\nfunction _readLoop(state) {\n if (state.closed) return;\n readNewMessages(state).then(function () {\n return sleep(state.options.idb.fallbackInterval);\n }).then(function () {\n return _readLoop(state);\n });\n}\n\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n\n return true;\n}\n/**\n * reads all new messages from the database and emits them\n */\n\n\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return Promise.resolve(); // if no one is listening, we do not need to scan for new messages\n\n if (!state.messagesCallback) return Promise.resolve();\n return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n var useMessages = newerMessages\n /**\n * there is a bug in iOS where the msgObj can be undefined some times\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */\n .filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\n\n return msgObj;\n }).filter(function (msgObj) {\n return _filterMessage(msgObj, state);\n }).sort(function (msgObjA, msgObjB) {\n return msgObjA.time - msgObjB.time;\n }); // sort by time\n\n useMessages.forEach(function (msgObj) {\n if (state.messagesCallback) {\n state.eMIs.add(msgObj.id);\n state.messagesCallback(msgObj.data);\n }\n });\n return Promise.resolve();\n });\n}\n\nexport function close(channelState) {\n channelState.closed = true;\n channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n return writeMessage(channelState.db, channelState.uuid, messageJson);\n }).then(function () {\n if (randomInt(0, 10) === 0) {\n /* await (do not await) */\n cleanOldMessages(channelState.db, channelState.options.idb.ttl);\n }\n });\n return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n readNewMessages(channelState);\n}\nexport function canBeUsed() {\n if (isNode) return false;\n var idb = getIdb();\n if (!idb) return false;\n return true;\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside of webworkers because they have no access to locastorage\n * This is basically implemented to support IE9 or your grandmothers toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options';\nimport { sleep, randomToken, microSeconds as micro, isNode } from '../util';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\n\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {// New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\n\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n sleep().then(function () {\n var key = storageKey(channelState.channelName);\n var writeObj = {\n token: randomToken(),\n time: new Date().getTime(),\n data: messageJson,\n uuid: channelState.uuid\n };\n var value = JSON.stringify(writeObj);\n getLocalStorage().setItem(key, value);\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n\n var ev = document.createEvent('Event');\n ev.initEvent('storage', true, true);\n ev.key = key;\n ev.newValue = value;\n window.dispatchEvent(ev);\n res();\n });\n });\n}\nexport function addStorageEventListener(channelName, fn) {\n var key = storageKey(channelName);\n\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\n };\n\n window.addEventListener('storage', listener);\n return listener;\n}\nexport function removeStorageEventListener(listener) {\n window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n\n var uuid = randomToken();\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n\n var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n var state = {\n channelName: channelName,\n uuid: uuid,\n eMIs: eMIs // emittedMessagesIds\n\n };\n state.listener = addStorageEventListener(channelName, function (msgObj) {\n if (!state.messagesCallback) return; // no listener\n\n if (msgObj.uuid === uuid) return; // own message\n\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n eMIs.add(msgObj.token);\n state.messagesCallback(msgObj.data);\n });\n return state;\n}\nexport function close(channelState) {\n removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n if (isNode) return false;\n var ls = getLocalStorage();\n if (!ls) return false;\n\n try {\n var key = '__broadcastchannel_check';\n ls.setItem(key, 'works');\n ls.removeItem(key);\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n return false;\n }\n\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n\n return defaultTime;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n var state = {\n name: channelName,\n messagesCallback: null\n };\n SIMULATE_CHANNELS.add(state);\n return state;\n}\nexport function close(channelState) {\n SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n return setTimeout(function () {\n var channelArray = Array.from(SIMULATE_CHANNELS);\n channelArray.filter(function (channel) {\n return channel.name === channelState.name;\n }).filter(function (channel) {\n return channel !== channelState;\n }).filter(function (channel) {\n return !!channel.messagesCallback;\n }).forEach(function (channel) {\n return channel.messagesCallback(messageJson);\n });\n res();\n }, 5);\n });\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n return true;\n}\nexport function averageResponseTime() {\n return 5;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import NativeMethod from './methods/native.js';\nimport IndexeDbMethod from './methods/indexed-db.js';\nimport LocalstorageMethod from './methods/localstorage.js';\nimport SimulateMethod from './methods/simulate.js';\nimport { isNode } from './util'; // order is important\n\nvar METHODS = [NativeMethod, // fastest\nIndexeDbMethod, LocalstorageMethod];\n/**\n * The NodeMethod is loaded lazy\n * so it will not get bundled in browser-builds\n */\n\nif (isNode) {\n /**\n * we use the non-transpiled code for nodejs\n * because it runs faster\n */\n var NodeMethod = require('../../src/methods/' + // use this hack so that browserify and others\n // do not import the node-method by default\n // when bundling.\n 'node.js');\n /**\n * this will be false for webpackbuilds\n * which will shim the node-method with an empty object {}\n */\n\n\n if (typeof NodeMethod.canBeUsed === 'function') {\n METHODS.push(NodeMethod);\n }\n}\n\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean); // directly chosen\n\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\n\n var ret = chooseMethods.find(function (m) {\n return m.type === options.type;\n });\n if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n }\n /**\n * if no webworker support is needed,\n * remove idb from the list so that localstorage is been chosen\n */\n\n\n if (!options.webWorkerSupport && !isNode) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) throw new Error('No useable methode found:' + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));else return useMethod;\n}","import { isPromise } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n this.name = name;\n\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options); // isListening\n\n this._iL = false;\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n\n this._onML = null;\n /**\n * _addEventListeners\n */\n\n this._addEL = {\n message: [],\n internal: []\n };\n /**\n * Unsend message promises\n * where the sending is still in progress\n * @type {Set}\n */\n\n this._uMP = new Set();\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n\n this._befC = [];\n /**\n * _preparePromise\n */\n\n this._prepP = null;\n\n _prepareChannel(this);\n}; // STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\n\nBroadcastChannel._pubkey = true;\n/**\n * clears the tmp-folder if is node\n * @return {Promise} true if has run, false if not node\n */\n\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n\n if (method.type === 'node') {\n return method.clearNodeFolder().then(function () {\n return true;\n });\n } else {\n return Promise.resolve(false);\n }\n}\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\n\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n} // PROTOTYPE\n\nBroadcastChannel.prototype = {\n postMessage: function postMessage(msg) {\n if (this.closed) {\n throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed');\n }\n\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _removeListenerObject(this, 'message', this._onML);\n\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\n },\n\n addEventListener: function addEventListener(type, fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _addListenerObject(this, type, listenObj);\n },\n removeEventListener: function removeEventListener(type, fn) {\n var obj = this._addEL[type].find(function (obj) {\n return obj.fn === fn;\n });\n\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n var awaitPrepare = this._prepP ? this._prepP : Promise.resolve();\n this._onML = null;\n this._addEL.message = [];\n return awaitPrepare // wait until all current sending are processed\n .then(function () {\n return Promise.all(Array.from(_this._uMP));\n }) // run before-close hooks\n .then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n }) // close the channel\n .then(function () {\n return _this.method.close(_this._state);\n });\n },\n\n get type() {\n return this.method.type;\n },\n\n get isClosed() {\n return this.closed;\n }\n\n};\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\n\nfunction _post(broadcastChannel, type, msg) {\n var time = broadcastChannel.method.microSeconds();\n var msgObj = {\n time: time,\n type: type,\n data: msg\n };\n var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : Promise.resolve();\n return awaitPrepare.then(function () {\n var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj); // add/remove to unsend messages list\n\n broadcastChannel._uMP.add(sendPromise);\n\n sendPromise[\"catch\"]().then(function () {\n return broadcastChannel._uMP[\"delete\"](sendPromise);\n });\n return sendPromise;\n });\n}\n\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n\n /*if (channel.options.prepareDelay) {\n await new Promise(res => setTimeout(res, this.options.prepareDelay));\n }*/\n channel._state = s;\n });\n } else {\n channel._state = maybePromise;\n }\n}\n\nfunction _hasMessageListeners(channel) {\n if (channel._addEL.message.length > 0) return true;\n if (channel._addEL.internal.length > 0) return true;\n return false;\n}\n\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n\n _startListening(channel);\n}\n\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n\n _stopListening(channel);\n}\n\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n var listenerFn = function listenerFn(msgObj) {\n channel._addEL[msgObj.type].forEach(function (obj) {\n if (msgObj.time >= obj.time) {\n obj.fn(msgObj.data);\n }\n });\n };\n\n var time = channel.method.microSeconds();\n\n if (channel._prepP) {\n channel._prepP.then(function () {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n });\n } else {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n }\n }\n}\n\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // noone is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\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"],"names":["exports","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","length","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","Error","indexOf","tripletToBase64","num","start","end","output","sleep","time","Promise","res","setTimeout","randomToken","Math","random","toString","substring","lastMs","additional","microSeconds","ms","Date","getTime","isNode","Object","prototype","call","process","create","channelName","state","messagesCallback","bc","BroadcastChannel","subFns","onmessage","msg","data","close","channelState","onMessage","fn","postMessage","messageJson","resolve","err","reject","canBeUsed","window","_pubkey","type","averageResponseTime","fillOptionsWithDefaults","originalOptions","arguments","undefined","options","JSON","parse","stringify","webWorkerSupport","idb","ttl","fallbackInterval","onclose","localstorage","removeTimeout","methods","node","useFastPath","OBJECT_STORE_ID","getIdb","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","_readLoop","closed","readNewMessages","then","db","lastCursorId","objectStore","transaction","ret","keyRangeValue","IDBKeyRange","bound","Infinity","openCursor","e","onsuccess","ev","cursor","target","result","value","id","newerMessages","useMessages","filter","msgObj","map","uuid","eMIs","has","messagesCallbackTime","_filterMessage","sort","msgObjA","msgObjB","forEach","add","dbName","openRequest","open","onupgradeneeded","createObjectStore","keyPath","autoIncrement","rej","onerror","createDatabase","writeBlockPromise","readQueuePromises","readerUuid","writeObject","oncomplete","writeMessage","floor","olderThen","msgObk","getOldMessages","tooOld","all","request","removeMessageById","getLocalStorage","localStorage","storageKey","ls","key","setItem","removeItem","listener","newValue","token","addEventListener","addStorageEventListener","removeEventListener","writeObj","document","createEvent","initEvent","dispatchEvent","userAgent","navigator","toLowerCase","includes","defaultTime","SIMULATE_CHANNELS","Set","name","from","channel","METHODS","NodeMethod","maybePromise","obj","this","method","chooseMethods","concat","Boolean","find","m","useMethod","chooseMethod","_iL","_onML","_addEL","message","internal","_uMP","_befC","_prepP","s","_state","_post","broadcastChannel","sendPromise","_hasMessageListeners","_addListenerObject","listenerFn","_startListening","_removeListenerObject","o","_stopListening","postInternal","listenObj","_this","awaitPrepare","isClosed","base64","ieee754","customInspectSymbol","Symbol","Buffer","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","string","encoding","isEncoding","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","isBuffer","checked","numberIsNaN","isArray","fromObject","toPrimitive","assertSize","size","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","c","hi","lo","utf16leToBytes","min","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","pow","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","stack","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","received","isInteger","abs","INVALID_BASE64_RE","leadSurrogate","split","base64clean","src","dst","alphabet","table","i16","BufferBigIntNotDefined"],"sourceRoot":""}