mirror of
https://github.com/logos-messaging/lab.waku.org.git
synced 2026-01-09 01:03:07 +00:00
45 lines
46 KiB
JavaScript
45 lines
46 KiB
JavaScript
"use strict";
|
|
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
exports.id = "vendor-chunks/p-queue";
|
|
exports.ids = ["vendor-chunks/p-queue"];
|
|
exports.modules = {
|
|
|
|
/***/ "(ssr)/./node_modules/p-queue/dist/index.js":
|
|
/*!********************************************!*\
|
|
!*** ./node_modules/p-queue/dist/index.js ***!
|
|
\********************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PQueue)\n/* harmony export */ });\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! eventemitter3 */ \"(ssr)/./node_modules/eventemitter3/index.mjs\");\n/* harmony import */ var p_timeout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! p-timeout */ \"(ssr)/./node_modules/p-timeout/index.js\");\n/* harmony import */ var _priority_queue_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./priority-queue.js */ \"(ssr)/./node_modules/p-queue/dist/priority-queue.js\");\n\n\n\n/**\nPromise queue with concurrency control.\n*/ class PQueue extends eventemitter3__WEBPACK_IMPORTED_MODULE_0__.EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount;\n #intervalCap;\n #interval;\n #intervalEnd;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options){\n super();\n this.#intervalCount = 0;\n this.#intervalEnd = 0;\n this.#pending = 0;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: _priority_queue_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ...options\n };\n if (!(typeof options.intervalCap === \"number\" && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? \"\"}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? \"\"}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit(\"next\");\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n } else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(()=>{\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit(\"empty\");\n if (this.#pending === 0) {\n this.emit(\"idle\");\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit(\"active\");\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(()=>{\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */ #processQueue() {\n // eslint-disable-next-line no-empty\n while(this.#tryToStartAnother()){}\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === \"number\" && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject)=>{\n signal.addEventListener(\"abort\", ()=>{\n reject(signal.reason);\n }, {\n once: true\n });\n });\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options\n };\n return new Promise((resolve, reject)=>{\n this.#queue.enqueue(async ()=>{\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({\n signal: options.signal\n });\n if (options.timeout) {\n operation = (0,p_timeout__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Promise.resolve(operation), {\n milliseconds: options.timeout\n });\n }\n if (options.signal) {\n operation = Promise.race([\n operation,\n this.#throwOnAbort(options.signal)\n ]);\n }\n const result = await operation;\n resolve(result);\n this.emit(\"completed\", result);\n } catch (error) {\n if (error instanceof p_timeout__WEBPACK_IMPORTED_MODULE_1__.TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit(\"error\", error);\n } finally{\n this.#next();\n }\n }, options);\n this.emit(\"add\");\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_)=>this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */ start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */ pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */ clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */ async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent(\"empty\");\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */ async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent(\"next\", ()=>this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */ async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent(\"idle\");\n }\n async #onEvent(event, filter) {\n return new Promise((resolve)=>{\n const listener = ()=>{\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */ get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */ sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */ get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */ get isPaused() {\n return this.#isPaused;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcC1xdWV1ZS9kaXN0L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNkM7QUFDTTtBQUNIO0FBQ2hEOztBQUVBLEdBQ2UsTUFBTUksZUFBZUosdURBQVlBO0lBQzVDLENBQUNLLHlCQUF5QixDQUFDO0lBQzNCLENBQUNDLGlCQUFpQixDQUFDO0lBQ25CLENBQUNDLGFBQWEsQ0FBSztJQUNuQixDQUFDQyxXQUFXLENBQUM7SUFDYixDQUFDQyxRQUFRLENBQUM7SUFDVixDQUFDQyxXQUFXLENBQUs7SUFDakIsQ0FBQ0MsVUFBVSxDQUFDO0lBQ1osQ0FBQ0MsU0FBUyxDQUFDO0lBQ1gsQ0FBQ0MsS0FBSyxDQUFDO0lBQ1AsQ0FBQ0MsVUFBVSxDQUFDO0lBQ1osQ0FBQ0MsT0FBTyxDQUFLO0lBQ2Isb0ZBQW9GO0lBQ3BGLENBQUNDLFdBQVcsQ0FBQztJQUNiLENBQUNDLFFBQVEsQ0FBQztJQUNWLENBQUNDLGNBQWMsQ0FBQztJQU9oQiw2RkFBNkY7SUFDN0ZDLFlBQVlDLE9BQU8sQ0FBRTtRQUNqQixLQUFLO2FBckJULENBQUNiLGFBQWEsR0FBRzthQUdqQixDQUFDRyxXQUFXLEdBQUc7YUFLZixDQUFDSyxPQUFPLEdBQUc7UUFjUCx5RUFBeUU7UUFDekVLLFVBQVU7WUFDTmYsMkJBQTJCO1lBQzNCRyxhQUFhYSxPQUFPQyxpQkFBaUI7WUFDckNiLFVBQVU7WUFDVk8sYUFBYUssT0FBT0MsaUJBQWlCO1lBQ3JDQyxXQUFXO1lBQ1hULFlBQVlYLDBEQUFhQTtZQUN6QixHQUFHaUIsT0FBTztRQUNkO1FBQ0EsSUFBSSxDQUFFLFFBQU9BLFFBQVFaLFdBQVcsS0FBSyxZQUFZWSxRQUFRWixXQUFXLElBQUksSUFBSTtZQUN4RSxNQUFNLElBQUlnQixVQUFVLENBQUMsNkRBQTZELEVBQUVKLFFBQVFaLFdBQVcsRUFBRWlCLGNBQWMsR0FBRyxJQUFJLEVBQUUsT0FBT0wsUUFBUVosV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNqSztR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TyxDQUFDSSxLQUFLLEVBQUVDLE1BQU07UUFDeEIsT0FBTyxJQUFJN0IsUUFBUVEsQ0FBQUE7WUFDZixNQUFNc0IsV0FBVztnQkFDYixJQUFJRCxVQUFVLENBQUNBLFVBQVU7b0JBQ3JCO2dCQUNKO2dCQUNBLElBQUksQ0FBQ0UsR0FBRyxDQUFDSCxPQUFPRTtnQkFDaEJ0QjtZQUNKO1lBQ0EsSUFBSSxDQUFDd0IsRUFBRSxDQUFDSixPQUFPRTtRQUNuQjtJQUNKO0lBQ0E7O0lBRUEsR0FDQSxJQUFJeEMsT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLENBQUM3QixLQUFLLENBQUM2QixJQUFJO0lBQzNCO0lBQ0E7Ozs7SUFJQSxHQUNBMkMsT0FBT2pFLE9BQU8sRUFBRTtRQUNaLCtEQUErRDtRQUMvRCxPQUFPLElBQUksQ0FBQyxDQUFDUCxLQUFLLENBQUNvRSxNQUFNLENBQUM3RCxTQUFTa0UsTUFBTTtJQUM3QztJQUNBOztJQUVBLEdBQ0EsSUFBSXZFLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxDQUFDQSxPQUFPO0lBQ3hCO0lBQ0E7O0lBRUEsR0FDQSxJQUFJRSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsQ0FBQ0EsUUFBUTtJQUN6QjtBQUNKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZmx1c2gtbm90ZXMvLi9ub2RlX21vZHVsZXMvcC1xdWV1ZS9kaXN0L2luZGV4LmpzPzdkZWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRlbWl0dGVyMyc7XG5pbXBvcnQgcFRpbWVvdXQsIHsgVGltZW91dEVycm9yIH0gZnJvbSAncC10aW1lb3V0JztcbmltcG9ydCBQcmlvcml0eVF1ZXVlIGZyb20gJy4vcHJpb3JpdHktcXVldWUuanMnO1xuLyoqXG5Qcm9taXNlIHF1ZXVlIHdpdGggY29uY3VycmVuY3kgY29udHJvbC5cbiovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQUXVldWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAgICNjYXJyeW92ZXJDb25jdXJyZW5jeUNvdW50O1xuICAgICNpc0ludGVydmFsSWdub3JlZDtcbiAgICAjaW50ZXJ2YWxDb3VudCA9IDA7XG4gICAgI2ludGVydmFsQ2FwO1xuICAgICNpbnRlcnZhbDtcbiAgICAjaW50ZXJ2YWxFbmQgPSAwO1xuICAgICNpbnRlcnZhbElkO1xuICAgICN0aW1lb3V0SWQ7XG4gICAgI3F1ZXVlO1xuICAgICNxdWV1ZUNsYXNzO1xuICAgICNwZW5kaW5nID0gMDtcbiAgICAvLyBUaGUgYCFgIGlzIG5lZWRlZCBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzIxOTRcbiAgICAjY29uY3VycmVuY3k7XG4gICAgI2lzUGF1c2VkO1xuICAgICN0aHJvd09uVGltZW91dDtcbiAgICAvKipcbiAgICBQZXItb3BlcmF0aW9uIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiBPcGVyYXRpb25zIGZ1bGZpbGwgb25jZSBgdGltZW91dGAgZWxhcHNlcyBpZiB0aGV5IGhhdmVuJ3QgYWxyZWFkeS5cblxuICAgIEFwcGxpZXMgdG8gZWFjaCBmdXR1cmUgb3BlcmF0aW9uLlxuICAgICovXG4gICAgdGltZW91dDtcbiAgICAvLyBUT0RPOiBUaGUgYHRocm93T25UaW1lb3V0YCBvcHRpb24gc2hvdWxkIGFmZmVjdCB0aGUgcmV0dXJuIHR5cGVzIG9mIGBhZGQoKWAgYW5kIGBhZGRBbGwoKWBcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGNhcnJ5b3ZlckNvbmN1cnJlbmN5Q291bnQ6IGZhbHNlLFxuICAgICAgICAgICAgaW50ZXJ2YWxDYXA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICAgIGludGVydmFsOiAwLFxuICAgICAgICAgICAgY29uY3VycmVuY3k6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICAgIGF1dG9TdGFydDogdHJ1ZSxcbiAgICAgICAgICAgIHF1ZXVlQ2xhc3M6IFByaW9yaXR5UXVldWUsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoISh0eXBlb2Ygb3B0aW9ucy5pbnRlcnZhbENhcCA9PT0gJ251bWJlcicgJiYgb3B0aW9ucy5pbnRlcnZhbENhcCA+PSAxKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgXFxgaW50ZXJ2YWxDYXBcXGAgdG8gYmUgYSBudW1iZXIgZnJvbSAxIGFuZCB1cCwgZ290IFxcYCR7b3B0aW9ucy5pbnRlcnZhbENhcD8udG9TdHJpbmcoKSA/PyAnJ31cXGAgKCR7dHlwZW9mIG9wdGlvbnMuaW50ZXJ2YWxDYXB9KWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmludGVydmFsID09PSB1bmRlZmluZWQgfHwgIShOdW1iZXIuaXNGaW5pdGUob3B0aW9ucy5pbnRlcnZhbCkgJiYgb3B0aW9ucy5pbnRlcnZhbCA+PSAwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgXFxgaW50ZXJ2YWxcXGAgdG8gYmUgYSBmaW5pdGUgbnVtYmVyID49IDAsIGdvdCBcXGAke29wdGlvbnMuaW50ZXJ2YWw/LnRvU3RyaW5nKCkgPz8gJyd9XFxgICgke3R5cGVvZiBvcHRpb25zLmludGVydmFsfSlgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjYXJyeW92ZXJDb25jdXJyZW5jeUNvdW50ID0gb3B0aW9ucy5jYXJyeW92ZXJDb25jdXJyZW5jeUNvdW50O1xuICAgICAgICB0aGlzLiNpc0ludGVydmFsSWdub3JlZCA9IG9wdGlvbnMuaW50ZXJ2YWxDYXAgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSB8fCBvcHRpb25zLmludGVydmFsID09PSAwO1xuICAgICAgICB0aGlzLiNpbnRlcnZhbENhcCA9IG9wdGlvbnMuaW50ZXJ2YWxDYXA7XG4gICAgICAgIHRoaXMuI2ludGVydmFsID0gb3B0aW9ucy5pbnRlcnZhbDtcbiAgICAgICAgdGhpcy4jcXVldWUgPSBuZXcgb3B0aW9ucy5xdWV1ZUNsYXNzKCk7XG4gICAgICAgIHRoaXMuI3F1ZXVlQ2xhc3MgPSBvcHRpb25zLnF1ZXVlQ2xhc3M7XG4gICAgICAgIHRoaXMuY29uY3VycmVuY3kgPSBvcHRpb25zLmNvbmN1cnJlbmN5O1xuICAgICAgICB0aGlzLnRpbWVvdXQgPSBvcHRpb25zLnRpbWVvdXQ7XG4gICAgICAgIHRoaXMuI3Rocm93T25UaW1lb3V0ID0gb3B0aW9ucy50aHJvd09uVGltZW91dCA9PT0gdHJ1ZTtcbiAgICAgICAgdGhpcy4jaXNQYXVzZWQgPSBvcHRpb25zLmF1dG9TdGFydCA9PT0gZmFsc2U7XG4gICAgfVxuICAgIGdldCAjZG9lc0ludGVydmFsQWxsb3dBbm90aGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jaXNJbnRlcnZhbElnbm9yZWQgfHwgdGhpcy4jaW50ZXJ2YWxDb3VudCA8IHRoaXMuI2ludGVydmFsQ2FwO1xuICAgIH1cbiAgICBnZXQgI2RvZXNDb25jdXJyZW50QWxsb3dBbm90aGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jcGVuZGluZyA8IHRoaXMuI2NvbmN1cnJlbmN5O1xuICAgIH1cbiAgICAjbmV4dCgpIHtcbiAgICAgICAgdGhpcy4jcGVuZGluZy0tO1xuICAgICAgICB0aGlzLiN0cnlUb1N0YXJ0QW5vdGhlcigpO1xuICAgICAgICB0aGlzLmVtaXQoJ25leHQnKTtcbiAgICB9XG4gICAgI29uUmVzdW1lSW50ZXJ2YWwoKSB7XG4gICAgICAgIHRoaXMuI29uSW50ZXJ2YWwoKTtcbiAgICAgICAgdGhpcy4jaW5pdGlhbGl6ZUludGVydmFsSWZOZWVkZWQoKTtcbiAgICAgICAgdGhpcy4jdGltZW91dElkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXQgI2lzSW50ZXJ2YWxQYXVzZWQoKSB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGlmICh0aGlzLiNpbnRlcnZhbElkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlbGF5ID0gdGhpcy4jaW50ZXJ2YWxFbmQgLSBub3c7XG4gICAgICAgICAgICBpZiAoZGVsYXkgPCAwKSB7XG4gICAgICAgICAgICAgICAgLy8gQWN0IGFzIHRoZSBpbnRlcnZhbCB3YXMgZG9uZVxuICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gcmVzdW1lIGl0IGhlcmUgYmVjYXVzZSBpdCB3aWxsIGJlIHJlc3VtZWQgb24gbGluZSAxNjBcbiAgICAgICAgICAgICAgICB0aGlzLiNpbnRlcnZhbENvdW50ID0gKHRoaXMuI2NhcnJ5b3ZlckNvbmN1cnJlbmN5Q291bnQpID8gdGhpcy4jcGVuZGluZyA6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBBY3QgYXMgdGhlIGludGVydmFsIGlzIHBlbmRpbmdcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4jdGltZW91dElkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNvblJlc3VtZUludGVydmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGRlbGF5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAjdHJ5VG9TdGFydEFub3RoZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLiNxdWV1ZS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAvLyBXZSBjYW4gY2xlYXIgdGhlIGludGVydmFsIChcInBhdXNlXCIpXG4gICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGNhbiByZWRvIGl0IGxhdGVyIChcInJlc3VtZVwiKVxuICAgICAgICAgICAgaWYgKHRoaXMuI2ludGVydmFsSWQpIHtcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuI2ludGVydmFsSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy4jaW50ZXJ2YWxJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnZW1wdHknKTtcbiAgICAgICAgICAgIGlmICh0aGlzLiNwZW5kaW5nID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdpZGxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLiNpc1BhdXNlZCkge1xuICAgICAgICAgICAgY29uc3QgY2FuSW5pdGlhbGl6ZUludGVydmFsID0gIXRoaXMuI2lzSW50ZXJ2YWxQYXVzZWQ7XG4gICAgICAgICAgICBpZiAodGhpcy4jZG9lc0ludGVydmFsQWxsb3dBbm90aGVyICYmIHRoaXMuI2RvZXNDb25jdXJyZW50QWxsb3dBbm90aGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgam9iID0gdGhpcy4jcXVldWUuZGVxdWV1ZSgpO1xuICAgICAgICAgICAgICAgIGlmICgham9iKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICBqb2IoKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FuSW5pdGlhbGl6ZUludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2luaXRpYWxpemVJbnRlcnZhbElmTmVlZGVkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgI2luaXRpYWxpemVJbnRlcnZhbElmTmVlZGVkKCkge1xuICAgICAgICBpZiAodGhpcy4jaXNJbnRlcnZhbElnbm9yZWQgfHwgdGhpcy4jaW50ZXJ2YWxJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI29uSW50ZXJ2YWwoKTtcbiAgICAgICAgfSwgdGhpcy4jaW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLiNpbnRlcnZhbEVuZCA9IERhdGUubm93KCkgKyB0aGlzLiNpbnRlcnZhbDtcbiAgICB9XG4gICAgI29uSW50ZXJ2YWwoKSB7XG4gICAgICAgIGlmICh0aGlzLiNpbnRlcnZhbENvdW50ID09PSAwICYmIHRoaXMuI3BlbmRpbmcgPT09IDAgJiYgdGhpcy4jaW50ZXJ2YWxJZCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLiNpbnRlcnZhbElkKTtcbiAgICAgICAgICAgIHRoaXMuI2ludGVydmFsSWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jaW50ZXJ2YWxDb3VudCA9IHRoaXMuI2NhcnJ5b3ZlckNvbmN1cnJlbmN5Q291bnQgPyB0aGlzLiNwZW5kaW5nIDogMDtcbiAgICAgICAgdGhpcy4jcHJvY2Vzc1F1ZXVlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgIEV4ZWN1dGVzIGFsbCBxdWV1ZWQgZnVuY3Rpb25zIHVudGlsIGl0IHJlYWNoZXMgdGhlIGxpbWl0LlxuICAgICovXG4gICAgI3Byb2Nlc3NRdWV1ZSgpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gICAgICAgIHdoaWxlICh0aGlzLiN0cnlUb1N0YXJ0QW5vdGhlcigpKSB7IH1cbiAgICB9XG4gICAgZ2V0IGNvbmN1cnJlbmN5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jY29uY3VycmVuY3k7XG4gICAgfVxuICAgIHNldCBjb25jdXJyZW5jeShuZXdDb25jdXJyZW5jeSkge1xuICAgICAgICBpZiAoISh0eXBlb2YgbmV3Q29uY3VycmVuY3kgPT09ICdudW1iZXInICYmIG5ld0NvbmN1cnJlbmN5ID49IDEpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBcXGBjb25jdXJyZW5jeVxcYCB0byBiZSBhIG51bWJlciBmcm9tIDEgYW5kIHVwLCBnb3QgXFxgJHtuZXdDb25jdXJyZW5jeX1cXGAgKCR7dHlwZW9mIG5ld0NvbmN1cnJlbmN5fSlgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjb25jdXJyZW5jeSA9IG5ld0NvbmN1cnJlbmN5O1xuICAgICAgICB0aGlzLiNwcm9jZXNzUXVldWUoKTtcbiAgICB9XG4gICAgYXN5bmMgI3Rocm93T25BYm9ydChzaWduYWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfcmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHNpZ25hbC5yZWFzb24pO1xuICAgICAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgYWRkKGZ1bmN0aW9uXywgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICAgICAgICB0aHJvd09uVGltZW91dDogdGhpcy4jdGhyb3dPblRpbWVvdXQsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jcXVldWUuZW5xdWV1ZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy4jcGVuZGluZysrO1xuICAgICAgICAgICAgICAgIHRoaXMuI2ludGVydmFsQ291bnQrKztcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9wZXJhdGlvbiA9IGZ1bmN0aW9uXyh7IHNpZ25hbDogb3B0aW9ucy5zaWduYWwgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IHBUaW1lb3V0KFByb21pc2UucmVzb2x2ZShvcGVyYXRpb24pLCB7IG1pbGxpc2Vjb25kczogb3B0aW9ucy50aW1lb3V0IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gUHJvbWlzZS5yYWNlKFtvcGVyYXRpb24sIHRoaXMuI3Rocm93T25BYm9ydChvcHRpb25zLnNpZ25hbCldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvcGVyYXRpb247XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdjb21wbGV0ZWQnLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgVGltZW91dEVycm9yICYmICFvcHRpb25zLnRocm93T25UaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI25leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnYWRkJyk7XG4gICAgICAgICAgICB0aGlzLiN0cnlUb1N0YXJ0QW5vdGhlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgYWRkQWxsKGZ1bmN0aW9ucywgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZnVuY3Rpb25zLm1hcChhc3luYyAoZnVuY3Rpb25fKSA9PiB0aGlzLmFkZChmdW5jdGlvbl8sIG9wdGlvbnMpKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIFN0YXJ0IChvciByZXN1bWUpIGV4ZWN1dGluZyBlbnF1ZXVlZCB0YXNrcyB3aXRoaW4gY29uY3VycmVuY3kgbGltaXQuIE5vIG5lZWQgdG8gY2FsbCB0aGlzIGlmIHF1ZXVlIGlzIG5vdCBwYXVzZWQgKHZpYSBgb3B0aW9ucy5hdXRvU3RhcnQgPSBmYWxzZWAgb3IgYnkgYC5wYXVzZSgpYCBtZXRob2QuKVxuICAgICovXG4gICAgc3RhcnQoKSB7XG4gICAgICAgIGlmICghdGhpcy4jaXNQYXVzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2lzUGF1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuI3Byb2Nlc3NRdWV1ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgUHV0IHF1ZXVlIGV4ZWN1dGlvbiBvbiBob2xkLlxuICAgICovXG4gICAgcGF1c2UoKSB7XG4gICAgICAgIHRoaXMuI2lzUGF1c2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ2xlYXIgdGhlIHF1ZXVlLlxuICAgICovXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuI3F1ZXVlID0gbmV3IHRoaXMuI3F1ZXVlQ2xhc3MoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4gVXNlZnVsIGlmIHlvdSBmb3IgZXhhbXBsZSBhZGQgYWRkaXRpb25hbCBpdGVtcyBhdCBhIGxhdGVyIHRpbWUuXG5cbiAgICBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBzZXR0bGVzIHdoZW4gdGhlIHF1ZXVlIGJlY29tZXMgZW1wdHkuXG4gICAgKi9cbiAgICBhc3luYyBvbkVtcHR5KCkge1xuICAgICAgICAvLyBJbnN0YW50bHkgcmVzb2x2ZSBpZiB0aGUgcXVldWUgaXMgZW1wdHlcbiAgICAgICAgaWYgKHRoaXMuI3F1ZXVlLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLiNvbkV2ZW50KCdlbXB0eScpO1xuICAgIH1cbiAgICAvKipcbiAgICBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBzZXR0bGVzIHdoZW4gdGhlIHF1ZXVlIHNpemUgaXMgbGVzcyB0aGFuIHRoZSBnaXZlbiBsaW1pdDogYHF1ZXVlLnNpemUgPCBsaW1pdGAuXG5cbiAgICBJZiB5b3Ugd2FudCB0byBhdm9pZCBoYXZpbmcgdGhlIHF1ZXVlIGdyb3cgYmV5b25kIGEgY2VydGFpbiBzaXplIHlvdSBjYW4gYGF3YWl0IHF1ZXVlLm9uU2l6ZUxlc3NUaGFuKClgIGJlZm9yZSBhZGRpbmcgYSBuZXcgaXRlbS5cblxuICAgIE5vdGUgdGhhdCB0aGlzIG9ubHkgbGltaXRzIHRoZSBudW1iZXIgb2YgaXRlbXMgd2FpdGluZyB0byBzdGFydC4gVGhlcmUgY291bGQgc3RpbGwgYmUgdXAgdG8gYGNvbmN1cnJlbmN5YCBqb2JzIGFscmVhZHkgcnVubmluZyB0aGF0IHRoaXMgY2FsbCBkb2VzIG5vdCBpbmNsdWRlIGluIGl0cyBjYWxjdWxhdGlvbi5cbiAgICAqL1xuICAgIGFzeW5jIG9uU2l6ZUxlc3NUaGFuKGxpbWl0KSB7XG4gICAgICAgIC8vIEluc3RhbnRseSByZXNvbHZlIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS5cbiAgICAgICAgaWYgKHRoaXMuI3F1ZXVlLnNpemUgPCBsaW1pdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuI29uRXZlbnQoJ25leHQnLCAoKSA9PiB0aGlzLiNxdWV1ZS5zaXplIDwgbGltaXQpO1xuICAgIH1cbiAgICAvKipcbiAgICBUaGUgZGlmZmVyZW5jZSB3aXRoIGAub25FbXB0eWAgaXMgdGhhdCBgLm9uSWRsZWAgZ3VhcmFudGVlcyB0aGF0IGFsbCB3b3JrIGZyb20gdGhlIHF1ZXVlIGhhcyBmaW5pc2hlZC4gYC5vbkVtcHR5YCBtZXJlbHkgc2lnbmFscyB0aGF0IHRoZSBxdWV1ZSBpcyBlbXB0eSwgYnV0IGl0IGNvdWxkIG1lYW4gdGhhdCBzb21lIHByb21pc2VzIGhhdmVuJ3QgY29tcGxldGVkIHlldC5cblxuICAgIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHNldHRsZXMgd2hlbiB0aGUgcXVldWUgYmVjb21lcyBlbXB0eSwgYW5kIGFsbCBwcm9taXNlcyBoYXZlIGNvbXBsZXRlZDsgYHF1ZXVlLnNpemUgPT09IDAgJiYgcXVldWUucGVuZGluZyA9PT0gMGAuXG4gICAgKi9cbiAgICBhc3luYyBvbklkbGUoKSB7XG4gICAgICAgIC8vIEluc3RhbnRseSByZXNvbHZlIGlmIG5vbmUgcGVuZGluZyBhbmQgaWYgbm90aGluZyBlbHNlIGlzIHF1ZXVlZFxuICAgICAgICBpZiAodGhpcy4jcGVuZGluZyA9PT0gMCAmJiB0aGlzLiNxdWV1ZS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy4jb25FdmVudCgnaWRsZScpO1xuICAgIH1cbiAgICBhc3luYyAjb25FdmVudChldmVudCwgZmlsdGVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vZmYoZXZlbnQsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vbihldmVudCwgbGlzdGVuZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgU2l6ZSBvZiB0aGUgcXVldWUsIHRoZSBudW1iZXIgb2YgcXVldWVkIGl0ZW1zIHdhaXRpbmcgdG8gcnVuLlxuICAgICovXG4gICAgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNxdWV1ZS5zaXplO1xuICAgIH1cbiAgICAvKipcbiAgICBTaXplIG9mIHRoZSBxdWV1ZSwgZmlsdGVyZWQgYnkgdGhlIGdpdmVuIG9wdGlvbnMuXG5cbiAgICBGb3IgZXhhbXBsZSwgdGhpcyBjYW4gYmUgdXNlZCB0byBmaW5kIHRoZSBudW1iZXIgb2YgaXRlbXMgcmVtYWluaW5nIGluIHRoZSBxdWV1ZSB3aXRoIGEgc3BlY2lmaWMgcHJpb3JpdHkgbGV2ZWwuXG4gICAgKi9cbiAgICBzaXplQnkob3B0aW9ucykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby1hcnJheS1jYWxsYmFjay1yZWZlcmVuY2VcbiAgICAgICAgcmV0dXJuIHRoaXMuI3F1ZXVlLmZpbHRlcihvcHRpb25zKS5sZW5ndGg7XG4gICAgfVxuICAgIC8qKlxuICAgIE51bWJlciBvZiBydW5uaW5nIGl0ZW1zIChubyBsb25nZXIgaW4gdGhlIHF1ZXVlKS5cbiAgICAqL1xuICAgIGdldCBwZW5kaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jcGVuZGluZztcbiAgICB9XG4gICAgLyoqXG4gICAgV2hldGhlciB0aGUgcXVldWUgaXMgY3VycmVudGx5IHBhdXNlZC5cbiAgICAqL1xuICAgIGdldCBpc1BhdXNlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2lzUGF1c2VkO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJwVGltZW91dCIsIlRpbWVvdXRFcnJvciIsIlByaW9yaXR5UXVldWUiLCJQUXVldWUiLCJjYXJyeW92ZXJDb25jdXJyZW5jeUNvdW50IiwiaXNJbnRlcnZhbElnbm9yZWQiLCJpbnRlcnZhbENvdW50IiwiaW50ZXJ2YWxDYXAiLCJpbnRlcnZhbCIsImludGVydmFsRW5kIiwiaW50ZXJ2YWxJZCIsInRpbWVvdXRJZCIsInF1ZXVlIiwicXVldWVDbGFzcyIsInBlbmRpbmciLCJjb25jdXJyZW5jeSIsImlzUGF1c2VkIiwidGhyb3dPblRpbWVvdXQiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJOdW1iZXIiLCJQT1NJVElWRV9JTkZJTklUWSIsImF1dG9TdGFydCIsIlR5cGVFcnJvciIsInRvU3RyaW5nIiwidW5kZWZpbmVkIiwiaXNGaW5pdGUiLCJ0aW1lb3V0IiwiZG9lc0ludGVydmFsQWxsb3dBbm90aGVyIiwiZG9lc0NvbmN1cnJlbnRBbGxvd0Fub3RoZXIiLCJuZXh0IiwidHJ5VG9TdGFydEFub3RoZXIiLCJlbWl0Iiwib25SZXN1bWVJbnRlcnZhbCIsIm9uSW50ZXJ2YWwiLCJpbml0aWFsaXplSW50ZXJ2YWxJZk5lZWRlZCIsImlzSW50ZXJ2YWxQYXVzZWQiLCJub3ciLCJEYXRlIiwiZGVsYXkiLCJzZXRUaW1lb3V0Iiwic2l6ZSIsImNsZWFySW50ZXJ2YWwiLCJjYW5Jbml0aWFsaXplSW50ZXJ2YWwiLCJqb2IiLCJkZXF1ZXVlIiwic2V0SW50ZXJ2YWwiLCJwcm9jZXNzUXVldWUiLCJuZXdDb25jdXJyZW5jeSIsInRocm93T25BYm9ydCIsInNpZ25hbCIsIlByb21pc2UiLCJfcmVzb2x2ZSIsInJlamVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZWFzb24iLCJvbmNlIiwiYWRkIiwiZnVuY3Rpb25fIiwicmVzb2x2ZSIsImVucXVldWUiLCJ0aHJvd0lmQWJvcnRlZCIsIm9wZXJhdGlvbiIsIm1pbGxpc2Vjb25kcyIsInJhY2UiLCJyZXN1bHQiLCJlcnJvciIsImFkZEFsbCIsImZ1bmN0aW9ucyIsImFsbCIsIm1hcCIsInN0YXJ0IiwicGF1c2UiLCJjbGVhciIsIm9uRW1wdHkiLCJvbkV2ZW50Iiwib25TaXplTGVzc1RoYW4iLCJsaW1pdCIsIm9uSWRsZSIsImV2ZW50IiwiZmlsdGVyIiwibGlzdGVuZXIiLCJvZmYiLCJvbiIsInNpemVCeSIsImxlbmd0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/p-queue/dist/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/p-queue/dist/lower-bound.js":
|
|
/*!**************************************************!*\
|
|
!*** ./node_modules/p-queue/dist/lower-bound.js ***!
|
|
\**************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lowerBound)\n/* harmony export */ });\n// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nfunction lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while(count > 0){\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n } else {\n count = step;\n }\n }\n return first;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcC1xdWV1ZS9kaXN0L2xvd2VyLWJvdW5kLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtRkFBbUY7QUFDbkYsdUVBQXVFO0FBQ3hELFNBQVNBLFdBQVdDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxVQUFVO0lBQ3ZELElBQUlDLFFBQVE7SUFDWixJQUFJQyxRQUFRSixNQUFNSyxNQUFNO0lBQ3hCLE1BQU9ELFFBQVEsRUFBRztRQUNkLE1BQU1FLE9BQU9DLEtBQUtDLEtBQUssQ0FBQ0osUUFBUTtRQUNoQyxJQUFJSyxLQUFLTixRQUFRRztRQUNqQixJQUFJSixXQUFXRixLQUFLLENBQUNTLEdBQUcsRUFBRVIsVUFBVSxHQUFHO1lBQ25DRSxRQUFRLEVBQUVNO1lBQ1ZMLFNBQVNFLE9BQU87UUFDcEIsT0FDSztZQUNERixRQUFRRTtRQUNaO0lBQ0o7SUFDQSxPQUFPSDtBQUNYIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZmx1c2gtbm90ZXMvLi9ub2RlX21vZHVsZXMvcC1xdWV1ZS9kaXN0L2xvd2VyLWJvdW5kLmpzPzQ3ZWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydCBvZiBsb3dlcl9ib3VuZCBmcm9tIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9hbGdvcml0aG0vbG93ZXJfYm91bmRcbi8vIFVzZWQgdG8gY29tcHV0ZSBpbnNlcnRpb24gaW5kZXggdG8ga2VlcCBxdWV1ZSBzb3J0ZWQgYWZ0ZXIgaW5zZXJ0aW9uXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb3dlckJvdW5kKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICAgIGxldCBmaXJzdCA9IDA7XG4gICAgbGV0IGNvdW50ID0gYXJyYXkubGVuZ3RoO1xuICAgIHdoaWxlIChjb3VudCA+IDApIHtcbiAgICAgICAgY29uc3Qgc3RlcCA9IE1hdGgudHJ1bmMoY291bnQgLyAyKTtcbiAgICAgICAgbGV0IGl0ID0gZmlyc3QgKyBzdGVwO1xuICAgICAgICBpZiAoY29tcGFyYXRvcihhcnJheVtpdF0sIHZhbHVlKSA8PSAwKSB7XG4gICAgICAgICAgICBmaXJzdCA9ICsraXQ7XG4gICAgICAgICAgICBjb3VudCAtPSBzdGVwICsgMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvdW50ID0gc3RlcDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlyc3Q7XG59XG4iXSwibmFtZXMiOlsibG93ZXJCb3VuZCIsImFycmF5IiwidmFsdWUiLCJjb21wYXJhdG9yIiwiZmlyc3QiLCJjb3VudCIsImxlbmd0aCIsInN0ZXAiLCJNYXRoIiwidHJ1bmMiLCJpdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/p-queue/dist/lower-bound.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/p-queue/dist/priority-queue.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/p-queue/dist/priority-queue.js ***!
|
|
\*****************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PriorityQueue)\n/* harmony export */ });\n/* harmony import */ var _lower_bound_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lower-bound.js */ \"(ssr)/./node_modules/p-queue/dist/lower-bound.js\");\n\nclass PriorityQueue {\n #queue;\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options\n };\n const element = {\n priority: options.priority,\n run\n };\n if (this.size && this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = (0,_lower_bound_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this.#queue, element, (a, b)=>b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element)=>element.priority === options.priority).map((element)=>element.run);\n }\n get size() {\n return this.#queue.length;\n }\n constructor(){\n this.#queue = [];\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcC1xdWV1ZS9kaXN0L3ByaW9yaXR5LXF1ZXVlLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTBDO0FBQzNCLE1BQU1DO0lBQ2pCLENBQUNDLEtBQUssQ0FBTTtJQUNaQyxRQUFRQyxHQUFHLEVBQUVDLE9BQU8sRUFBRTtRQUNsQkEsVUFBVTtZQUNOQyxVQUFVO1lBQ1YsR0FBR0QsT0FBTztRQUNkO1FBQ0EsTUFBTUUsVUFBVTtZQUNaRCxVQUFVRCxRQUFRQyxRQUFRO1lBQzFCRjtRQUNKO1FBQ0EsSUFBSSxJQUFJLENBQUNJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQ00sSUFBSSxHQUFHLEVBQUUsQ0FBQ0YsUUFBUSxJQUFJRCxRQUFRQyxRQUFRLEVBQUU7WUFDdEUsSUFBSSxDQUFDLENBQUNKLEtBQUssQ0FBQ08sSUFBSSxDQUFDRjtZQUNqQjtRQUNKO1FBQ0EsTUFBTUcsUUFBUVYsMkRBQVVBLENBQUMsSUFBSSxDQUFDLENBQUNFLEtBQUssRUFBRUssU0FBUyxDQUFDSSxHQUFHQyxJQUFNQSxFQUFFTixRQUFRLEdBQUdLLEVBQUVMLFFBQVE7UUFDaEYsSUFBSSxDQUFDLENBQUNKLEtBQUssQ0FBQ1csTUFBTSxDQUFDSCxPQUFPLEdBQUdIO0lBQ2pDO0lBQ0FPLFVBQVU7UUFDTixNQUFNQyxPQUFPLElBQUksQ0FBQyxDQUFDYixLQUFLLENBQUNjLEtBQUs7UUFDOUIsT0FBT0QsTUFBTVg7SUFDakI7SUFDQWEsT0FBT1osT0FBTyxFQUFFO1FBQ1osT0FBTyxJQUFJLENBQUMsQ0FBQ0gsS0FBSyxDQUFDZSxNQUFNLENBQUMsQ0FBQ1YsVUFBWUEsUUFBUUQsUUFBUSxLQUFLRCxRQUFRQyxRQUFRLEVBQUVZLEdBQUcsQ0FBQyxDQUFDWCxVQUFZQSxRQUFRSCxHQUFHO0lBQzlHO0lBQ0EsSUFBSUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLENBQUNOLEtBQUssQ0FBQ2lCLE1BQU07SUFDN0I7O2FBMUJBLENBQUNqQixLQUFLLEdBQUcsRUFBRTs7QUEyQmYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9wLXF1ZXVlL2Rpc3QvcHJpb3JpdHktcXVldWUuanM/YTc3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG93ZXJCb3VuZCBmcm9tICcuL2xvd2VyLWJvdW5kLmpzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByaW9yaXR5UXVldWUge1xuICAgICNxdWV1ZSA9IFtdO1xuICAgIGVucXVldWUocnVuLCBvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBwcmlvcml0eTogMCxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB7XG4gICAgICAgICAgICBwcmlvcml0eTogb3B0aW9ucy5wcmlvcml0eSxcbiAgICAgICAgICAgIHJ1bixcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuc2l6ZSAmJiB0aGlzLiNxdWV1ZVt0aGlzLnNpemUgLSAxXS5wcmlvcml0eSA+PSBvcHRpb25zLnByaW9yaXR5KSB7XG4gICAgICAgICAgICB0aGlzLiNxdWV1ZS5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gbG93ZXJCb3VuZCh0aGlzLiNxdWV1ZSwgZWxlbWVudCwgKGEsIGIpID0+IGIucHJpb3JpdHkgLSBhLnByaW9yaXR5KTtcbiAgICAgICAgdGhpcy4jcXVldWUuc3BsaWNlKGluZGV4LCAwLCBlbGVtZW50KTtcbiAgICB9XG4gICAgZGVxdWV1ZSgpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuI3F1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIHJldHVybiBpdGVtPy5ydW47XG4gICAgfVxuICAgIGZpbHRlcihvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNxdWV1ZS5maWx0ZXIoKGVsZW1lbnQpID0+IGVsZW1lbnQucHJpb3JpdHkgPT09IG9wdGlvbnMucHJpb3JpdHkpLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC5ydW4pO1xuICAgIH1cbiAgICBnZXQgc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3F1ZXVlLmxlbmd0aDtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsibG93ZXJCb3VuZCIsIlByaW9yaXR5UXVldWUiLCJxdWV1ZSIsImVucXVldWUiLCJydW4iLCJvcHRpb25zIiwicHJpb3JpdHkiLCJlbGVtZW50Iiwic2l6ZSIsInB1c2giLCJpbmRleCIsImEiLCJiIiwic3BsaWNlIiwiZGVxdWV1ZSIsIml0ZW0iLCJzaGlmdCIsImZpbHRlciIsIm1hcCIsImxlbmd0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/p-queue/dist/priority-queue.js\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |